<?php

namespace App\Controller;

/**
 *
 */
class ConfigController
{
    private array $config;

    public function __construct(bool $quiet, bool $test = false)
    {

        if ($test) {
            $configFile = dirname(path: __DIR__, levels: 2) . "/config.json.test";
            if (!file_exists(filename: $configFile)) {
                echo 'No testing (config.json.test) config has benn setup.' . PHP_EOL;
                exit(1);
            }
        } else {
            $configFile = dirname(path: __DIR__, levels: 2) . "/config.json.local";
            if (!file_exists(filename: $configFile)) {
                $configFile = dirname(path: __DIR__, levels: 2) . "/config.json";
            }

            if (!file_exists(filename: $configFile)) {
                echo 'Missing config file' . PHP_EOL;
                if (confirm(message: 'Should I create a new config based on config.json.sample?')) {
                    copy(from: 'config.json.sample', to: 'config.json');
                    echo 'Config file has been generated. Adjust it to your needs, then proceed to database setup.' . PHP_EOL;
                } else {
                    echo 'You first have to setup the bindAPI. Bye.' . PHP_EOL;
                    exit(0);
                }
                exit(1);
            }
        }
        $configJSON = file_get_contents(filename: $configFile);

        if (json_decode(json: $configJSON) === null) {
            echo 'Config file is not valid JSON.' . PHP_EOL;
            echo $configJSON . PHP_EOL;
            exit(1);
        }

        $this->config = json_decode(json: $configJSON, associative: true);

        $this->config['quiet'] = (bool)$quiet;
        $this->config['test'] = (bool)$test;
    }

    public function getConfig(string $configKey): string
    {
        return $this->config[$configKey];
    }
}

