<?php
/*
* test_distribution.php
*
* Script to test the distribution class.
*
* @(#) $Id: test_distribution.php,v 1.1 2020/02/14 07:55:37 mlemos Exp $
*
*/
require("distribution.php");
$file_list = 'test';
$archive_file_name = 'distribution.tar.gz';
$php_command = 'php';
$distribution = new distribution_class;
$action = ((IsSet($_SERVER['argv']) && IsSet($_SERVER['argv'][1])) ? $_SERVER['argv'][1] : '');
switch($action)
{
case 'distribution':
case '';
$file_list_name=tempnam('','DistributionFileList');
if(!($file_list = fopen($file_list_name, 'w')))
exit('could not open the distribution temporary file list'."\n");
$error = $distribution->DumpFileList("./", $file_list, true);
fclose($file_list);
if(strlen($error))
exit($error."\n");
Exec('tar -hcT '.$file_list_name.' | gzip >'.$archive_file_name, $output, $result);
unlink($file_list_name);
if($result)
exit('could not make the distribution archive file'."\n");
break;
case 'check':
if(strlen($error = $distribution->ListFiles('./', $file_list, true)))
exit($error."\n");
$missing = $invalid = array();
foreach($file_list as $file_name)
{
if(!file_exists($file_name))
$missing[] = $file_name;
elseif(preg_match('/\\.php$/', $file_name))
{
$output = array();
Exec($php_command.' -l '.$file_name, $output, $result);
if($result)
$invalid[$file_name] = implode("\n", $output);
}
}
break;
default:
exit($action.' is not a supported distribution action'."\n");
}
switch($action)
{
case 'distribution':
case '':
echo 'Distribution archive file ', $archive_file_name, ' build ok: ', filesize($archive_file_name), ' bytes.', "\n";
break;
case 'check':
echo 'Total files: ', count($file_list), ' Missing: ', count($missing), ' Invalid: ', count($invalid), "\n";
if(count($missing))
{
echo 'Missing files:', "\n";
foreach($missing as $missing)
echo $missing, "\n";
}
if(count($invalid))
{
echo 'Invalid files:', "\n";
foreach($invalid as $file_name => $error)
echo $file_name, "\n", $error, "\n";
}
break;
}
?>
|