X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=HTML%2FFlexyFramework%2FCli.php;h=3d6c4f6ccea30dffa812e3342a1be3f526b25e39;hb=HEAD;hp=0b7fae68d33b536e745449ef0592097926e999ef;hpb=265e1091d3ee3d73961166d00aa8a351dfe916a5;p=pear diff --git a/HTML/FlexyFramework/Cli.php b/HTML/FlexyFramework/Cli.php index 0b7fae68..3d6c4f6c 100644 --- a/HTML/FlexyFramework/Cli.php +++ b/HTML/FlexyFramework/Cli.php @@ -43,7 +43,7 @@ class HTML_FlexyFramework_Cli var $ff; // the Framework instance. - function HTML_FlexyFramework_Cli($ff) + function __construct($ff) { $this->ff = $ff; } @@ -78,6 +78,12 @@ Available commands: $pr = $this->ff->project; $this->cliHelpSearch($p,$pr); + if (!empty($this->ff->projectExtends)) { + foreach($this->ff->projectExtends as $pr) { + $this->cliHelpSearch($p,$pr); + } + } + echo "\n\n"; exit; } @@ -186,35 +192,47 @@ Available commands: try { // look up the parent tree for core opts. + $val = array(); + //var_dump($classname); $cls = new ReflectionClass($classname); if (method_exists($classname, 'cli_opts')) { $val = $classname::cli_opts(); } else { - $val = $cls->getStaticPropertyValue('cli_opts'); + $ar = $cls->getStaticProperties(); + if (isset($ar['cli_opts'])) { + //echo "getting cli opts?\n"; + $val = $cls->getStaticPropertyValue('cli_opts'); + } } $val = is_array($val) ? $val : array(); while ($cls = $cls->getParentClass()) { - //var_dump($cls); + //var_dump($cls->name); try { - + $vadd = array(); if (method_exists($cls->name, 'cli_opts')) { $cn = $cls->name; - $val = $cn::cli_opts(); + $vadd = $cn::cli_opts(); } else { - $vadd = $cls->getStaticPropertyValue('cli_opts') ; + $ar = $cls->getStaticProperties(); + if (isset($ar['cli_opts'])) { + $vadd = $cls->getStaticPropertyValue('cli_opts'); + } + } $val = array_merge($val, is_array($vadd) ? $vadd : array() ); - } catch (Exception $e) { + } catch (ReflectionException $e) { continue; } } - } catch (Exception $e) { - echo "Warning: ". ((string) $e) ."\n"; + } catch (ReflectionException $e) { + //print_r($e); + echo "cliParse:Warning: {$e->getMessage()}\n"; + exit; } if (empty($val)) { return false; @@ -231,6 +249,7 @@ Available commands: $newargs = Console_Getargs::factory($val, $ar); + if (!is_a($newargs, 'PEAR_Error')) { return $newargs->getValues(); } @@ -276,55 +295,59 @@ Available commands: require_once 'Console/Getargs.php'; $ar = $_SERVER['argv']; $call = array(array_shift($ar)); // remove index.php - $call[] = array_shift($ar); - //var_dump($ar); + $has_class = false; + if (isset($ar[0]) && $ar[0][0] != '-') { + $call[] = array_shift($ar); // remove our class... + $has_class = true; + } $val = self::$cli_opts; $newargs = Console_Getargs::factory($val, $ar); - if (is_a($newargs, 'PEAR_Error')) { - - + // we need to read our 'special arguments' here - otherwise other arguments, cause getargs to fail + switch (true) { + case in_array('--pman-nodatabase', $ar): + echo "Turning off database\n"; + $this->ff->nodatabase= true; + + break; + + } + + + + if (!is_a($newargs, 'PEAR_Error')) { + return false; + } + list($optional, $required, $params) = Console_Getargs::getOptionalRequired($val); + + $helpHeader = 'Usage: php ' . implode (' ', $call) . ' '. + $optional . ' ' . $required . ' ' . $params . "\n\n"; + + if ($newargs->getCode() === CONSOLE_GETARGS_ERROR_USER) { + // since we do not handle all the arguemnts here... + // skip errors if we find unknown arguments. + if (preg_match('/^Unknown argument/', $newargs->getMessage())) { + return false; + } - if ($newargs->getCode() === CONSOLE_GETARGS_ERROR_USER) { - // since we do not handle all the arguemnts here... - // skip errors if we find unknown arguments. - if (preg_match('/^Unknown argument/', $newargs->getMessage())) { - return false; - } + // User put illegal values on the command line. + echo Console_Getargs::getHelp($val, + $helpHeader, "\n\n".$newargs->getMessage(), 78, 4)."\n\n"; + exit; + } + if ($newargs->getCode() === CONSOLE_GETARGS_HELP) { + if (!$has_class) { - // User put illegal values on the command line. echo Console_Getargs::getHelp($val, - $helpHeader, "\n\n".$newargs->getMessage(), 78, 4)."\n\n"; + $helpHeader, NULL, 78, 4)."\n\n"; exit; } - if ($newargs->getCode() === CONSOLE_GETARGS_HELP) { - - return true;// hel - } - - return false; + return true;// help is handled later in the flow? } - - - // now handle real arguments.. - - $ret = $newargs->getValues(); - foreach($ret as $k=>$v) { - switch($k) { - case 'pman-nodatabase': - //echo "Turning off database"; - $this->ff->nodatabase= true; - - break; - - default: - die("need to fix option $k"); - } - - } return false; + }