Browse Source

- Extend help command

PHAR_1_2
Marcus Boerger 19 years ago
parent
commit
9e83deccce
  1. 160
      ext/phar/phar.php

160
ext/phar/phar.php

@ -117,7 +117,7 @@ if (!class_exists('CLICommand'))
if (isset($this->types[$type]['typ']))
{
$this->args[$arg]['val'] = call_user_func(array($this, $this->types[$type]['typ']), $argv[$i]);
$this->args[$arg]['val'] = call_user_func(array($this, $this->types[$type]['typ']), $argv[$i], $this->args[$arg]);
}
else
{
@ -215,6 +215,21 @@ if (!class_exists('CLICommand'))
return self::getSubFuncs($cmdclass, 'cli_arg_', array('typ'));
}
static function cli_arg_typ_bool($arg)
{
return (bool)$arg;
}
static function cli_arg_typ_select($arg, $cfg)
{
if (!in_array($arg, array_keys($cfg['select'])))
{
echo "Parameter value '$arg' not one of '" . join("', '", array_keys($cfg['select'])) . "'.\n";
exit(1);
}
return $arg;
}
static function cli_arg_typ_file($arg)
{
if (!file_exists($arg))
@ -229,11 +244,84 @@ if (!class_exists('CLICommand'))
{
return file_get_contents(self::cli_arg_typ_file($arg));
}
function cli_get_SP2($l1, $l2, $arg_inf)
{
return str_repeat(' ', $l1 + 2 + 8);
}
static function cli_cmd_inf_help()
{
return "This help.";
}
function cli_cmd_run_help()
{
$argv = $this->argv;
echo <<<EOF
$argv[0] <command> [options]
Commands:
EOF;
$l = 0;
foreach($this->cmds as $name => $funcs)
{
$l = max($l, strlen($name));
}
$sp = str_repeat(' ', $l+2);
foreach($this->cmds as $name => $funcs)
{
$inf = sprintf("%${l}s ", $name);
if (isset($funcs['inf']))
{
$inf .= call_user_func(array($this, $funcs['inf'])) . "\n";
if (isset($funcs['arg']))
{
$inf .= "\n";
foreach(call_user_func(array($this, $funcs['arg'])) as $arg => $conf)
{
if (strlen($arg))
{
$arg = "-$arg ";
}
else
{
$arg = "... ";
}
$inf .= $sp . $arg . $conf['inf'] . "\n";
if ($conf['type'] == 'select')
{
$l2 = 0;
foreach($conf['select'] as $opt => $what)
{
$l2 = max($l2, strlen($opt));
}
$sp2 = $this->cli_get_SP2($l, $l2, $inf);
foreach($conf['select'] as $opt => $what)
{
$inf .= $sp2 . sprintf("%-${l2}s ", $opt) . $what . "\n";
}
}
}
}
}
echo "$inf\n\n";
}
exit(0);
}
}
}
class PharCommand extends CLICommand
{
function cli_get_SP2($l1, $l2, $arg_inf)
{
return str_repeat(' ', $l1 + 2 + 17);
}
static function cli_arg_typ_pharfile($arg)
{
try
@ -276,46 +364,6 @@ class PharCommand extends CLICommand
}
}
static function cli_cmd_inf_help()
{
return "This help.";
}
function cli_cmd_run_help()
{
$argv = $this->argv;
echo <<<EOF
$argv[0] command [options]
General options:
-f <file> Specifies the phar file to work on.
-a <alias> Specifies the phar alias.
-r <regex> Specifies a regular expression for input files.
Commands:
EOF;
$l = 0;
foreach($this->cmds as $name => $funcs)
{
$l = max($l, strlen($name));
}
foreach($this->cmds as $name => $funcs)
{
if (isset($funcs['inf']))
{
$inf = call_user_func(array($this, $funcs['inf']));
}
else
{
$inf = "";
}
printf("%${l}s %s\n\n", $name, $inf);
}
exit(0);
}
static function cli_cmd_inf_pack()
{
return "Pack files into a PHAR archive.";
@ -324,11 +372,12 @@ EOF;
static function cli_cmd_arg_pack()
{
return array(
'f' => array('type'=>'pharnew', 'val'=>NULL, 'required'=>1),
'a' => array('type'=>'alias', 'val'=>'newphar', 'required'=>1),
's' => array('type'=>'file', 'val'=>NULL),
'r' => array('type'=>'regex', 'val'=>NULL),
'' => array('type'=>'any', 'val'=>NULL, 'required'=>1),
'f' => array('type'=>'pharnew', 'val'=>NULL, 'required'=>1, 'inf'=>'<file> Specifies the phar file to work on.'),
'a' => array('type'=>'alias', 'val'=>'newphar', 'required'=>1, 'inf'=>'<alias> Provide an alias name for the phar file.'),
's' => array('type'=>'file', 'val'=>NULL, 'inf'=>'<stub> Select the stub file (excluded from list of input files/dirs).'),
'r' => array('type'=>'regex', 'val'=>NULL, 'inf'=>'<regex> Specifies a regular expression for input files.'),
'c' => array('type'=>'select', 'val'=>NULL, 'inf'=>'<algo> Compression algorithmus.', 'select'=>array('gz'=>'GZip compression','gzip'=>'GZip compression','bzip2'=>'BZip2 compression','bz'=>'BZip2 compression','bz2'=>'BZip2 compression','0'=>'No compression','none'=>'No compression')),
'' => array('type'=>'any', 'val'=>NULL, 'required'=>1, 'inf'=>' Any number of input files and directories.'),
);
}
@ -373,8 +422,21 @@ EOF;
}
}
$phar->compressAllFilesBZIP2();
$phar->stopBuffering();
switch($this->args['c']['val'])
{
case 'gz':
case 'gzip':
$phar->compressAllFilesGZ();
break;
case 'bz2':
case 'bzip2':
$phar->compressAllFilesBZIP2();
break;
default:
break;
}
exit(0);
}
@ -416,7 +478,7 @@ EOF;
static function cli_cmd_arg_list()
{
return array(
'f' => array('type'=>'pharurl', 'val'=>NULL, 'required'=>1),
'f' => array('type'=>'pharurl', 'val'=>NULL, 'required'=>1, 'inf'=>'<file> Specifies the phar file to work on.'),
);
}
@ -436,7 +498,7 @@ EOF;
static function cli_cmd_arg_tree()
{
return array(
'f' => array('type'=>'pharurl', 'val'=>NULL, 'required'=>1),
'f' => array('type'=>'pharurl', 'val'=>NULL, 'required'=>1, 'inf'=>'<file> Specifies the phar file to work on.'),
);
}

Loading…
Cancel
Save