<?php

require(__DIR__ . '/../../vendor/autoload.php');
require(__DIR__ . '/../../vendor/symfony/dotenv/Dotenv.php');

$isProductionCanary = getenv('PRODUCTION_CANARY') === 'true'
    || ($_ENV['PRODUCTION_CANARY'] ?? null) === 'true'
    || ($_SERVER['PRODUCTION_CANARY'] ?? null) === 'true';

$dotenv = new \Symfony\Component\Dotenv\Dotenv();
$dotenv->loadEnv(__DIR__ . ($isProductionCanary ? '/../../.env.docker' : '/../../.env'));

defined('YII_DEBUG') or define('YII_DEBUG', ($_ENV['DEBUG'] ?? false) === 'true');
defined('YII_ENV') or define('YII_ENV', $_ENV['APP_ENV'] ?? 'prod');

require(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php');
require(__DIR__ . '/../../common/config/bootstrap.php');
require(__DIR__ . '/../config/bootstrap.php');

$isLivenessProbe = ($_SERVER['ASGARD_LIVENESS_PROBE'] ?? null) === '1';

$config = yii\helpers\ArrayHelper::merge(
    require(__DIR__ . '/../../common/config/main.php'),
    file_exists(__DIR__ . '/../../common/config/main-local.php') ? require(__DIR__ . '/../../common/config/main-local.php') : [],
    require(__DIR__ . '/../../common/config/database.php'),
    require(__DIR__ . '/../../common/config/redis.php'),
    require(__DIR__ . '/../../common/config/lun.php'),
    require(__DIR__ . '/../../common/config/thirdparty.php'),
    require(__DIR__ . '/../../common/config/logs.php'),
    require(__DIR__ . '/../../common/config/mailer.php'),

    require(__DIR__ . '/../config/main.php'),
    file_exists(__DIR__ . '/../config/main-local.php') ? require(__DIR__ . '/../config/main-local.php') : []
);

if ($isLivenessProbe) {
    // Build the complete Yii application, but skip bootstraps and request
    // handlers that load data from external services. Dependency readiness
    // is checked by /readyz/.
    $config['bootstrap'] = ['log'];
    $config['components']['request']['class'] = yii\web\Request::class;
    unset($config['on ' . yii\web\Application::EVENT_BEFORE_REQUEST]);
}

$application = new yii\web\Application($config);
$application->run();
