#!/usr/bin/env php
<?php

use App\Kernel;
use Symfony\Bundle\FrameworkBundle\Console\Application;
use Symfony\Component\Console\Input\ArgvInput;
use Symfony\Component\Dotenv\Dotenv;
use Symfony\Component\ErrorHandler\Debug;

if (!in_array(PHP_SAPI, ['cli', 'phpdbg', 'embed'], true)) {
    echo 'Warning: The console should be invoked via the CLI version of PHP, not the ' . PHP_SAPI . ' SAPI' . PHP_EOL;
}

set_time_limit(0);

require_once dirname(__DIR__) . '/vendor/autoload_runtime.php';

if (!class_exists(Application::class) || !class_exists(Dotenv::class)) {
    throw new LogicException('You need to add "symfony/framework-bundle" and "symfony/dotenv" as Composer dependencies.');
}

return function (array $context) {
    $input = new ArgvInput();
    if (null !== $env = $input->getParameterOption(['--env', '-e'], null, true)) {
        putenv('APP_ENV=' . $_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = $env);
    }

    if ($input->hasParameterOption('--no-debug', true)) {
        putenv('APP_DEBUG=' . $_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = '0');
    }

    (new Dotenv())->bootEnv(dirname(__DIR__) . '/.env');

    if ($_SERVER['APP_DEBUG']) {
        umask(0000);

        if (class_exists(Debug::class)) {
            Debug::enable();
        }
    }

    $kernel = new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']);

    return new Application($kernel);
};
