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

declare(strict_types=1);

use Aphiria\Console\StatusCode;
use Aphiria\DependencyInjection\Container;
use Aphiria\DependencyInjection\IContainer;
use Aphiria\DependencyInjection\IServiceResolver;
use Aphiria\Framework\Console\Builders\ConsoleApplicationBuilder;
use App\GlobalModule;

require __DIR__ . '/vendor/autoload.php';

// Create our DI container
$container = new Container();
Container::$globalInstance = $container;
$container->bindInstance([IServiceResolver::class, IContainer::class, Container::class], $container);

// Build and run our application
global $argv;
$globalModule = new GlobalModule($container);
$globalModule->bootstrap();
$statusCode = (new ConsoleApplicationBuilder($container))->withModule($globalModule)
    ->build()
    ->handle($argv);
exit($statusCode instanceof StatusCode ? $statusCode->value : $statusCode);
