You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
PhpCliProgram/tests/Application.php

33 lines
1.3 KiB
PHP

<?php
namespace jrosset\Tests;
use jrosset\CliProgram\AutoDiscovery\AutoDiscoveryDirectory;
use jrosset\CliProgram\AutoDiscovery\TAutoDiscoveryApplication;
use jrosset\CliProgram\AutoPrefix\AutoPrefixNamespaceManager;
use jrosset\CliProgram\Monolog\ConsoleOutputWithMonolog;
use Monolog\Handler\StreamHandler;
use Monolog\Logger;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
class Application extends \Symfony\Component\Console\Application {
use TAutoDiscoveryApplication;
public function __construct (string $name = 'UNKNOWN', string $version = 'UNKNOWN') {
parent::__construct($name, $version);
$spot = new AutoDiscoveryDirectory(__DIR__ . '/Commands');
$spot->getAutoPrefixManagers()->prepend(new AutoPrefixNamespaceManager('\\jrosset\\Tests\\Commands', 'test'));
$this->getAutoDiscoverySpots()->prepend($spot);
$this->addAutoDiscoveredCommands();
}
public function run (InputInterface $input = null, OutputInterface $output = null): int {
$logger = new Logger(__CLASS__);
$logger->pushHandler(new StreamHandler(__DIR__ . '/run.log', Logger::DEBUG));
return parent::run($input, $output ?? new ConsoleOutputWithMonolog($logger));
}
}