add option to specify config file
[bdrem.git] / src / bdrem / UserInterface.php
index c5e29b7..2827415 100644 (file)
@@ -9,13 +9,10 @@ abstract class UserInterface
     {
         try {
             $this->config = new Config();
     {
         try {
             $this->config = new Config();
-            $this->config->load();
-            setlocale(LC_TIME, $this->config->locale);
-
             $parser = $this->loadParameters();
             $res = $this->parseParameters($parser);
             $parser = $this->loadParameters();
             $res = $this->parseParameters($parser);
-            $this->handleCommands($res);
 
 
+            $this->config->load();
             if (!$this->config->cfgFileExists) {
                 throw new \Exception(
                     "No config file found. Looked at the following places:\n"
             if (!$this->config->cfgFileExists) {
                 throw new \Exception(
                     "No config file found. Looked at the following places:\n"
@@ -23,6 +20,9 @@ abstract class UserInterface
                 );
             }
 
                 );
             }
 
+            setlocale(LC_TIME, $this->config->locale);
+            $this->handleCommands($res);
+
             $source = $this->config->loadSource();
             $arEvents = $source->getEvents(
                 $this->config->date,
             $source = $this->config->loadSource();
             $arEvents = $source->getEvents(
                 $this->config->date,
@@ -51,7 +51,7 @@ abstract class UserInterface
                 'description' => 'Show NUM days after date',
                 'help_name'   => 'NUM',
                 'action'      => 'StoreInt',
                 'description' => 'Show NUM days after date',
                 'help_name'   => 'NUM',
                 'action'      => 'StoreInt',
-                'default'     => $this->config->daysNext,
+                'default'     => null,
             )
         );
         $parser->addOption(
             )
         );
         $parser->addOption(
@@ -62,7 +62,7 @@ abstract class UserInterface
                 'description' => 'Show NUM days before date',
                 'help_name'   => 'NUM',
                 'action'      => 'StoreInt',
                 'description' => 'Show NUM days before date',
                 'help_name'   => 'NUM',
                 'action'      => 'StoreInt',
-                'default'     => $this->config->daysPrev,
+                'default'     => null,
             )
         );
         $parser->addOption(
             )
         );
         $parser->addOption(
@@ -101,6 +101,17 @@ abstract class UserInterface
                 'action'      => 'StoreString'
             )
         );
                 'action'      => 'StoreString'
             )
         );
+        $parser->addOption(
+            'configfile',
+            array(
+                'short_name'  => '-c',
+                'long_name'   => '--config',
+                'help_name'   => 'FILE',
+                'description' => 'Path to configuration file',
+                'action'      => 'StoreString'
+            )
+        );
+
         return $parser;
     }
 
         return $parser;
     }
 
@@ -108,7 +119,11 @@ abstract class UserInterface
     {
         try {
             $result = $parser->parse();
     {
         try {
             $result = $parser->parse();
-            // do something with the result object
+
+            if ($result->options['configfile'] !== null) {
+                $this->config->cfgFiles = array($result->options['configfile']);
+            }
+
             $this->config->daysNext    = $result->options['daysNext'];
             $this->config->daysPrev    = $result->options['daysPrev'];
             $this->config->renderer    = $result->options['renderer'];
             $this->config->daysNext    = $result->options['daysNext'];
             $this->config->daysPrev    = $result->options['daysPrev'];
             $this->config->renderer    = $result->options['renderer'];