#!/usr/bin/env php
<?php
ini_set('display_errors', '1');

/** @var \Parable\Console\App $app */
$app = require_once(__DIR__ . '/src/Framework/Bootstrap.php');

/** @var \Parable\Filesystem\Path $path */
$path = \Parable\DI\Container::get(\Parable\Filesystem\Path::class);
$path->setBasedir(BASEDIR);

$app->setName('Parable');

// Always add Help & Init
$app->addCommand(\Parable\DI\Container::get(\Parable\Console\Command\Help::class));
$app->addCommand(\Parable\DI\Container::get(\Parable\Console\Command\Init::class));

// Attempt to load commands set by the user
if (file_exists($path->getDir('app'))) {
    /** @var \Parable\Framework\Config $config */
    $config = \Parable\DI\Container::get(\Parable\Framework\Config::class)->load();
    if ($config->get('console.commands')) {
        // We don't try/catch because the dev shouldn't add non-existing classes.
        foreach ($config->get('console.commands') as $commandClassName) {
            $app->addCommand(\Parable\DI\Container::get($commandClassName));
        }
    }
}

$app->setDefaultCommand('help');
$app->run();
