add docblocks to all files, classes, methods and variables
[bdrem.git] / src / bdrem / Cli.php
index 196ca18a3d8052e06054e38c8e53fc8f3311aa82..0525a37634819c231ab7c769ad6a87e2a056550e 100644 (file)
 <?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;
 
-class Cli
+/**
+ * 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
 {
-    public function run()
+    /**
+     * 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()
     {
-        $cfg = new Config();
-        $cfg->load();
-        setlocale(LC_TIME, $cfg->locale);
-        $source = $cfg->loadSource();
+        $parser = parent::loadParameters();
+        //set default renderer to console
+        $parser->options['renderer']->default = 'console';
 
-        $arEvents = $source->getEvents(
-            date('Y-m-d'), $cfg->daysBefore, $cfg->daysAfter
+        //only on CLI
+        $parser->addCommand(
+            'readme', array(
+                'description' => 'Show README.rst file'
+            )
         );
-        usort($arEvents, '\\bdrem\\Event::compare');
+        $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');
+        }
+    }
 
-        $r = new Renderer_Console();
-        echo $r->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()
+    {
+        readfile(__DIR__ . '/../../data/bdrem.config.php.dist');
+        exit();
     }
 }
 ?>