diff --git a/src/Config.php b/src/Config.php index 65b4282..4643a73 100644 --- a/src/Config.php +++ b/src/Config.php @@ -13,10 +13,16 @@ class Config { protected $config; + protected $custom = false; + public function __construct() { $this->config = []; $this->loadFile(__DIR__.'/../'.'config.yml'); + if ($this->getApplicationConfigFile()) { + $this->loadFile($this->getApplicationConfigFile()); + $this->custom = true; + } $this->loadFile($this->getBaseConfigDirectory().'messages.yml'); $this->loadFile($this->getUserHomeDirectory().'messages.yml'); } @@ -57,6 +63,11 @@ public function get($key, $default = '') return $config; } + public function getApplicationDirectory() + { + return getcwd() . '/'; + } + public function getBaseConfigDirectory() { return __DIR__.'/../config/'; @@ -72,8 +83,27 @@ public function getUserHomeDirectory() return rtrim(getenv('HOME') ?: getenv('USERPROFILE'), '/\\'); } + public function getApplicationConfigFile() + { + $configFile = $this->getApplicationDirectory() .'phpqa.yml'; + if (file_exists($configFile)) { + return $configFile; + } + + $configFile = $this->getApplicationDirectory() .'phpqa.yml.dist'; + if (file_exists($configFile)) { + return $configFile; + } + + return null; + } + public function loadProjectConfiguration($project) { + if ($this->custom) { + return; + } + $configFile = $this->getUserConfigDirectory().$project.'/config.yml'; if (file_exists($configFile)) { $this->loadFile($configFile); @@ -100,12 +130,12 @@ public function getProjectAnalyzerConfigFile($project, $analyzer) $analyserConfigOption = key($analyserConfig); $analyserConfigFile = current($analyserConfig); - $configFile = __DIR__.'/../'.$analyserConfigFile; + $configFile = $this->getApplicationDirectory().$analyserConfigFile; if (file_exists($configFile)) { return '--'.$analyserConfigOption.'='.$configFile; } - $configFile = getcwd().'/'.$analyserConfigFile; + $configFile = __DIR__.'/../'.$analyserConfigFile; if (file_exists($configFile)) { return '--'.$analyserConfigOption.'='.$configFile; } @@ -127,9 +157,4 @@ public function getProjectAnalyzerConfigFile($project, $analyzer) return '--'.$analyserConfigOption.'='.$analyserConfigFile; } - - public function getConfigData() - { - return $this->config; - } }