diff options
author | Marcus Boerger <helly@php.net> | 2007-05-10 19:42:20 +0000 |
---|---|---|
committer | Marcus Boerger <helly@php.net> | 2007-05-10 19:42:20 +0000 |
commit | 9e83deccceaa3c90cc4249d4dfd92592cbc991eb (patch) | |
tree | 53a2f337e5e98b767317dd0e6eb901a1595aa817 | |
parent | 764b33ef798304cc8e291c72a5b296e79af9f489 (diff) | |
download | php-git-9e83deccceaa3c90cc4249d4dfd92592cbc991eb.tar.gz |
- Extend help command
-rw-r--r-- | ext/phar/phar.php | 160 |
1 files changed, 111 insertions, 49 deletions
diff --git a/ext/phar/phar.php b/ext/phar/phar.php index cdce95b4fa..0acdbce95d 100644 --- a/ext/phar/phar.php +++ b/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.'), ); } |