X-Git-Url: https://git.cweiske.de/bdrem.git/blobdiff_plain/1fc9283634a4c281c3a2c5678bdef63c16738f23..d8ce92efb0f457051ba4cdaaa11fe938697282d8:/src/bdrem/Cli.php diff --git a/src/bdrem/Cli.php b/src/bdrem/Cli.php index a580d9a..3ecd4ea 100644 --- a/src/bdrem/Cli.php +++ b/src/bdrem/Cli.php @@ -1,36 +1,110 @@ + * @copyright 2014 Christian Weiske + * @license http://www.gnu.org/licenses/agpl.html GNU AGPL v3 + * @link http://cweiske.de/bdrem.htm + */ namespace bdrem; +/** + * Command line user interface for the terminal/shell. + * Renders an ASCII table by default. + * + * @category Tools + * @package Bdrem + * @author Christian Weiske + * @copyright 2014 Christian Weiske + * @license http://www.gnu.org/licenses/agpl.html GNU AGPL v3 + * @version Release: @package_version@ + * @link http://cweiske.de/bdrem.htm + */ class Cli extends UserInterface { - protected function loadParameters($cfg) + /** + * Load parameters for the CLI option parser. + * Set the default renderer to "console" and adds some CLI-only commands + * like "readme" and "config". + * + * @return \Console_CommandLine CLI option parser + */ + protected function loadParameters() { - $params = $GLOBALS['argv']; - array_shift($params); - $storeInto = null; - foreach ($params as $param) { - if ($storeInto !== null) { - $cfg->$storeInto = (int)$param; - $storeInto = null; - continue; - } + $parser = parent::loadParameters(); + //set default renderer to console + $parser->options['renderer']->default = 'console'; - if ($param == '--days-after' || $param == '-a') { - $storeInto = 'daysAfter'; - continue; - } else if ($param == '--days-before' || $param == '-b') { - $storeInto = 'daysBefore'; - continue; - } - $storeInto = null; + $parser->addOption( + 'ansi', + array( + 'long_name' => '--no-color', + 'description' => 'Do not output ANSI color codes', + 'action' => 'StoreFalse', + 'default' => true + ) + ); + + //only on CLI + $parser->addCommand( + 'readme', array( + 'description' => 'Show README.rst file' + ) + ); + $parser->addCommand( + 'config', array( + 'description' => 'Extract configuration file' + ) + ); + + return $parser; + } + + /** + * Handle any commands given on the CLI + * + * @param object $res Command line parameters and options + * + * @return void + */ + protected function handleCommands($res) + { + if ($res->command_name == '') { + return; + } else if ($res->command_name == 'readme') { + $this->showReadme(); + } else if ($res->command_name == 'config') { + $this->extractConfig(); + } else { + throw new \Exception('Unknown command'); } } - protected function render($arEvents) + /** + * Handle the "readme" command and output the readme. + * + * @return void + */ + protected function showReadme() + { + readfile(__DIR__ . '/../../README.rst'); + exit(); + } + + /** + * Handle the "config" command and output the default configuration + * + * @return void + */ + protected function extractConfig() { - $r = new Renderer_Console(); - $r->ansi = true; - echo $r->render($arEvents); + readfile(__DIR__ . '/../../data/bdrem.config.php.dist'); + exit(); } } ?>