<?php

/**
 * Copyright 2021 Jeremy Presutti <Jeremy@Presutti.us>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

declare(strict_types=1);

use Feast\Autoloader;
use Feast\Main;
use Feast\ServiceContainer\ServiceContainer;

chdir(__DIR__);
if (file_exists('vendor/autoload.php')) {
    require_once('vendor/autoload.php');
};
// Set up framework
define('APPLICATION_ROOT', __DIR__ . DIRECTORY_SEPARATOR);
define('CONTROLLERS_FOLDER', 'Controllers');
define('PLUGINS_FOLDER', 'Plugins');

// Initialize autoloader
if (file_exists(APPLICATION_ROOT . 'Feast/Autoloader.php')) {
    include(APPLICATION_ROOT . 'Feast/Autoloader.php');
}
$autoLoader = new Feast\Autoloader();
$autoLoader->register();
$autoLoader->addPathMapping('Psr', ['/Feast/Psr']);
const RUN_AS = Main::RUN_AS_CLI;
require_once(APPLICATION_ROOT . 'container.php');
/** @var ServiceContainer $container */
$container->add(Autoloader::class, $autoLoader);

// Turn on all error reporting and turn ON display errors
error_reporting(-1);
ini_set('display_errors', 'true');

// END FRAMEWORK SETUP

$terminal = new Feast\Terminal();
$help = new Feast\Help($terminal, $argv);
$main = new Feast\Binary($terminal, $help);
$main->run($argv, $argv);