#!/usr/bin/php
<?php

if (file_exists(__DIR__.'/../../autoload.php')) {
    require __DIR__.'/../../autoload.php';
} else {
    require __DIR__.'/vendor/autoload.php';
}

$default           = ["f" => "", "t" => "", "dead-code" => false];
$opts              = getopt("f:t:", ["dead-code"]);
$opts["dead-code"] = isset($opts["dead-code"]) ? true : false;
$opts              = array_merge($default, $opts);

$fromFolder = $opts["f"];
$toFolder   = $opts["t"];
$deadCode   = $opts["dead-code"];

$toFolder = is_string($toFolder) ? [$toFolder] : $toFolder;

if (!file_exists($fromFolder)) {
    $fromFolder = getcwd();
}

$unused = [];

foreach ($toFolder as $folder) {
    $filter = new CapsLockStudio\FilterClass\ClassAnalyzer([
        "fromPath" => $fromFolder,
        "toPath"   => $folder,
    ]);

    $filter->analyze();

    if ($deadCode) {
        $unused[] = $filter->getUnusedCode();
        $filter->setShowOutputAfterCreatedFlag(false);
    } else {
        $filter->setShowOutputAfterCreatedFlag(true);
    }
}

$processed = [];
foreach ($unused as $code) {
    foreach ($code as $class => $method) {
        $processed[$class] = isset($processed[$class]) ? $processed[$class] : $method;
        $processed[$class] = array_intersect($processed[$class], $method);
    }
}

foreach ($processed as $class => $methods) {
    if ($methods) {
        echo "{$class}:", PHP_EOL;
        foreach ($methods as $method) {
            echo "\t{$method}", PHP_EOL;
        }

        echo PHP_EOL;
    }
}
