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

use CodeIgniter\Config\DotEnv;

// Valid PHP Version?
$minPHPVersion = '7.4';
if (version_compare(PHP_VERSION, $minPHPVersion, '<'))
{
	die("Your PHP version must be {$minPHPVersion} or higher to run CodeIgniter. Current version: " . PHP_VERSION);
}
unset($minPHPVersion);

/*
 * --------------------------------------------------------------------
 * CodeIgniter command-line tools
 * --------------------------------------------------------------------
 * The main entry point into the CLI system and allows you to run
 * commands and perform maintenance on your application.
 *
 * Because CodeIgniter can handle CLI requests as just another web request
 * this class mainly acts as a passthru to the framework itself.
 */

define('SPARKED', true);

/*
 *---------------------------------------------------------------
 * BOOTSTRAP THE APPLICATION
 *---------------------------------------------------------------
 * This process sets up the path constants, loads and registers
 * our autoloader, along with Composer's, loads our constants
 * and fires up an environment-specific bootstrapping.
 */

// Refuse to run when called from php-cgi
if (strpos(PHP_SAPI, 'cgi') === 0)
{
	die("The cli tool is not supported when running php-cgi. It needs php-cli to function!\n\n");
}

// Path to Composer's autoload
define('COMPOSER_PATH', __DIR__ . '/vendor/autoload.php');

// Path to the front controller
define('FCPATH', __DIR__ . '/vendor/codeigniter4/codeigniter4/public' . DIRECTORY_SEPARATOR);

// Load our paths config file
require realpath(__DIR__.'/vendor/codeigniter4/codeigniter4/app/Config/Paths.php') ?: __DIR__.'/vendor/codeigniter4/codeigniter4/app/Config/Paths.php';
// ^^^ Change this line if you move your application folder

$paths = new Config\Paths();

// Ensure the current directory is pointing to the front controller's directory
chdir(FCPATH);

$bootstrap = rtrim($paths->systemDirectory, '\\/ ') . DIRECTORY_SEPARATOR . 'bootstrap.php';
$app       = require realpath($bootstrap) ?: $bootstrap;

$dotenv = new DotEnv(__DIR__);
$dotenv->load();

// Grab our Console
$console = new CodeIgniter\CLI\Console($app);

// We want errors to be shown when using it from the CLI.
error_reporting(-1);
ini_set('display_errors', '1');

// Show basic information before we do anything else.
$console->showHeader();

// fire off the command in the main framework.
$response = $console->run();
if ($response->getStatusCode() >= 300)
{
	exit($response->getStatusCode());
}
