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

declare(strict_types=1);

use DaveLiddament\TestSplitter\CliArgumentParser;
use DaveLiddament\TestSplitter\InvalidArgumentsException;
use DaveLiddament\TestSplitter\TestClassSplitter;
use DaveLiddament\TestSplitter\TestNameExtractor;


function loadAutoloader(): void
{
    $autoloaderLocations = [
        __DIR__ . '/vendor/autoload.php',
        __DIR__ . '/../../autoload.php',
    ];

    foreach($autoloaderLocations as $autoloaderLocation) {
        if (file_exists($autoloaderLocation)) {
            require($autoloaderLocation);
            return;
        }
    }

    die("Can not find autoloader");
}

loadAutoloader();

try {
    $cliArgumentParser = new CliArgumentParser($argv);
} catch (InvalidArgumentsException $e) {
    printf("\n\nError: %s\n\n Usage: %s <set> <of>\n\n", $e->getMessage(), $argv[0]);
    exit(1);
}

$stdIn = stream_get_contents(STDIN);

$testNameExtractor = new TestNameExtractor();

$testClassSplitter = new TestClassSplitter($testNameExtractor->getDeDupedTestClassNames($stdIn));

$output = join('|', $testClassSplitter->getTestCaseNames($cliArgumentParser->getNumerator(), $cliArgumentParser->getDenominator()));

echo $output;
