<?php
declare(strict_types=1);

// orchview2 CLI entry.
// Usage:
//   php bin/console pm:generate
//   php bin/console legacy:migrate [--dry] [--only=tenants,users,sites,assets,incidents,work_orders]
//   php bin/console push:send --token=<expo_token> --title=<t> --body=<b>

define('ROOT', dirname(__DIR__));
define('DS', DIRECTORY_SEPARATOR);
require ROOT . '/vendor/autoload.php';
require ROOT . '/config/bootstrap.php';

$argv = $argv ?? [];
$cmd  = $argv[1] ?? 'help';
$rest = array_slice($argv, 2);

$run = static function (string $class, array $rest) {
    if (!class_exists($class)) {
        fwrite(STDERR, "Unknown command class: {$class}\n");
        exit(2);
    }
    exit((int) (new $class())->run($rest));
};

switch ($cmd) {
    case 'pm:generate':   $run(\App\Console\PmGenerate::class,   $rest); break;
    case 'legacy:migrate':$run(\App\Console\LegacyMigrate::class,$rest); break;
    case 'push:send':     $run(\App\Console\PushSend::class,     $rest); break;
    case 'help':
    default:
        echo "orchview2 CLI\n";
        echo "  pm:generate                    Generate WOs from due PM schedules\n";
        echo "  legacy:migrate [--dry] [--only=…]  Migrate rookpmgt_orch_view into orchview2\n";
        echo "  push:send --token=… --title=… --body=…  Send an Expo push notification\n";
        exit(0);
}
