PhpBench\PhpBench::loadConfig PHP Method

loadConfig() private static method

private static loadConfig ( )
    private static function loadConfig()
    {
        global $argv;
        $configPaths = [];
        $extensions = [];
        $configOverride = [];
        foreach ($argv as $arg) {
            if ($configFile = self::parseOption($arg, 'config')) {
                if (!file_exists($configFile)) {
                    echo sprintf('Config file "%s" does not exist', $configFile) . PHP_EOL;
                    exit(1);
                }
                $configPaths = [$configFile];
            }
            if ($value = self::parseOption($arg, 'bootstrap', 'b')) {
                $configOverride['bootstrap'] = self::getBootstrapPath(getcwd(), $value);
            }
            if ($value = self::parseOption($arg, 'extension')) {
                $extensions[] = $value;
            }
            if ($value = self::parseOption($arg, 'php-binary')) {
                $configOverride['php_binary'] = $value;
            }
            if ($value = self::parseOption($arg, 'php-wrapper')) {
                $configOverride['php_wrapper'] = $value;
            }
            if ($value = self::parseOption($arg, 'php-config')) {
                $jsonParser = new JsonDecoder();
                $value = $jsonParser->decode($value);
                $configOverride['php_config'] = $value;
            }
        }
        if (empty($configPaths)) {
            $configPaths = [getcwd() . '/phpbench.json', getcwd() . '/phpbench.json.dist'];
        }
        $config = ['extensions' => [], 'bootstrap' => null];
        foreach ($configPaths as $configPath) {
            if (!file_exists($configPath)) {
                continue;
            }
            $configRaw = file_get_contents($configPath);
            try {
                $parser = new JsonParser();
                $parser->parse($configRaw);
            } catch (ParsingException $e) {
                echo 'Error parsing config file:' . PHP_EOL . PHP_EOL;
                echo $e->getMessage();
                exit(1);
            }
            $config = array_merge($config, json_decode($configRaw, true));
            $config['config_path'] = $configPath;
            if ($config['bootstrap']) {
                $config['bootstrap'] = self::getBootstrapPath(dirname($configPath), $config['bootstrap']);
            }
            break;
        }
        $config = array_merge($config, $configOverride);
        // add any manually specified extensions
        foreach ($extensions as $extension) {
            $config['extensions'][] = $extension;
        }
        return $config;
    }