X-Git-Url: https://git.cweiske.de/stapibas.git/blobdiff_plain/79cafd0c092771364766a2102303d945fc630d82..b2faa6d59a040666cdc74fcc16fe225ce5d4ba4a:/src/stapibas/Cli.php diff --git a/src/stapibas/Cli.php b/src/stapibas/Cli.php index 07be39f..10b6957 100644 --- a/src/stapibas/Cli.php +++ b/src/stapibas/Cli.php @@ -30,11 +30,19 @@ class Cli ); $deps->log = $log; $deps->options = array_merge( - $result->options, $result->command->options + $result->options, + $result->command ? $result->command->options : array(), + ($result->command && $result->command->command) + ? $result->command->command->options + : array() ); - if ($result->command_name == 'update') { - $this->runUpdate($result, $deps); + if ($result->command_name == 'feed') { + $this->runFeed($result->command, $deps); + } else if ($result->command_name == 'handle') { + $this->runPingbackHandler($result->command, $deps); + } else { + $this->cliParser->displayUsage(1); } } catch (\Exception $e) { $msg = 'stapibas exception!' . "\n" @@ -45,22 +53,41 @@ class Cli } } - protected function runUpdate($result, $deps) - { + protected function runFeed( + \Console_CommandLine_Result $command, Dependencies $deps + ) { + if ($command->command_name == 'update') { + return $this->runFeedUpdate($command, $deps); + } + + $mg = new Feed_Manage($deps); + if ($command->command_name == 'add') { + $mg->addFeed($command->command->args['feed']); + } else if ($command->command_name == 'remove') { + $mg->removeFeed($command->command->args['feed']); + } else { + $mg->listAll(); + } + } + + protected function runFeedUpdate( + \Console_CommandLine_Result $result, Dependencies $deps + ) { $tasks = array_flip(explode(',', $result->command->options['tasks'])); if (isset($tasks['feeds'])) { - $this->runUpdateFeeds($deps); + $this->runFeedUpdateFeeds($deps); } if (isset($tasks['entries'])) { - $this->runUpdateEntries($deps); + $this->runFeedUpdateEntries($deps); } if (isset($tasks['urls'])) { - $this->runUpdatePingUrls($deps); + $this->runFeedUpdatePingUrls($deps); } } - protected function runUpdateFeeds($deps) + + protected function runFeedUpdateFeeds($deps) { $uf = new Feed_UpdateFeeds($deps); if ($deps->options['feed'] === null) { @@ -71,7 +98,7 @@ class Cli } } - protected function runUpdateEntries($deps) + protected function runFeedUpdateEntries($deps) { $ue = new Feed_UpdateEntries($deps); if ($deps->options['entry'] === null) { @@ -82,7 +109,7 @@ class Cli } } - protected function runUpdatePingUrls($deps) + protected function runFeedUpdatePingUrls($deps) { $uf = new Feed_PingUrls($deps); if ($deps->options['entryurl'] === null) { @@ -94,6 +121,17 @@ class Cli } + protected function runPingbackHandler( + \Console_CommandLine_Result $command, Dependencies $deps + ) { + //fetch content of pingback source pages + $cf = new Content_Fetcher($deps); + $cf->updateAll(); + + //FIXME + } + + public function setupCli() { $p = new \Console_CommandLine(); @@ -119,14 +157,44 @@ class Cli ) ); + $this->setupCliFeed($p); + $this->setupCliPingback($p); + + $this->cliParser = $p; + } + + protected function setupCliFeed($p) + { + $feed = $p->addCommand( + 'feed', + array( + 'description' => 'Edit, list or delete feeds' + ) + ); + + $add = $feed->addCommand( + 'add', + array( + 'description' => 'Add the feed', + ) + ); + $add->addArgument('feed', array('description' => 'URL of feed')); + + $remove = $feed->addCommand( + 'remove', + array( + 'description' => 'Remove the feed', + ) + ); + $remove->addArgument('feed', array('description' => 'URL or ID of feed')); + - $update = $p->addCommand( + $update = $feed->addCommand( 'update', array( 'description' => 'Update feed data and send out pings' ) ); - $update->addOption( 'feed', array( @@ -137,7 +205,6 @@ class Cli 'action' => 'StoreString' ) ); - $update->addOption( 'entry', array( @@ -148,7 +215,6 @@ class Cli 'action' => 'StoreString' ) ); - $update->addOption( 'tasks', array( @@ -163,13 +229,14 @@ class Cli $update->addOption( 'list_tasks', array( - 'long_name' => '--list-tasks', - 'description' => 'Show all possible tasks', - 'action' => 'List', - 'list' => array('feeds', 'entries', 'urls') + 'long_name' => '--list-tasks', + 'description' => 'Show all possible tasks', + 'action' => 'List', + 'action_params' => array( + 'list' => array('feeds', 'entries', 'urls') + ) ) ); - $update->addOption( 'entryurl', array( @@ -180,9 +247,16 @@ class Cli 'action' => 'StoreString' ) ); - - $this->cliParser = $p; } + protected function setupCliPingback($p) + { + $handle = $p->addCommand( + 'handle', + array( + 'description' => 'Handle pingbacks: Fetch content, extract data' + ) + ); + } } ?>