8 public function __construct()
16 $result = $this->cliParser->parse();
17 } catch (\Exception $exc) {
18 $this->cliParser->displayError($exc->getMessage());
22 if ($result->options['debug']) {
27 $deps = new Dependencies();
29 $GLOBALS['dbdsn'], $GLOBALS['dbuser'], $GLOBALS['dbpass']
32 $deps->options = array_merge(
34 $result->command ? $result->command->options : array()
37 if ($result->command_name == 'update') {
38 $this->runUpdate($result, $deps);
39 } else if ($result->command_name == 'feed') {
40 $this->manageFeed($result, $deps);
42 } catch (\Exception $e) {
43 $msg = 'stapibas exception!' . "\n"
44 . 'Code: ' . $e->getCode() . "\n"
45 . 'Message: ' . $e->getMessage() . "\n";
46 file_put_contents('php://stderr', $msg);
51 protected function runUpdate(
52 \Console_CommandLine_Result $result, Dependencies $deps
54 $tasks = array_flip(explode(',', $result->command->options['tasks']));
56 if (isset($tasks['feeds'])) {
57 $this->runUpdateFeeds($deps);
59 if (isset($tasks['entries'])) {
60 $this->runUpdateEntries($deps);
62 if (isset($tasks['urls'])) {
63 $this->runUpdatePingUrls($deps);
67 protected function runUpdateFeeds($deps)
69 $uf = new Feed_UpdateFeeds($deps);
70 if ($deps->options['feed'] === null) {
73 $urlOrIds = explode(',', $deps->options['feed']);
74 $uf->updateSome($urlOrIds);
78 protected function runUpdateEntries($deps)
80 $ue = new Feed_UpdateEntries($deps);
81 if ($deps->options['entry'] === null) {
84 $urlOrIds = explode(',', $deps->options['entry']);
85 $ue->updateSome($urlOrIds);
89 protected function runUpdatePingUrls($deps)
91 $uf = new Feed_PingUrls($deps);
92 if ($deps->options['entryurl'] === null) {
95 $urls = explode(',', $deps->options['entryurl']);
101 protected function manageFeed(
102 \Console_CommandLine_Result $result, Dependencies $deps
104 $mg = new Feed_Manage($deps);
105 if ($deps->options['add']) {
106 $mg->addFeed($result->command->args['feed']);
107 } else if ($deps->options['remove']) {
108 $mg->removeFeed($result->command->args['feed']);
115 public function setupCli()
117 $p = new \Console_CommandLine();
118 $p->description = 'Sends pingbacks to URLs linked in Atom feed entries';
119 $p->version = '0.0.1';
124 'short_name' => '-d',
125 'long_name' => '--debug',
126 'description' => "Output debug messages",
127 'action' => 'StoreTrue'
133 'short_name' => '-f',
134 'long_name' => '--force',
135 'description' => "Update even when resource did not change",
136 'action' => 'StoreTrue'
140 $feed = $p->addCommand(
143 'description' => 'Edit, list or delete feeds'
149 'short_name' => '-a',
150 'long_name' => '--add',
151 'description' => 'Add the feed',
152 'action' => 'StoreTrue'
158 'short_name' => '-r',
159 'long_name' => '--remove',
160 'description' => 'Remove the feed',
161 'action' => 'StoreTrue'
167 'description' => 'URL or ID of feed',
173 $update = $p->addCommand(
176 'description' => 'Update feed data and send out pings'
183 'short_name' => '-i',
184 'long_name' => '--feed',
185 'description' => 'Update this feed URL or ID',
186 'help_name' => 'URL|ID',
187 'action' => 'StoreString'
194 'short_name' => '-e',
195 'long_name' => '--entry',
196 'description' => 'Update this feed entry URL or ID',
197 'help_name' => 'URL|ID',
198 'action' => 'StoreString'
205 'short_name' => '-t',
206 'long_name' => '--tasks',
207 'description' => 'Execute the given tasks (comma-separated: feeds,entries,urls)',
208 'help_name' => 'tasks',
209 'action' => 'StoreString',
210 'default' => 'feeds,entries,urls',
216 'long_name' => '--list-tasks',
217 'description' => 'Show all possible tasks',
219 'list' => array('feeds', 'entries', 'urls')
226 'short_name' => '-u',
227 'long_name' => '--url',
228 'description' => 'Ping this URL or ID',
229 'help_name' => 'URL|ID',
230 'action' => 'StoreString'
234 $this->cliParser = $p;