#!/usr/bin/env php
<?php
/**
 * @author Damian Glinkowski <damianglinkowski@gmail.com>
 */

$appPath = file_exists(__DIR__ . '/../../../autoload.php') ?
    __DIR__ . '/../../../..' :
    __DIR__ . '/..';

$loader = require_once $appPath . '/vendor/autoload.php';

use d0niek\Generic\Command\ArrayGeneratorCommand;
use d0niek\Generic\Command\ExamplesGeneratorCommand;
use d0niek\Generic\Command\VectorGeneratorCommand;
use d0niek\Generic\Command\RegeneratCollectionsCommand;
use d0niek\Generic\Repository\JsonGenericCollectionRepository;
use d0niek\Generic\Service\CollectionWriter;
use d0niek\Generic\Service\CollectionRender;
use d0niek\Generic\Service\CollectionGenerator;
use Symfony\Component\Console\Application;

$collectionRender = new CollectionRender(__DIR__ . '/..');
$collectionWriter = new CollectionWriter($loader);
$genericCollectionRepository = new JsonGenericCollectionRepository($appPath . '/generated-collections.json');
$collectionGenerator = new CollectionGenerator($collectionRender, $collectionWriter, $genericCollectionRepository);

$app = new Application();
$app->add(new ArrayGeneratorCommand($collectionGenerator));
$app->add(new ExamplesGeneratorCommand($collectionGenerator));
$app->add(new VectorGeneratorCommand($collectionGenerator));
$app->add(new RegeneratCollectionsCommand($collectionGenerator));

$app->run();
