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

use Symfony\Component\Console\Input\InputOption;

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

$app = new Symfony\Component\Console\Application('Acacha llum illuminates your laravel packages', '1.1.2');

// Add global Options to the Application
$app->getDefinition()->addOptions([
    new InputOption('--no-bash', '-B', InputOption::VALUE_NONE,
        'Does not use bash for modifying config/app.php file. Use stubs instead'),
]);

$app->add(new Acacha\Llum\Console\AliasCommand());
$app->add(new Acacha\Llum\Console\BootCommand);
$app->add(new Acacha\Llum\Console\ConfigCommand());
$app->add(new Acacha\Llum\Console\DebugBarCommand);
$app->add(new Acacha\Llum\Console\DevToolsCommand);
$app->add(new Acacha\Llum\Console\IdeHelperCommand);
$app->add(new Acacha\Llum\Console\MigrateCommand);
$app->add(new Acacha\Llum\Console\PackageCommand());
$app->add(new Acacha\Llum\Console\PackageListCommand());
$app->add(new Acacha\Llum\Console\ProviderCommand);
$app->add(new Acacha\Llum\Console\ServeCommand);
$app->add(new Acacha\Llum\Console\ServiceCommand);
$app->add(new Acacha\Llum\Console\SqliteCommand);
$app->add(new Acacha\Llum\Console\SqliteEnvCommand);
$app->add(new Acacha\Llum\Console\SqliteTouchCommand);
$app->add(
    new Acacha\Llum\Console\InitCommand(
        new \Acacha\Llum\Filesystem\Filesystem(),
        new \Acacha\Llum\Compiler\RCFileCompiler(),
        new \Acacha\Llum\Github\GithubAPI(
            new \Acacha\Llum\Filesystem\Filesystem()
        )));
$app->add(
    new Acacha\Llum\Console\GithubRepoCommand(
        new \Acacha\Llum\Github\GithubAPI(
            new \Acacha\Llum\Filesystem\Filesystem()
        ),
        new \Acacha\Llum\Parser\LlumRCParser(
            new \Acacha\Llum\LlumRCFile()
        )));

$app->add(
    new Acacha\Llum\Console\GithubInitCommand(
        new \Acacha\Llum\Parser\LlumRCParser(
            new \Acacha\Llum\LlumRCFile()
        )
    ));

$app->run();
