show error, not exception
[bdrem.git] / src / bdrem / UserInterface.php
index 7e6bf9a141f6a9fd436dc382df31c9b6580234f8..c5e29b765ad4b73691c4f86bd70d0b7a95e1f34c 100644 (file)
@@ -11,11 +11,19 @@ abstract class UserInterface
             $this->config = new Config();
             $this->config->load();
             setlocale(LC_TIME, $this->config->locale);
-            $source = $this->config->loadSource();
 
             $parser = $this->loadParameters();
-            $this->parseParameters($parser);
+            $res = $this->parseParameters($parser);
+            $this->handleCommands($res);
+
+            if (!$this->config->cfgFileExists) {
+                throw new \Exception(
+                    "No config file found. Looked at the following places:\n"
+                    . '- ' . implode ("\n- ", $this->config->cfgFiles)
+                );
+            }
 
+            $source = $this->config->loadSource();
             $arEvents = $source->getEvents(
                 $this->config->date,
                 $this->config->daysPrev, $this->config->daysNext
@@ -24,7 +32,7 @@ abstract class UserInterface
             $this->render($arEvents);
         } catch (\Exception $e) {
             $this->preRenderParameterError();
-            echo 'Exception: ' . $e->getCode() . ' ' . $e->getMessage() . "\n";
+            echo 'Error: ' . $e->getMessage() . "\n";
             exit(1);
         }
     }
@@ -93,15 +101,6 @@ abstract class UserInterface
                 'action'      => 'StoreString'
             )
         );
-        $parser->addOption(
-            'quiet',
-            array(
-                'short_name'  => '-q',
-                'long_name'   => '--quiet',
-                'description' => "Don't print status messages to stdout",
-                'action'      => 'StoreTrue'
-            )
-        );
         return $parser;
     }
 
@@ -113,9 +112,9 @@ abstract class UserInterface
             $this->config->daysNext    = $result->options['daysNext'];
             $this->config->daysPrev    = $result->options['daysPrev'];
             $this->config->renderer    = $result->options['renderer'];
-            $this->config->quiet       = $result->options['quiet'];
             $this->config->stopOnEmpty = $result->options['stopOnEmpty'];
             $this->config->setDate($result->options['date']);
+            return $result;
         } catch (\Exception $exc) {
             $this->preRenderParameterError();
             $parser->displayError($exc->getMessage());
@@ -144,6 +143,10 @@ abstract class UserInterface
         return new $class();
     }
 
+    protected function handleCommands($res)
+    {
+    }
+
     protected function preRenderParameterError()
     {
     }