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

use Box\Component\Console\Application;
use Box\Component\Console\Loader\Resource;
use Box\Component\Console\Loader\ResourceCollection;
use Box\Component\Console\Loader\ResourceCollectionLoader;
use Box\Component\Console\Loader\ResourceSupport;
use Box\Component\Console\Tests\DependencyInjection\Extension;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\Config\Loader\LoaderResolver;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;

// load composer autoloader
require __DIR__ . '/../Tests/autoload.php';

// create an application with a new container
$container = new ContainerBuilder();
$app = new Application($container);

// register the test extension
$container = $app->getContainer();
$extension = new Extension();

/** @var ContainerBuilder $container */
$container->registerExtension($extension);
$container->loadFromExtension($extension->getAlias());

// load test configuration if available
$locator = new FileLocator(array('.'));
$loader = new ResourceCollectionLoader(
    new LoaderResolver(
        array(
            new XmlFileLoader($container, $locator),
            new YamlFileLoader($container, $locator)
        )
    )
);

$loader->loadOptional(
    new ResourceCollection(
        array(
            new Resource('test.xml'),
            new ResourceSupport('test.xml.dist', 'test.xml'),
            new Resource('test.yml'),
            new ResourceSupport('test.yml.dist', 'test.yml')
        )
    )
);

// compile the new container
$container->compile();

// run the application without caching
$app->run();
