#!/usr/bin/php
<?php

if (\Phar::running()) {
    $vendorDir = 'phar://phpreflect.phar/vendor';
} else {
    $baseDir   = dirname(__DIR__);
    $vendorDir = '/usr/share/php';

    if (!getenv("REFLECT")) {
        $home  = defined('PHP_WINDOWS_VERSION_BUILD') ? 'USERPROFILE' : 'HOME';
        $files = array(
            realpath('./phpreflect.json'),
            getenv($home).'/.config/phpreflect.json',
            '/etc/phpreflect.json',
            __DIR__ . '/phpreflect.json.dist'
        );
        foreach ($files as $file) {
            if (file_exists($file)) {
                putenv("REFLECT=$file");
                break;
            }
        }
    }
}
require_once $vendorDir . '/PhpParser/Autoloader.php';
PhpParser\Autoloader::register();

require_once $vendorDir . '/Symfony/Component/ClassLoader/UniversalClassLoader.php';

require_once $vendorDir . '/PHP/Timer.php';
require_once $vendorDir . '/SebastianBergmann/Version/Version.php';

use Symfony\Component\ClassLoader\UniversalClassLoader;

$loader = new UniversalClassLoader();
$loader->registerNamespaces(array(
    'Symfony\\Component\\Finder'          => $vendorDir,
    'Symfony\\Component\\EventDispatcher' => $vendorDir,
    'Symfony\\Component\\Console'         => $vendorDir,
    'Symfony\\Component\\ClassLoader'     => $vendorDir,
    'Doctrine\\Common\\Cache'             => $vendorDir,
    'Seld\\JsonLint'                      => $vendorDir,
    'JsonSchema'                          => $vendorDir,
    'Bartlett'                            => $vendorDir,
));
$loader->useIncludePath(true);
$loader->register();

if (PHP_SAPI !== 'cli') {
    return;
}

use Bartlett\Reflect\ConsoleApplication as Application;

$application = new Application();
$application->run();
