#!/usr/bin/env php
<?php
$appName = 'phpReflect';

if (\Phar::running()) {
    $vendorDir = 'phar://' . strtolower($appName) . '.phar/vendor';
} else {
    $vendorDir = '/usr/share/php';
    putenv('BARTLETT_COMPATINFO_DB=/usr/share/php-bartlett-PHP-CompatInfo/compatinfo.sqlite');

    if (!getenv("BARTLETTRC")) {
        putenv("BARTLETTRC=" . strtolower($appName) . '.json');
    }
}

require_once $vendorDir . '/PhpParser/Autoloader.php';
PhpParser\Autoloader::register();

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

use Symfony\Component\ClassLoader\UniversalClassLoader;

$loader = new UniversalClassLoader();
$loader->registerNamespaces(array(
    'Symfony\\Component'                  => $vendorDir,
    'Doctrine\\Common'                    => $vendorDir,
    'phpDocumentor\\Reflection'           => $vendorDir,
    'Seld\\JsonLint'                      => $vendorDir,
    'JsonSchema'                          => $vendorDir,
    'Psr\\Log'                            => $vendorDir,
    'Monolog'                             => $vendorDir,
    'Bartlett'                            => $vendorDir,
));
$loader->useIncludePath(true);
$loader->register();

if (\Phar::running()) {
    if ($home) {
        // when optional resources are not embedded in phar distribution,
        // avoid PHP Warnings, and lookup first in global vendor dir (COMPOSER_HOME) if exists
        $classMapfiltered = $fallbackClassMap($loader->getClassMap(), 'Net_Growl');
        $loader->addClassMap($classMapfiltered);

        // try to find PEAR Net_Growl classes package in folder $fallbackNetGrowlDir (see phar-stub.php)
        $loader->add(false, $fallbackNetGrowlDir);
    }
}

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

use Bartlett\Reflect\Environment;
use Bartlett\Reflect\Console\Application;

Environment::setScanDir();

$application = new Application($appName, '3.1.1');
$application->run();
