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

/*
|--------------------------------------------------------------------------
| The Standalone HydeCLI Application
|--------------------------------------------------------------------------
|
| This file is the entry point for the standalone HydeCLI application.
| When called from a project directory already containing a HydePHP
| installation, it will proxy the call to that `Hyde` binary.
|
| When running in a directory with just source files, the HydeCLI
| standalone will use its internal project files to run HydePHP
| using the source files allowing for a portable project.
|
*/

// If the current directory contains a Hyde binary (that is not this file), run in proxy mode
if (file_exists(getcwd().'/hyde') && realpath(getcwd().'/hyde') !== realpath(__FILE__)) {
    return require_once getcwd().'/hyde';
}

define('LARAVEL_START', microtime(true));

/*
|--------------------------------------------------------------------------
| Register The Auto Loader
|--------------------------------------------------------------------------
|
| Composer provides a convenient, automatically generated class loader
| for our application. We just need to utilize it! We'll require it
| into the script here so that we do not have to worry about the
| loading of our classes manually. It feels great to relax.
|
*/

$autoloader = require_once __DIR__.'/vendor/autoload.php';

$app = require_once __DIR__.'/app/bootstrap.php';

/*
|--------------------------------------------------------------------------
| Run The HydeCLI Application
|--------------------------------------------------------------------------
|
| When we run the console application, the current CLI command will be
| executed in this console and the response sent back to a terminal
| or another output device for the developers. Here goes nothing!
|
*/

$kernel = $app->make(Illuminate\Contracts\Console\Kernel::class);

$status = $kernel->handle(
    $input = new Symfony\Component\Console\Input\ArgvInput,
    new Symfony\Component\Console\Output\ConsoleOutput
);

/*
|--------------------------------------------------------------------------
| Shutdown The Application
|--------------------------------------------------------------------------
|
| Once the HydeCLI has finished running, we will fire off the shutdown events
| so that any final work may be done by the application before we shut
| down the process. This is the last thing to happen to the request.
|
*/

$kernel->terminate($input, $status);

exit($status);
