From: Stig Bakken Date: Wed, 30 Jan 2002 12:20:12 +0000 (+0000) Subject: * modularize "pear" and "pear-get" commands somewhat. checking options X-Git-Tag: PRE_ISSET_PATCH~48 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=615f110d4ec22cc73d99369ade395ef55849ce79;p=php * modularize "pear" and "pear-get" commands somewhat. checking options etc. is done for both in pearcmd-common.php. --- diff --git a/pear/Makefile.in b/pear/Makefile.in index 80b7a0cbe8..ffc0b2c7b7 100644 --- a/pear/Makefile.in +++ b/pear/Makefile.in @@ -83,6 +83,17 @@ PEAR_FILES = \ System.php \ XML/Parser.php +PEAR_COMMAND_LIBS=\ + pearcmd-common.php \ + pearcmd-help.php \ + pearcmd-info.php \ + pearcmd-install.php \ + pearcmd-list.php \ + pearcmd-package.php \ + pearcmd-remote-list.php \ + pearcmd-show-config.php \ + pearcmd-uninstall.php + install-data-local: @if $(mkinstalldirs) $(INSTALL_ROOT)$(peardir); then \ for i in $(PEAR_SUBDIRS); do \ @@ -131,6 +142,10 @@ install-programs: for prog in phpextdist; do \ echo "Installing program: $$prog"; \ $(INSTALL) -m 755 $(srcdir)/scripts/$$prog $(INSTALL_ROOT)$(bindir)/$$prog; \ + done; \ + for lib in $(PEAR_COMMAND_LIBS); do \ + echo "Installing program library: $$lib"; \ + $(INSTALL) -m 755 $(srcdir)/scripts/$$lib $(INSTALL_ROOT)$(bindir)/$$lib; \ done HEADER_DIRS = \ diff --git a/pear/scripts/pear-get.in b/pear/scripts/pear-get.in index 49cd284003..5ff308de03 100644 --- a/pear/scripts/pear-get.in +++ b/pear/scripts/pear-get.in @@ -19,313 +19,40 @@ // +----------------------------------------------------------------------+ // - -/* - -command structure: - -* list available packages -* list not-installed packages -* list upgrades -* list packages (by author/category/state) - -* installation commands: -** install latest stable -** install specific release - -* package generation commands: - -*/ - require_once 'PEAR.php'; -require_once 'PEAR/Common.php'; -require_once 'PEAR/Config.php'; require_once 'PEAR/Remote.php'; -require_once 'PEAR/Registry.php'; -require_once 'Console/Getopt.php'; error_reporting(E_ALL & ~E_NOTICE); -$argv = Console_Getopt::readPHPArgv(); -if (PEAR::isError($argv)) { - die($argv->getMessage()); -} -$options = Console_Getopt::getopt($argv, "c:C:d:D:h?sSqu:v"); -if (PEAR::isError($options)) { - usage($options); -} - -PEAR::setErrorHandling(PEAR_ERROR_PRINT, "pear: %s\n"); - -if (OS_WINDOWS) { - $pear_default_config = PHP_SYSCONFDIR.DIRECTORY_SEPARATOR.'pearsys.ini'; - $pear_user_config = PHP_SYSCONFDIR.DIRECTORY_SEPARATOR.'pear.ini'; -} else { - $pear_default_config = PHP_SYSCONFDIR.DIRECTORY_SEPARATOR.'pear.conf'; - $pear_user_config = getenv('HOME').DIRECTORY_SEPARATOR.'.pearrc'; -} - -$opts = $options[0]; - -foreach ($opts as $opt) { - switch ($opt[0]) { - case 'c': - $pear_user_config = $opt[1]; - break; - case 'C': - $pear_default_config = $opt[1]; - break; - } -} - -$config = new PEAR_Config($pear_user_config, $pear_default_config); -$verbose = 1; - -foreach ($opts as $opt) { - $param = $opt[1]; - switch ($opt[0]) { - case 'd': - list($key, $value) = explode('=', $param); - $config->set($key, $value); - break; - case 'D': - list($key, $value) = explode('=', $param); - $config->set($key, $value, true); - break; - case 'u': - $config->toDefault($param); - break; - case 'v': - $verbose++; - break; - case 'q': - $verbose--; - break; - } -} - -$fallback_config = array( - 'master_server' => 'pear.php.net', - 'php_dir' => PEAR_INSTALL_DIR, - 'ext_dir' => PEAR_EXTENSION_DIR, - 'doc_dir' => '', - 'verbose' => true, +$subcommands = array( + 'help' => 'help [command]', + 'install' => 'install [-r] ', + 'upgrade' => 'upgrade [-r] ', + 'list' => 'list', + 'info' => 'info ', ); -$fallback_done = array(); - -foreach ($fallback_config as $key => $value) { - if (!$config->isDefined($key)) { - $config->set($key, $value); - $fallback_done[$key] = true; - } -} - -//$verbose = $config->get("verbose"); -$script_dir = $config->get("php_dir"); -$ext_dir = $config->get("ext_dir"); -$doc_dir = $config->get("doc_dir"); -$command = (isset($options[1][1])) ? $options[1][1] : null; -$rest = array_slice($options[1], 2); +$shortcuts = array( + 'list' => 'remote-list', + 'upgrade' => 'install', +); $command_options = array( - "install" => "fr", - "uninstall" => "fr", - "upgrade" => "fr", + 'install' => 'fr', ); -if (isset($command_options[$command])) { - $tmp = Console_Getopt::getopt($rest, $command_options[$command]); - if (PEAR::isError($tmp)) { - usage($tmp); - } - $cmdopts = $tmp[0]; - $cmdargs = $tmp[1]; -} else { - $cmdopts = array(); - $cmdargs = $rest; -} - -// }}} - -switch ($command) { - - // {{{ install, upgrade - - case 'install': case 'upgrade': { - include_once 'PEAR/Installer.php'; - $pkgfile = $cmdargs[0]; - $installer =& new PEAR_Installer($script_dir, $ext_dir, $doc_dir); - $installer->setErrorHandling(PEAR_ERROR_DIE, - basename($pkgfile) . ": %s\n"); - $installer->debug = $verbose; - $install_options = array(); - if ($command == 'upgrade') { - $install_options['upgrade'] = true; - } - foreach ($cmdopts as $opt) { - switch ($opt[0]) { - case 'r': - // This option is for use by rpm and other package - // tools that can install files etc. by itself, but - // still needs to register the package as installed in - // PEAR's local registry. - $install_options['register_only'] = true; - break; - case 'f': - $install_options['force'] = true; - break; - } - } - if ($installer->install($pkgfile, $install_options, $config)) { - print "install ok\n"; - } else { - print "install failed\n"; - } - break; - } - - // }}} - // {{{ uninstall - case 'uninstall': { - include_once 'PEAR/Installer.php'; - $pkgfile = $cmdargs[0]; - $installer =& new PEAR_Installer($script_dir, $ext_dir, $doc_dir); - $installer->setErrorHandling(PEAR_ERROR_DIE, - basename($pkgfile) . ": %s\n"); - $installer->debug = $verbose; - $uninstall_options = array(); - foreach ($cmdopts as $opt) { - switch ($opt[0]) { - case 'r': - $uninstall_options['register_only'] = true; - break; - case 'f': - $uninstall_options['force'] = true; - break; - } - } - if ($installer->uninstall($pkgfile, $uninstall_options)) { - print "uninstall ok\n"; - } else { - print "uninstall failed\n"; - } - break; - } - // }}} - // {{{ list - - case 'list': { - $remote = new PEAR_Remote($config); - $result = $remote->call('package.listAll'); - $i = $j = 0; - heading("Available packages"); - foreach ($result as $package => $info) { - if ($i++ % 20 == 0) { - if ($j++ > 0) { - print "\n"; - } - printf("%-20s %-10s %-15s %s\n", - "Package", "Stable", "Lead", "Category"); - print str_repeat("-", 75)."\n"; - } - if (empty($info['stable'])) { - $info['stable'] = '(none)'; - } - $stable = (string)$info['stable']; - printf("%-20s %-10s %-15s %s\n", $package, - $info['stable'], $info['lead'], $info['category']); - } - break; - } +include "pearcmd-common.php"; - // }}} - default: { - if (!$store_default_config && !$store_user_config) { - usage(); - } - break; - } -} - -// {{{ usage() - -function usage($error = null) -{ - $stderr = fopen('php://stderr', 'w'); - if (PEAR::isError($error)) { - fputs($stderr, $error->getMessage()); - } elseif ($error !== null) { - fputs($stderr, $error); - } - fputs($stderr, - "Usage: pear-get [options] command [command-options] \n". - "Options:\n". - " -v increase verbosity level (default 1)\n". - " -q be quiet, decrease verbosity level\n". - " -c file find user configuration in `file'\n". - " -C file find system configuration in `file'\n". - " -d foo=bar set user config variable `foo' to `bar'\n". - " -D foo=bar set system config variable `foo' to `bar'\n". - " -u foo unset `foo' in the user configuration\n". - " -h, -? display help/usage (this message)\n". - "Commands:\n". - " help [command]\n". - " install [-r] \n". - " uninstall [-r] \n". - " list\n". - " info\n". - "\n"); - fclose($stderr); - exit; -} - -// }}} -// {{{ present_array() - -function present_array(&$arr, $keys = null) -{ - if ($keys === null) { - $keys = array_keys($arr); - } - $longest_key = max(array_map("strlen", array_keys($arr))) + 2; - $format_string = "%{$longest_key}s : %s\n"; - foreach ($keys as $k) { - if (is_array($arr[$k])) { - foreach ($arr[$k] as $i => $value) { - $x = "$k #$i"; - $cont = array(); - foreach(array_keys($value) as $val) { - $cont[] = "$val=" . $value[$val]; - } - $v = implode(", ", $cont); - printf($format_string, $x, $v); - } - continue; - } else { - $v = $arr[$k]; - printf($format_string, $k, $v); - } - } +if (isset($shortcuts[$command])) { + $realcommand = $shortcuts[$command]; +} else { + $realcommand = $command; } -// }}} -// {{{ heading() - -function heading($text) -{ - $l = strlen(trim($text)); - print rtrim($text) . "\n" . str_repeat("=", $l) . "\n"; +if (isset($subcommands[$command])) { + include "pearcmd-$realcommand.php"; +} elseif (!$store_default_config && !$store_user_config) { + usage(); } -// }}} - -/* - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * indent-tabs-mode: nil - * End: - */ - ?> diff --git a/pear/scripts/pear.in b/pear/scripts/pear.in index 0791419b3b..d7bb854b53 100644 --- a/pear/scripts/pear.in +++ b/pear/scripts/pear.in @@ -19,420 +19,34 @@ // +----------------------------------------------------------------------+ // - -/* - -command structure: - -* remote queries: -** list available packages -** list not-installed packages -** list upgrades - -** list packages (by author/category/state) - -* operations on package files: - -* installation commands: - -* package generation commands: - - - - */ require_once 'PEAR.php'; require_once 'PEAR/Common.php'; -require_once 'PEAR/Config.php'; -require_once 'PEAR/Remote.php'; require_once 'PEAR/Registry.php'; -require_once 'Console/Getopt.php'; error_reporting(E_ALL & ~E_NOTICE); -$argv = Console_Getopt::readPHPArgv(); -if (PEAR::isError($argv)) { - die($argv->getMessage()); -} -$options = Console_Getopt::getopt($argv, "c:C:d:D:h?sSqu:v"); -if (PEAR::isError($options)) { - usage($options); -} - -PEAR::setErrorHandling(PEAR_ERROR_PRINT, "pear: %s\n"); - -if (OS_WINDOWS) { - $pear_default_config = PHP_SYSCONFDIR.DIRECTORY_SEPARATOR.'pearsys.ini'; - $pear_user_config = PHP_SYSCONFDIR.DIRECTORY_SEPARATOR.'pear.ini'; -} else { - $pear_default_config = PHP_SYSCONFDIR.DIRECTORY_SEPARATOR.'pear.conf'; - $pear_user_config = getenv('HOME').DIRECTORY_SEPARATOR.'.pearrc'; -} - -$opts = $options[0]; - -foreach ($opts as $opt) { - switch ($opt[0]) { - case 'c': - $pear_user_config = $opt[1]; - break; - case 'C': - $pear_default_config = $opt[1]; - break; - } -} - -$config = new PEAR_Config($pear_user_config, $pear_default_config); -$store_user_config = false; -$store_default_config = false; -$verbose = 1; - -foreach ($opts as $opt) { - $param = $opt[1]; - switch ($opt[0]) { - case 'd': - list($key, $value) = explode('=', $param); - $config->set($key, $value); - break; - case 'D': - list($key, $value) = explode('=', $param); - $config->set($key, $value, true); - break; - case 's': - $store_user_config = true; - break; - case 'S': - $store_default_config = true; - break; - case 'u': - $config->toDefault($param); - break; - case 'v': - $verbose++; - break; - case 'q': - $verbose--; - break; - } -} - -if ($store_default_config) { - if (@is_writeable($pear_default_config)) { - $config->writeConfigFile($pear_default_config, 'default'); - } else { - die("You don't have write access to $pear_default_config, exiting!\n"); - } -} - -if ($store_user_config) { - $config->writeConfigFile($pear_user_config, 'userdefined'); -} - -$fallback_config = array( - 'master_server' => 'pear.php.net', - 'php_dir' => PEAR_INSTALL_DIR, - 'ext_dir' => PEAR_EXTENSION_DIR, - 'doc_dir' => PHP_DATADIR . DIRECTORY_SEPARATOR . 'pear' . - DIRECTORY_SEPARATOR . 'doc', - 'verbose' => true, +$subcommands = array( + 'help' => 'help [command]', + 'uninstall' => 'uninstall [-r] ', + 'package' => 'package [package info file]', + 'info' => 'info', + 'list' => 'list', + 'show-config' => 'show-config', ); -$fallback_done = array(); - -foreach ($fallback_config as $key => $value) { - if (!$config->isDefined($key)) { - $config->set($key, $value); - $fallback_done[$key] = true; - } -} - -//$verbose = $config->get("verbose"); -$script_dir = $config->get("php_dir"); -$ext_dir = $config->get("ext_dir"); -$doc_dir = $config->get("doc_dir"); - -$command = (isset($options[1][1])) ? $options[1][1] : null; -$rest = array_slice($options[1], 2); $command_options = array( - "list-installed" => "v", - "install" => "fr", - "uninstall" => "fr", - "upgrade" => "fr", + "list" => "v", + "uninstall" => "fr", ); -if (isset($command_options[$command])) { - $tmp = Console_Getopt::getopt($rest, $command_options[$command]); - if (PEAR::isError($tmp)) { - usage($tmp); - } - $cmdopts = $tmp[0]; - $cmdargs = $tmp[1]; -} else { - $cmdopts = array(); - $cmdargs = $rest; -} - -// }}} - -switch ($command) { - - // {{{ install - - case 'install': case 'upgrade': { - include_once 'PEAR/Installer.php'; - $pkgfile = $cmdargs[0]; - $installer =& new PEAR_Installer($script_dir, $ext_dir, $doc_dir); - $installer->setErrorHandling(PEAR_ERROR_DIE, - basename($pkgfile) . ": %s\n"); - $installer->debug = $verbose; - $install_options = array(); - if ($command == 'upgrade') { - $install_options['upgrade'] = true; - } - foreach ($cmdopts as $opt) { - switch ($opt[0]) { - case 'r': - // This option is for use by rpm and other package - // tools that can install files etc. by itself, but - // still needs to register the package as installed in - // PEAR's local registry. - $install_options['register_only'] = true; - break; - case 'f': - $install_options['force'] = true; - break; - } - } - if ($installer->install($pkgfile, $install_options)) { - print "install ok\n"; - } else { - print "install failed\n"; - } - break; - } - - // }}} - // {{{ uninstall - case 'uninstall': { - include_once 'PEAR/Installer.php'; - $pkgfile = $cmdargs[0]; - $installer =& new PEAR_Installer($script_dir, $ext_dir, $doc_dir); - $installer->setErrorHandling(PEAR_ERROR_DIE, - basename($pkgfile) . ": %s\n"); - $installer->debug = $verbose; - $uninstall_options = array(); - foreach ($cmdopts as $opt) { - switch ($opt[0]) { - case 'r': - $uninstall_options['register_only'] = true; - break; - case 'f': - $uninstall_options['force'] = true; - break; - } - } - if ($installer->uninstall($pkgfile, $uninstall_options)) { - print "uninstall ok\n"; - } else { - print "uninstall failed\n"; - } - break; - } - // }}} - // {{{ package - - case 'package': { - include_once 'PEAR/Packager.php'; - $pkginfofile = isset($cmdargs[0]) ? $cmdargs[0] : null; - $packager =& new PEAR_Packager($script_dir, $ext_dir, $doc_dir); - $packager->setErrorHandling(PEAR_ERROR_DIE, "pear page: %s\n"); - $packager->debug = $verbose; - if (PEAR::isError($packager->Package($pkginfofile))) { - print "\npackage failed\n"; - } else { - print "package ok\n"; - } - break; - } - - // }}} - // {{{ info - - case 'info': { - $parser = new PEAR_Common; - $parser->setErrorHandling(PEAR_ERROR_DIE, "pear info: %s\n"); - $info = $parser->infoFromTgzFile($cmdargs[0]); - unset($info['filelist']); - present_array($info); - break; - } - - // }}} - // {{{ list-installed - - case 'list-installed': { - $reg = new PEAR_Registry; - $installed = $reg->packageInfo(); - $i = $j = 0; - heading("Installed packages:"); - foreach ($installed as $package) { - if ($i++ % 20 == 0) { - if ($j++ > 0) { - print "\n"; - } - printf("%-20s %-10s %s\n", - "Package", "Version", "State"); - print str_repeat("-", 75)."\n"; - } - printf("%-20s %-10s %s\n", $package['package'], - $package['version'], $package['release_state']); - } - break; - } - - // }}} - // {{{ remote-list - - case 'remote-list': { - $remote = new PEAR_Remote($config); - $result = $remote->call('package.listAll'); - $i = $j = 0; - heading("Available packages"); - foreach ($result as $package => $info) { - if ($i++ % 20 == 0) { - if ($j++ > 0) { - print "\n"; - } - printf("%-20s %-10s %-15s %s\n", - "Package", "Stable", "Lead", "Category"); - print str_repeat("-", 75)."\n"; - } - if (empty($info['stable'])) { - $info['stable'] = '(none)'; - } - $stable = (string)$info['stable']; - printf("%-20s %-10s %-15s %s\n", $package, - $info['stable'], $info['lead'], $info['category']); - } - break; - } - - // }}} - // {{{ show-config +include "pearcmd-common.php"; - case 'show-config': { - $keys = $config->getKeys(); - foreach ($keys as $key) { - $value = $config->get($key); - $xi = ""; - if ($config->isDefaulted($key)) { - $xi .= " (default)"; - } - if (isset($fallback_done[$key])) { - $xi .= " (built-in)"; - } - printf("%s = %s%s\n", $key, $value, $xi); - } - break; - } - - // }}} - // {{{ upload-release - - case 'upload-release': { - if (sizeof($cmdargs) < 1) { - - } - $tarball = $cmdargs[0]; - - } - - // }}} - default: { - if (!$store_default_config && !$store_user_config) { - usage(); - } - break; - } -} - -// {{{ usage() - -function usage($error = null) -{ - $stderr = fopen('php://stderr', 'w'); - if (PEAR::isError($error)) { - fputs($stderr, $error->getMessage()); - } elseif ($error !== null) { - fputs($stderr, $error); - } - fputs($stderr, - "Usage: pear [options] command [command-options] \n". - "Options:\n". - " -v increase verbosity level (default 1)\n". - " -q be quiet, decrease verbosity level\n". - " -c file find user configuration in `file'\n". - " -C file find system configuration in `file'\n". - " -d foo=bar set user config variable `foo' to `bar'\n". - " -D foo=bar set system config variable `foo' to `bar'\n". - " -s store user configuration\n". - " -S store system configuration\n". - " -u foo unset `foo' in the user configuration\n". - " -h, -? display help/usage (this message)\n". - "Commands:\n". - " help [command]\n". - " install [-r] \n". - " uninstall [-r] \n". - " package [package info file]\n". - " list-installed\n". - " remote-list\n". - " info\n". - " show-config\n". - " upload-release\n". - "\n"); - fclose($stderr); - exit; +if (isset($subcommands[$command])) { + include "pearcmd-$command.php"; +} elseif (!$store_default_config && !$store_user_config) { + usage(); } -// }}} -// {{{ present_array() - -function present_array(&$arr, $keys = null) -{ - if ($keys === null) { - $keys = array_keys($arr); - } - $longest_key = max(array_map("strlen", array_keys($arr))) + 2; - $format_string = "%{$longest_key}s : %s\n"; - foreach ($keys as $k) { - if (is_array($arr[$k])) { - foreach ($arr[$k] as $i => $value) { - $x = "$k #$i"; - $cont = array(); - foreach(array_keys($value) as $val) { - $cont[] = "$val=" . $value[$val]; - } - $v = implode(", ", $cont); - printf($format_string, $x, $v); - } - continue; - } else { - $v = $arr[$k]; - printf($format_string, $k, $v); - } - } -} - -// }}} -// {{{ heading() - -function heading($text) -{ - $l = strlen(trim($text)); - print rtrim($text) . "\n" . str_repeat("=", $l) . "\n"; -} - -// }}} - /* * Local variables: * tab-width: 4 diff --git a/pear/scripts/pearcmd-common.php b/pear/scripts/pearcmd-common.php new file mode 100644 index 0000000000..6293532451 --- /dev/null +++ b/pear/scripts/pearcmd-common.php @@ -0,0 +1,197 @@ +getMessage()); +} +$options = Console_Getopt::getopt($argv, "c:C:d:D:h?sSqu:v"); +if (PEAR::isError($options)) { + usage($options); +} + +if (OS_WINDOWS) { + $pear_default_config = PHP_SYSCONFDIR.DIRECTORY_SEPARATOR.'pearsys.ini'; + $pear_user_config = PHP_SYSCONFDIR.DIRECTORY_SEPARATOR.'pear.ini'; +} else { + $pear_default_config = PHP_SYSCONFDIR.DIRECTORY_SEPARATOR.'pear.conf'; + $pear_user_config = getenv('HOME').DIRECTORY_SEPARATOR.'.pearrc'; +} + +$opts = $options[0]; + +foreach ($opts as $opt) { + switch ($opt[0]) { + case 'c': + $pear_user_config = $opt[1]; + break; + case 'C': + $pear_default_config = $opt[1]; + break; + } +} + +$config = new PEAR_Config($pear_user_config, $pear_default_config); +$store_user_config = false; +$store_default_config = false; +$verbose = 1; + +foreach ($opts as $opt) { + $param = $opt[1]; + switch ($opt[0]) { + case 'd': + list($key, $value) = explode('=', $param); + $config->set($key, $value); + break; + case 'D': + list($key, $value) = explode('=', $param); + $config->set($key, $value, true); + break; + case 's': + $store_user_config = true; + break; + case 'S': + $store_default_config = true; + break; + case 'u': + $config->toDefault($param); + break; + case 'v': + $verbose++; + break; + case 'q': + $verbose--; + break; + } +} + +if ($store_default_config) { + if (@is_writeable($pear_default_config)) { + $config->writeConfigFile($pear_default_config, 'default'); + } else { + die("You don't have write access to $pear_default_config, exiting!\n"); + } +} + +if ($store_user_config) { + $config->writeConfigFile($pear_user_config, 'userdefined'); +} + +$fallback_config = array( + 'master_server' => 'pear.php.net', + 'php_dir' => PEAR_INSTALL_DIR, + 'ext_dir' => PEAR_EXTENSION_DIR, + 'doc_dir' => PHP_DATADIR . DIRECTORY_SEPARATOR . 'pear' . + DIRECTORY_SEPARATOR . 'doc', + 'verbose' => true, +); +$fallback_done = array(); + +foreach ($fallback_config as $key => $value) { + if (!$config->isDefined($key)) { + $config->set($key, $value); + $fallback_done[$key] = true; + } +} + +//$verbose = $config->get("verbose"); +$script_dir = $config->get("php_dir"); +$ext_dir = $config->get("ext_dir"); +$doc_dir = $config->get("doc_dir"); + +$command = (isset($options[1][1])) ? $options[1][1] : null; +$rest = array_slice($options[1], 2); + +if (isset($command_options[$command])) { + $tmp = Console_Getopt::getopt($rest, $command_options[$command]); + if (PEAR::isError($tmp)) { + usage($tmp); + } + $cmdopts = $tmp[0]; + $cmdargs = $tmp[1]; +} else { + $cmdopts = array(); + $cmdargs = $rest; +} + +// {{{ usage() + +function usage($error = null, $helpsubject = null) +{ + global $progname, $subcommands; + $stderr = fopen('php://stderr', 'w'); + if (PEAR::isError($error)) { + fputs($stderr, $error->getMessage()); + } elseif ($error !== null) { + fputs($stderr, $error); + } + fputs($stderr, + "Usage: $progname [options] command [command-options] \n"); + if ($helpsubject == "options") { + fputs($stderr, + "Options:\n". + " -v increase verbosity level (default 1)\n". + " -q be quiet, decrease verbosity level\n". + " -c file find user configuration in `file'\n". + " -C file find system configuration in `file'\n". + " -d foo=bar set user config variable `foo' to `bar'\n". + " -D foo=bar set system config variable `foo' to `bar'\n". + " -s store user configuration\n". + " -S store system configuration\n". + " -u foo unset `foo' in the user configuration\n". + " -h, -? display help/usage (this message)\n"); + } else { + fputs($stderr, "Type \"$progname help options\" to list all options.\n"); + } + fputs($stderr, "Commands:".implode("\n ", $subcommands) . "\n"); + fclose($stderr); + exit; +} + +// }}} +// {{{ present_array() + +function present_array(&$arr, $keys = null) +{ + if ($keys === null) { + $keys = array_keys($arr); + } + $longest_key = max(array_map("strlen", array_keys($arr))) + 2; + $format_string = "%{$longest_key}s : %s\n"; + foreach ($keys as $k) { + if (is_array($arr[$k])) { + foreach ($arr[$k] as $i => $value) { + $x = "$k #$i"; + $cont = array(); + foreach(array_keys($value) as $val) { + $cont[] = "$val=" . $value[$val]; + } + $v = implode(", ", $cont); + printf($format_string, $x, $v); + } + continue; + } else { + $v = $arr[$k]; + printf($format_string, $k, $v); + } + } +} + +// }}} +// {{{ heading() + +function heading($text) +{ + $l = strlen(trim($text)); + print rtrim($text) . "\n" . str_repeat("=", $l) . "\n"; +} + +// }}} + +?> \ No newline at end of file diff --git a/pear/scripts/pearcmd-help.php b/pear/scripts/pearcmd-help.php new file mode 100644 index 0000000000..5bb8b7db9f --- /dev/null +++ b/pear/scripts/pearcmd-help.php @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/pear/scripts/pearcmd-info.php b/pear/scripts/pearcmd-info.php new file mode 100644 index 0000000000..baa6b883be --- /dev/null +++ b/pear/scripts/pearcmd-info.php @@ -0,0 +1,9 @@ +setErrorHandling(PEAR_ERROR_DIE, "pear info: %s\n"); +$info = $parser->infoFromTgzFile($cmdargs[0]); +unset($info['filelist']); +present_array($info); + +?> \ No newline at end of file diff --git a/pear/scripts/pearcmd-install.php b/pear/scripts/pearcmd-install.php new file mode 100644 index 0000000000..4a4a349aef --- /dev/null +++ b/pear/scripts/pearcmd-install.php @@ -0,0 +1,33 @@ +setErrorHandling(PEAR_ERROR_DIE, + basename($pkgfile) . ": %s\n"); +$installer->debug = $verbose; +$install_options = array(); +if ($command == 'upgrade') { + $install_options['upgrade'] = true; +} +foreach ($cmdopts as $opt) { + switch ($opt[0]) { + case 'r': + // This option is for use by rpm and other package + // tools that can install files etc. by itself, but + // still needs to register the package as installed in + // PEAR's local registry. + $install_options['register_only'] = true; + break; + case 'f': + $install_options['force'] = true; + break; + } +} +if ($installer->install($pkgfile, $install_options, $config)) { + print "install ok\n"; +} else { + print "install failed\n"; +} + +?> \ No newline at end of file diff --git a/pear/scripts/pearcmd-list.php b/pear/scripts/pearcmd-list.php new file mode 100644 index 0000000000..030c0b2c98 --- /dev/null +++ b/pear/scripts/pearcmd-list.php @@ -0,0 +1,20 @@ +packageInfo(); +$i = $j = 0; +heading("Installed packages:"); +foreach ($installed as $package) { + if ($i++ % 20 == 0) { + if ($j++ > 0) { + print "\n"; + } + printf("%-20s %-10s %s\n", + "Package", "Version", "State"); + print str_repeat("-", 75)."\n"; + } + printf("%-20s %-10s %s\n", $package['package'], + $package['version'], $package['release_state']); +} + +?> diff --git a/pear/scripts/pearcmd-package.php b/pear/scripts/pearcmd-package.php new file mode 100644 index 0000000000..5cc485a937 --- /dev/null +++ b/pear/scripts/pearcmd-package.php @@ -0,0 +1,15 @@ +setErrorHandling(PEAR_ERROR_DIE, "pear page: %s\n"); +$packager->debug = $verbose; +if (PEAR::isError($packager->Package($pkginfofile))) { + print "\npackage failed\n"; +} else { + print "package ok\n"; +} + + +?> \ No newline at end of file diff --git a/pear/scripts/pearcmd-remote-list.php b/pear/scripts/pearcmd-remote-list.php new file mode 100644 index 0000000000..d30a4679fe --- /dev/null +++ b/pear/scripts/pearcmd-remote-list.php @@ -0,0 +1,24 @@ +call('package.listAll', 1); +$i = $j = 0; +heading("Available packages"); +foreach ($result as $package => $info) { + if ($i++ % 20 == 0) { + if ($j++ > 0) { + print "\n"; + } + printf("%-20s %-10s %-15s %s\n", + "Package", "Stable", "Lead", "Category"); + print str_repeat("-", 75)."\n"; + } + if (empty($info['stable'])) { + $info['stable'] = '(none)'; + } + $stable = (string)$info['stable']; + printf("%-20s %-10s %-15s %s\n", $info['name'], + $info['stable'], $info['lead'], $info['category']); +} + +?> \ No newline at end of file diff --git a/pear/scripts/pearcmd-show-config.php b/pear/scripts/pearcmd-show-config.php new file mode 100644 index 0000000000..0ebc70a38a --- /dev/null +++ b/pear/scripts/pearcmd-show-config.php @@ -0,0 +1,16 @@ +getKeys(); +foreach ($keys as $key) { + $value = $config->get($key); + $xi = ""; + if ($config->isDefaulted($key)) { + $xi .= " (default)"; + } + if (isset($fallback_done[$key])) { + $xi .= " (built-in)"; + } + printf("%s = %s%s\n", $key, $value, $xi); +} + +?> \ No newline at end of file diff --git a/pear/scripts/pearcmd-uninstall.php b/pear/scripts/pearcmd-uninstall.php new file mode 100644 index 0000000000..18f4e41931 --- /dev/null +++ b/pear/scripts/pearcmd-uninstall.php @@ -0,0 +1,26 @@ +setErrorHandling(PEAR_ERROR_DIE, + basename($pkgfile) . ": %s\n"); +$installer->debug = $verbose; +$uninstall_options = array(); +foreach ($cmdopts as $opt) { + switch ($opt[0]) { + case 'r': + $uninstall_options['register_only'] = true; + break; + case 'f': + $uninstall_options['force'] = true; + break; + } +} +if ($installer->uninstall($pkgfile, $uninstall_options)) { + print "uninstall ok\n"; +} else { + print "uninstall failed\n"; +} + +?>