initial command-line request and response classes
authorChuck Hagenbuch <chuck@horde.org>
Sat, 24 Jan 2009 20:49:26 +0000 (15:49 -0500)
committerChuck Hagenbuch <chuck@horde.org>
Sat, 24 Jan 2009 20:49:26 +0000 (15:49 -0500)
framework/Controller/lib/Horde/Controller/Request/Cli.php [new file with mode: 0644]
framework/Controller/lib/Horde/Controller/Response/Cli.php [new file with mode: 0644]
framework/Controller/package.xml

diff --git a/framework/Controller/lib/Horde/Controller/Request/Cli.php b/framework/Controller/lib/Horde/Controller/Request/Cli.php
new file mode 100644 (file)
index 0000000..7f46a59
--- /dev/null
@@ -0,0 +1,81 @@
+<?php
+/**
+ * Copyright 2007 Maintainable Software, LLC
+ * Copyright 2008-2009 The Horde Project (http://www.horde.org/)
+ *
+ * @author     Mike Naberezny <mike@maintainable.com>
+ * @author     Derek DeVries <derek@maintainable.com>
+ * @author     Chuck Hagenbuch <chuck@horde.org>
+ * @license    http://opensource.org/licenses/bsd-license.php
+ * @category   Horde
+ * @package    Horde_Controller
+ * @subpackage Request
+ */
+
+/**
+ * Represents a command line invocation.
+ *
+ * @author     Mike Naberezny <mike@maintainable.com>
+ * @author     Derek DeVries <derek@maintainable.com>
+ * @author     Chuck Hagenbuch <chuck@horde.org>
+ * @license    http://opensource.org/licenses/bsd-license.php
+ * @category   Horde
+ * @package    Horde_Controller
+ * @subpackage Request
+ */
+class Horde_Controller_Request_Cli extends Horde_Controller_Request_Base
+{
+    /**
+     * Command line arguments
+     */
+    protected $_argv;
+
+    /**
+     */
+    public function __construct($options = array())
+    {
+        parent::__construct($options);
+
+        $parser = new Horde_Argv_Parser(array('allowUnknownArgs' => true));
+        list($this->_argv, $args) = $parser->parseArgs();
+        if (count($args) != 1) {
+            throw new Horde_Controller_Exception("unknown command: " . implode(' ', $args));
+        }
+        $this->_path = $args[0];
+    }
+
+    public function getUri()
+    {
+        return $this->getPath();
+    }
+
+    public function getPath()
+    {
+        return $this->_path;
+    }
+
+    /**
+     * Get all command line parameters.
+     * some wacky loops to make sure that nested values in one
+     * param list don't overwrite other nested values
+     *
+     * @return  array
+     */
+    public function getParameters()
+    {
+        $allParams = array();
+        $paramArrays = array($this->_pathParams, $this->_argv);
+
+        foreach ($paramArrays as $params) {
+            foreach ((array)$params as $key => $value) {
+                if (!is_array($value) || !isset($allParams[$key])) {
+                    $allParams[$key] = $value;
+                } else {
+                    $allParams[$key] = array_merge($allParams[$key], $value);
+                }
+            }
+        }
+        return $allParams;
+    }
+
+}
diff --git a/framework/Controller/lib/Horde/Controller/Response/Cli.php b/framework/Controller/lib/Horde/Controller/Response/Cli.php
new file mode 100644 (file)
index 0000000..e638b59
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+/**
+ * Copyright 2007 Maintainable Software, LLC
+ * Copyright 2008-2009 The Horde Project (http://www.horde.org/)
+ *
+ * @author     Mike Naberezny <mike@maintainable.com>
+ * @author     Derek DeVries <derek@maintainable.com>
+ * @author     Chuck Hagenbuch <chuck@horde.org>
+ * @license    http://opensource.org/licenses/bsd-license.php
+ * @category   Horde
+ * @package    Horde_Controller
+ * @subpackage Response
+ */
+
+/**
+ * @author     Mike Naberezny <mike@maintainable.com>
+ * @author     Derek DeVries <derek@maintainable.com>
+ * @author     Chuck Hagenbuch <chuck@horde.org>
+ * @license    http://opensource.org/licenses/bsd-license.php
+ * @category   Horde
+ * @package    Horde_Controller
+ * @subpackage Response
+ */
+class Horde_Controller_Response_Cli extends Horde_Controller_Response_Base
+{
+}
index b2cc149..0e47ffa 100644 (file)
@@ -41,11 +41,13 @@ http://pear.php.net/dtd/package-2.0.xsd">
       </dir> <!-- /lib/Horde/Controller/Mime -->
       <dir name="Request">
        <file name="Base.php" role="php" />
+       <file name="Cli.php" role="php" />
        <file name="Http.php" role="php" />
        <file name="Mock.php" role="php" />
       </dir> <!-- /lib/Horde/Controller/Request -->
       <dir name="Response">
        <file name="Base.php" role="php" />
+       <file name="Cli.php" role="php" />
        <file name="Http.php" role="php" />
        <file name="Mock.php" role="php" />
       </dir> <!-- /lib/Horde/Controller/Response -->
@@ -80,9 +82,11 @@ http://pear.php.net/dtd/package-2.0.xsd">
    <install name="lib/Horde/Controller/UrlWriter.php" as="Horde/Controller/UrlWriter.php" />
    <install name="lib/Horde/Controller/Mime/Type.php" as="Horde/Controller/Mime/Type.php" />
    <install name="lib/Horde/Controller/Request/Base.php" as="Horde/Controller/Request/Base.php" />
+   <install name="lib/Horde/Controller/Request/Cli.php" as="Horde/Controller/Request/Cli.php" />
    <install name="lib/Horde/Controller/Request/Http.php" as="Horde/Controller/Request/Http.php" />
    <install name="lib/Horde/Controller/Request/Mock.php" as="Horde/Controller/Request/Mock.php" />
    <install name="lib/Horde/Controller/Response/Base.php" as="Horde/Controller/Response/Base.php" />
+   <install name="lib/Horde/Controller/Response/Cli.php" as="Horde/Controller/Response/Cli.php" />
    <install name="lib/Horde/Controller/Response/Http.php" as="Horde/Controller/Response/Http.php" />
    <install name="lib/Horde/Controller/Response/Mock.php" as="Horde/Controller/Response/Mock.php" />
   </filelist>