add support for articles (with HTML)
[shpub.git] / src / shpub / Cli.php
index fb22d3fb5db9c7b9bc4427c035f3c44add22a1ee..eedbb10e37d916f4c68891bec497a4a3f4fddb29 100644 (file)
@@ -27,17 +27,21 @@ class Cli
                     $res->command->options['force']
                 );
                 break;
-            case 'like':
-                $this->requireValidHost();
-                $cmd = new Command_Like($this->cfg->host);
-                $cmd->run($res->command->args['url']);
+
+            case 'server':
+                $cmd = new Command_Server($this->cfg);
+                $cmd->run($res->command->options['verbose']);
                 break;
+
             default:
-                var_dump($this->cfg->host, $res);
-                Log::err('FIXME');
+                $class = 'shpub\\Command_' . ucfirst($res->command_name);
+                $this->requireValidHost();
+                $cmd = new $class($this->cfg);
+                $cmd->run($res->command);
+                break;
             }
         } catch (\Exception $e) {
-            echo 'Error: ' . $e->getMessage() . "\n";
+            Log::err('Error: ' . $e->getMessage());
             exit(1);
         }
     }
@@ -63,10 +67,13 @@ class Cli
                 } else {
                     $this->cfg->host = $this->cfg->hosts[$key];
                 }
+            } else {
+                $key = $this->cfg->getDefaultHost();
+                if ($key !== null) {
+                    $this->cfg->host = $this->cfg->hosts[$key];
+                }
             }
-            if ($opts['user'] !== null) {
-                $this->cfg->host->user = $opts['user'];
-            }
+            $this->cfg->setDebug($opts['debug']);
 
             return $res;
         } catch (\Exception $exc) {
@@ -83,7 +90,7 @@ class Cli
     {
         $optParser = new \Console_CommandLine();
         $optParser->description = 'shpub';
-        $optParser->version = '0.0.0';
+        $optParser->version = '0.0.4';
         $optParser->subcommand_required = true;
 
         $optParser->addOption(
@@ -98,14 +105,13 @@ class Cli
             )
         );
         $optParser->addOption(
-            'user',
+            'debug',
             array(
-                'short_name'  => '-u',
-                'long_name'   => '--user',
-                'description' => 'User URL',
-                'help_name'   => 'URL',
-                'action'      => 'StoreString',
-                'default'     => null,
+                'short_name'  => '-d',
+                'long_name'   => '--debug',
+                'description' => 'Verbose output',
+                'action'      => 'StoreTrue',
+                'default'     => false,
             )
         );
 
@@ -130,7 +136,7 @@ class Cli
         $cmd->addArgument(
             'user',
             [
-                'optional'    => false,
+                'optional'    => true,
                 'description' => 'User URL',
             ]
         );
@@ -142,31 +148,23 @@ class Cli
             ]
         );
 
-        //$cmd = $optParser->addCommand('post');
-        $cmd = $optParser->addCommand('reply');
-        $cmd->addArgument(
-            'url',
-            [
-                'optional'    => false,
-                'description' => 'URL that is replied to',
-            ]
-        );
-        $cmd->addArgument(
-            'text',
-            [
-                'optional'    => false,
-                'description' => 'Reply text',
-            ]
+        $cmd = $optParser->addCommand('server');
+        $cmd->addOption(
+            'verbose',
+            array(
+                'short_name'  => '-v',
+                'long_name'   => '--verbose',
+                'description' => 'Show more server infos',
+                'action'      => 'StoreTrue',
+                'default'     => false,
+            )
         );
 
-        $cmd = $optParser->addCommand('like');
-        $cmd->addArgument(
-            'url',
-            [
-                'optional'    => false,
-                'description' => 'URL that is liked',
-            ]
-        );
+        Command_Article::opts($optParser);
+        Command_Note::opts($optParser);
+        Command_Reply::opts($optParser);
+        Command_Like::opts($optParser);
+        Command_Repost::opts($optParser);
 
         return $optParser;
     }
@@ -181,6 +179,8 @@ class Cli
                 'Server data incomplete. "shpub connect" first.'
             );
         }
+
+        $this->cfg->host->loadEndpoints();
     }
 }
 ?>