<?php

declare(strict_types=1);

$target = getenv('POC_TARGET_ROOT');
$storeRoot = getenv('POC_STORE_ROOT');
$envFile = getenv('POC_ENV_FILE');
$port = (int)getenv('POC_HTTP_PORT');
if (!$target || (!$storeRoot && !$envFile) || $port < 1024 || $port > 65535) exit(2);
if ($envFile) {
    $env = parse_ini_file($envFile, true, INI_SCANNER_RAW);
    if (!is_array($env) || empty($env['DATABASE']) || empty($env['DATABASE_ZHCT'])) exit(2);
    foreach (['HOST' => 'HOSTNAME', 'PORT' => 'HOSTPORT', 'SCHEMA' => 'DATABASE',
        'USER' => 'USERNAME', 'PASSWORD' => 'PASSWORD'] as $targetKey => $sourceKey) {
        putenv('POC_' . $targetKey . '=' . $env['DATABASE_ZHCT'][$sourceKey]);
        putenv('POC_AI_' . $targetKey . '=' . $env['DATABASE'][$sourceKey]);
    }
} else {
    $config = require $storeRoot . '/application/database.php';
    foreach (['HOST' => 'hostname', 'PORT' => 'hostport', 'SCHEMA' => 'database',
        'USER' => 'username', 'PASSWORD' => 'password'] as $env => $key) {
        putenv('POC_' . $env . '=' . $config[$key]);
        putenv('POC_AI_' . $env . '=' . $config['ai_zhct'][$key]);
    }
}
putenv('POC_DIALECT=mysql');
pcntl_exec(PHP_BINARY, ['-S', '127.0.0.1:' . $port, '-t', $target . '/public',
    $target . '/public/index.php']);
exit(1);
