diff --git a/bindAPI/bin/console b/bindAPI/bin/console index a87159f..b39955b 100644 --- a/bindAPI/bin/console +++ b/bindAPI/bin/console @@ -13,8 +13,23 @@ require dirname(path: __DIR__) . '/vendor/autoload.php'; use App\Controller\BindAPI; $configFile = dirname(path: __DIR__) ."/config.json"; +if (!file_exists($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($configFile); -$config = json_decode($configJSON, associative: true); + +if (!$config = json_decode($configJSON, associative: true)) { + echo 'Error parsing the config file.' . PHP_EOL; + echo $configJSON; +} $shortOpts = 'v::'; // version $shortOpts .= "V::"; // verbose @@ -50,3 +65,47 @@ $app = new BindAPI(config: $config, argumentsCount: count($arguments), arguments $app->runCommand(); +/** + * @param String $message + * @param array $options + * @param string $default + * + * @return bool + */ +function confirm(String $message = 'Are you sure? ', array $options = ['y', 'n'], string $default ='n'): bool +{ + // first $options means true, any other false + echo $message, ' ('; + $first = true; + foreach ($options as $option) { + // mark default + if ($option == $default) { + $option = strtoupper($option); + } + if ($first) { + echo $option; + $first = false; + } else { + echo '/', $option; + } + } + echo '): '; + + $handle = fopen("php://stdin", 'r'); + $line = trim(fgetc($handle)); + fclose($handle); + + if ($line == '') { + // enter + $line = $default; + } + + if ($line == $options[0]) { + $result = true; + } else { + $result = false; + } + + return $result; +} +