<?php
+/**
+ * Part of bdrem
+ *
+ * PHP version 5
+ *
+ * @category Tools
+ * @package Bdrem
+ * @author Christian Weiske <cweiske@cweiske.de>
+ * @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 <cweiske@cweiske.de>
+ * @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
{
+ /**
+ * 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) {
- $this->config->$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;
+ //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_Mail();
- $r->config = $this->config;
- $r->ansi = true;
- echo $r->render($arEvents);
+ readfile(__DIR__ . '/../../data/bdrem.config.php.dist');
+ exit();
}
}
?>