X-Git-Url: https://git.cweiske.de/shpub.git/blobdiff_plain/be472fa254f752d28b4254fc308d27c8057f2aab..a6dcdf60052e2c5165528495245adb9ceeab300a:/src/shpub/Cli.php diff --git a/src/shpub/Cli.php b/src/shpub/Cli.php index 823e297..6cc77dc 100644 --- a/src/shpub/Cli.php +++ b/src/shpub/Cli.php @@ -23,20 +23,29 @@ class Cli $cmd->run( $res->command->args['server'], $res->command->args['user'], - $res->command->args['key'] + $res->command->args['key'], + $res->command->options['force'], + $res->command->options['scope'] ); 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->args['server'], + $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); } } @@ -44,7 +53,7 @@ class Cli /** * Let the CLI option parser parse the options. * - * @param object $parser Option parser + * @param object $optParser Option parser * * @return object Parsed command line parameters */ @@ -62,10 +71,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) { @@ -81,8 +93,9 @@ class Cli protected function loadOptParser() { $optParser = new \Console_CommandLine(); - $optParser->description = 'shpub'; - $optParser->version = '0.0.0'; + $optParser->name = 'shpub'; + $optParser->description = 'Command line micropub client'; + $optParser->version = '0.3.0'; $optParser->subcommand_required = true; $optParser->addOption( @@ -97,65 +110,33 @@ 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, ) ); - $cmd = $optParser->addCommand('connect'); - $cmd->addArgument( - 'server', - [ - 'optional' => false, - 'description' => 'Server URL', - ] - ); - $cmd->addArgument( - 'user', - [ - 'optional' => false, - 'description' => 'User URL', - ] - ); - $cmd->addArgument( - 'key', - [ - 'optional' => true, - 'description' => 'Short name (key)', - ] - ); + Command_Connect::opts($optParser); + Command_Server::opts($optParser); + Command_Targets::opts($optParser); - //$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', - ] - ); + Command_Article::opts($optParser); + Command_Note::opts($optParser); + Command_Reply::opts($optParser); + Command_Like::opts($optParser); + Command_Repost::opts($optParser); + Command_Rsvp::opts($optParser); + Command_Bookmark::opts($optParser); - $cmd = $optParser->addCommand('like'); - $cmd->addArgument( - 'url', - [ - 'optional' => false, - 'description' => 'URL that is liked', - ] - ); + Command_Delete::opts($optParser); + Command_Undelete::opts($optParser); + Command_Update::opts($optParser); + + Command_Upload::opts($optParser); return $optParser; } @@ -170,6 +151,8 @@ class Cli 'Server data incomplete. "shpub connect" first.' ); } + + $this->cfg->host->loadEndpoints(); } } ?>