var $ff; // the Framework instance.
- function HTML_FlexyFramework_Cli($ff)
+ function __construct($ff)
{
$this->ff = $ff;
}
$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;
}
{
// cli static $classname::$cli_opts
-
+
try {
- $cls = new ReflectionClass($classname);
- $val = $cls->getStaticPropertyValue('cli_opts');
+ // 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 {
+ $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()) {
- $vadd = $cls->getStaticPropertyValue('cli_opts') ;
- $val = array_merge($val, is_array($vadd) ? $vadd : array() );
+ //var_dump($cls->name);
+
+ try {
+ $vadd = array();
+ if (method_exists($cls->name, 'cli_opts')) {
+ $cn = $cls->name;
+ $vadd = $cn::cli_opts();
+ } else {
+ $ar = $cls->getStaticProperties();
+ if (isset($ar['cli_opts'])) {
+ $vadd = $cls->getStaticPropertyValue('cli_opts');
+ }
+
+ }
+ $val = array_merge($val, is_array($vadd) ? $vadd : array() );
+ } catch (ReflectionException $e) {
+ continue;
+ }
}
- } catch (Exception $e) {
- //break;
+
+ } catch (ReflectionException $e) {
+ //print_r($e);
+ echo "cliParse:Warning: {$e->getMessage()}\n";
+ exit;
}
if (empty($val)) {
return false;
}
+
$val = array_merge(self::$cli_opts, $val);
$newargs = Console_Getargs::factory($val, $ar);
+
if (!is_a($newargs, 'PEAR_Error')) {
return $newargs->getValues();
}
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;
+
}