#!/usr/bin/env php
<?php
/**
 * @package Veneer
 * @license http://opensource.org/licenses/MIT
 */

declare(strict_types=1);

namespace DecodeLabs\Veneer;

use DecodeLabs\Veneer\Stub\Generator;

require_once $_composer_autoload_path ?? __DIR__ . '/../vendor/autoload.php';

// Load source generator
if (is_file($genPath = __DIR__ . '/../src/Veneer/Stub/Generator.php')) {
    require_once $genPath;
}

$stubDir = $_SERVER['argv'][1] ?? 'stubs/';
$scanDir = getcwd();

// Scan
$generator = new Generator($scanDir, $stubDir);
$bindings = $generator->scan();

function colorOut(int|string $color, string $message): void
{
    echo sprintf("\e[%sm%s\e[%sm", $color, $message, '39;22');
}

if (empty($bindings)) {
    colorOut('91;1', 'There are no Veneer bindings to stub');
    echo "\n";
    exit;
}


echo "\n";

foreach ($bindings as $binding) {
    colorOut(95, $binding->getProviderClass().' ');

    $generator->generate($binding);

    colorOut('92;1', '✓ done');
    echo "\n";
}

echo "\n";

exit;
