#!/usr/bin/env php
<?php

$workingPath = getcwd();
$BRANCH = '6.x';

require __DIR__.'/../vendor/autoload.php';

$files = new Illuminate\Filesystem\Filesystem();

echo ">>>> Checkout branch {$BRANCH}".PHP_EOL;

$files->copy("{$workingPath}/vendor/orchestra/testbench-core/testbench.yaml", "{$workingPath}/testbench.yaml");

Illuminate\Support\Collection::make([
    ...$files->allFiles("{$workingPath}/vendor/orchestra/testbench-core/workbench/app/"),
])->flatten()
->filter(fn ($file) => is_file($file))
->each(function ($file) use ($files, $workingPath) {
    $filename = "{$workingPath}/workbench".Illuminate\Support\Str::after($file, "{$workingPath}/vendor/orchestra/testbench-core/workbench");
    $files->ensureDirectoryExists(Illuminate\Support\Str::before($filename, basename($filename)));
    $files->copy($file, $filename);
});

Illuminate\Support\Collection::make([
    ...$files->allFiles("{$workingPath}/vendor/orchestra/testbench-core/workbench/config/"),
    ...$files->allFiles("{$workingPath}/vendor/orchestra/testbench-core/workbench/routes/"),
    ...$files->allFiles("{$workingPath}/vendor/orchestra/testbench-core/workbench/resources/"),
])->flatten()
->filter(fn ($file) => is_file($file))
->each(function ($file) use ($files, $workingPath) {
    $filename = "{$workingPath}/workbench".Illuminate\Support\Str::after($file, "{$workingPath}/vendor/orchestra/testbench-core/workbench");
    $files->ensureDirectoryExists(Illuminate\Support\Str::before($filename, basename($filename)));
    $files->copy($file, $filename);
});

transform([
    "  - workbench/database/migrations" => "  - vendor/orchestra/testbench-core/workbench/database/migrations",
], function ($changes) use ($files, $workingPath) {
    $files->replaceInFile(array_keys($changes), array_values($changes), "{$workingPath}/testbench.yaml");
});
