diff --git a/.phpunit.result.cache b/.phpunit.result.cache index a3f15020..4a5ded99 100644 --- a/.phpunit.result.cache +++ b/.phpunit.result.cache @@ -1 +1 @@ -{"version":1,"defects":{"Fractor\\FractorRunner\\FractorRunnerTest::test":8},"times":{"Fractor\\FractorRunner\\FractorRunnerTest::test":0.011}} \ No newline at end of file +{"version":1,"defects":{"Fractor\\FractorRunner\\FractorRunnerTest::test":8},"times":{"Fractor\\FractorRunner\\FractorRunnerTest::test":0.005}} \ No newline at end of file diff --git a/fractor/config/application.php b/fractor/config/application.php index 6e7970be..dd9815c9 100644 --- a/fractor/config/application.php +++ b/fractor/config/application.php @@ -5,9 +5,16 @@ use a9f\Fractor\Fractor\FractorRunner; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; +use Symfony\Component\DependencyInjection\ParameterBag\ContainerBag; +use Symfony\Component\DependencyInjection\ParameterBag\ContainerBagInterface; +use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; +use function Symfony\Component\DependencyInjection\Loader\Configurator\service; use function Symfony\Component\DependencyInjection\Loader\Configurator\tagged_iterator; return static function (ContainerConfigurator $containerConfigurator, ContainerBuilder $containerBuilder): void { + $parameters = $containerConfigurator->parameters(); + $parameters->set(\a9f\Fractor\Configuration\Option::PATHS, []); + $parameters->set(\a9f\Fractor\Configuration\Option::FILE_EXTENSIONS, []); $services = $containerConfigurator->services(); $services->defaults() ->autowire() @@ -22,6 +29,12 @@ ] ); + $services->set('parameter_bag', ContainerBag::class) + ->args([ + service('service_container'), + ]) + ->alias(ContainerBagInterface::class, 'parameter_bag') + ->alias(ParameterBagInterface::class, 'parameter_bag'); $services->set(FractorRunner::class)->arg('$processors', tagged_iterator('fractor.file_processor')); $services->set(FractorConfig::class) diff --git a/fractor/src/Command/ProcessCommand.php b/fractor/src/Command/ProcessCommand.php index 29cda4c2..7cf190c2 100644 --- a/fractor/src/Command/ProcessCommand.php +++ b/fractor/src/Command/ProcessCommand.php @@ -14,7 +14,7 @@ #[AsCommand('process', 'Runs Fractor with the given configuration file')] class ProcessCommand extends Command { - public function __construct(private readonly FractorConfig $config, private readonly FractorRunner $runner, private readonly ConfigurationFactory $configurationFactory) + public function __construct(private readonly FractorRunner $runner, private readonly ConfigurationFactory $configurationFactory) { parent::__construct(); } @@ -31,7 +31,7 @@ protected function configure(): void protected function execute(InputInterface $input, OutputInterface $output): int { - $this->runner->run($this->configurationFactory->createFromFractorConfig($this->config)); + $this->runner->run($this->configurationFactory->create()); return Command::SUCCESS; } diff --git a/fractor/src/Factory/ConfigurationFactory.php b/fractor/src/Factory/ConfigurationFactory.php index 8e8f3df8..313d5450 100644 --- a/fractor/src/Factory/ConfigurationFactory.php +++ b/fractor/src/Factory/ConfigurationFactory.php @@ -4,12 +4,21 @@ namespace a9f\Fractor\Factory; use a9f\Fractor\Configuration\FractorConfig; +use a9f\Fractor\Configuration\Option; use a9f\Fractor\ValueObject\Configuration; +use Symfony\Component\DependencyInjection\ParameterBag\ContainerBagInterface; -final class ConfigurationFactory +final readonly class ConfigurationFactory { - public function createFromFractorConfig(FractorConfig $fractorConfig): Configuration + public function __construct(private ContainerBagInterface $parameterBag) { - return new Configuration($fractorConfig->getFileExtensions(), $fractorConfig->getPaths()); + } + + public function create(): Configuration + { + return new Configuration( + $this->parameterBag->get(Option::FILE_EXTENSIONS), + $this->parameterBag->get(Option::PATHS), + ); } } \ No newline at end of file diff --git a/fractor/src/Testing/PHPUnit/AbstractFractorTestCase.php b/fractor/src/Testing/PHPUnit/AbstractFractorTestCase.php index b1247caf..3a190e70 100644 --- a/fractor/src/Testing/PHPUnit/AbstractFractorTestCase.php +++ b/fractor/src/Testing/PHPUnit/AbstractFractorTestCase.php @@ -43,7 +43,7 @@ protected function bootFromConfigFile(): void protected function doTest(): void { - $this->fractorRunner->run($this->getService(ConfigurationFactory::class)->createFromFractorConfig($this->getService(FractorConfig::class))); + $this->fractorRunner->run($this->getService(ConfigurationFactory::class)->create()); } /**