From: Christian Weiske Date: Tue, 25 Feb 2014 06:47:24 +0000 (+0100) Subject: load config file from different locations, including phar X-Git-Tag: v0.5.0~26 X-Git-Url: https://git.cweiske.de/bdrem.git/commitdiff_plain/5f35a084b38723da7b505bc7f9b43122bc3deef5 load config file from different locations, including phar --- diff --git a/src/bdrem/Config.php b/src/bdrem/Config.php index 65e353d..a79b1b3 100644 --- a/src/bdrem/Config.php +++ b/src/bdrem/Config.php @@ -9,19 +9,37 @@ class Config public $daysNext = 7; public $locale; public $stopOnEmpty = false; + + public $cfgFiles = array(); public $cfgFileExists; public function load() { - $f = __DIR__ . '/../../data/bdrem.config.php'; - if (file_exists($f)) { - $this->cfgFileExists = true; - return $this->loadFile($f); + $this->loadConfigFilePaths(); + foreach ($this->cfgFiles as $file) { + if (file_exists($file)) { + $this->cfgFileExists = true; + return $this->loadFile($file); + } } - $this->cfgFileExists = false; } + protected function loadConfigFilePaths() + { + $pharFile = \Phar::running(); + if ($pharFile == '') { + $this->cfgFiles[] = __DIR__ . '/../../data/bdrem.config.php'; + } else { + //remove phar:// from the path + $this->cfgFiles[] = substr($pharFile, 7) . '.config.php'; + } + + //TODO: add ~/.config/bdrem.php + + $this->cfgFiles[] = '/etc/bdrem.php'; + } + protected function loadFile($filename) { include $filename; diff --git a/src/bdrem/UserInterface.php b/src/bdrem/UserInterface.php index 4e27d5d..9fd4d69 100644 --- a/src/bdrem/UserInterface.php +++ b/src/bdrem/UserInterface.php @@ -17,7 +17,10 @@ abstract class UserInterface $this->handleCommands($res); if (!$this->config->cfgFileExists) { - throw new \Exception('No config file found'); + throw new \Exception( + "No config file found. Looked at the following places:\n" + . '- ' . implode ("\n- ", $this->config->cfgFiles) + ); } $source = $this->config->loadSource();