#!/usr/bin/env php
<?php
use Amp\File\Filesystem;
use Amp\Loop;
use CatPaw\Amp\File\CatPawDriver;
use CatPaw\Bootstrap;
$_ENV = [
    ...$_ENV,
    ...getenv(),
];
require 'vendor/autoload.php';

[
    "e" => $entry,
    "n" => $name,
    "l" => $library,
    "r" => $resources,
    "d" => $dieOnChange,
    "w" => $watch,
    "i" => $info,
] = [
    "e" => null,
    "n" => null,
    "l" => null,
    "r" => null,
    "d" => null,
    "w" => null,
    "i" => null,
    ...getopt('e:n::l::r::d::w::i::')
];

if (isset($_ENV["CATPAW_FILE_DRIVER"]) && $_ENV["CATPAW_FILE_DRIVER"]) {
    Loop::setState(\Amp\File\Driver::class, new Filesystem(new CatPawDriver));
}

$entry       = realpath($entry ?? '');
$name        = $name      ?? 'App';
$library     = $library   ?? '';
$resources   = $resources ?? '';
$dieOnChange = false === $dieOnChange;
$watch       = false === $watch;
$info        = false === $info;
try {
    if ($watch) {
        Bootstrap::spawn(
            start: __FILE__,
            entry: $entry,
            name: $name,
            library: $library,
            info: $info,
            watch: true,
            resources: $resources,
        );
    } else {
        Bootstrap::start(
            entry: $entry,
            name: $name,
            library: $library,
            info: $info,
            dieOnChange: $dieOnChange,
            resources: $resources,
        );
    }
} catch (Throwable $e) {
    die(((string)$e).PHP_EOL);
}
