Skip to content

Commit

Permalink
Make Fractor config file optional in DI container
Browse files Browse the repository at this point in the history
  • Loading branch information
andreaswolf committed Sep 3, 2024
1 parent 7f3e7de commit 7eb03bf
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ public function __construct(
public function createFromInput(InputInterface $input): Configuration
{
return new Configuration(
$this->parameterBag->get('fractor_config_file'),
$this->allowedFileExtensionsResolver->resolve(),
(array) $this->parameterBag->get(Option::PATHS),
(array) $this->parameterBag->get(Option::SKIP),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
* @param string[] $skip
*/
public function __construct(
private ?string $configurationFile,
private array $fileExtensions,
private array $paths,
private array $skip,
Expand All @@ -26,6 +27,11 @@ public function __construct(
Assert::allStringNotEmpty($this->paths, 'No directories given');
}

public function getConfigurationFile(): ?string
{
return $this->configurationFile;
}

/**
* @return string[]
*/
Expand Down
9 changes: 8 additions & 1 deletion packages/fractor/src/Console/Command/ProcessCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -55,12 +55,19 @@ protected function configure(): void

protected function execute(InputInterface $input, OutputInterface $output): int
{
$io = new SymfonyStyle($input, $output);
$configuration = $this->configurationFactory->createFromInput($input);

if ($configuration->getConfigurationFile() === null) {
$io->error('No configuration file specified, cannot run Fractor.');
return Command::FAILURE;
}

$processResult = $this->runner->run(new SymfonyConsoleOutput($output), $configuration);

$outputFormat = 'console';
$outputFormatter = $this->outputFormatterCollector->getByName($outputFormat);
$outputFormatter->setSymfonyStyle(new SymfonyStyle($input, $output));
$outputFormatter->setSymfonyStyle($io);
$outputFormatter->report($processResult, $configuration);

return $this->resolveReturnCode($processResult, $configuration);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

namespace a9f\Fractor\DependencyInjection;

use a9f\Fractor\Configuration\FractorConfiguration;
use a9f\FractorExtensionInstaller\Generated\InstalledPackages;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\Console\DependencyInjection\AddConsoleCommandPass;
Expand Down Expand Up @@ -68,12 +69,17 @@ private function collectConfigFilesFromExtensions(): array

private function loadFractorConfigFile(string $fractorConfigFile, ContainerBuilder $containerBuilder): void
{
Assert::fileExists($fractorConfigFile);
if (!file_exists($fractorConfigFile)) {
$callable = (FractorConfiguration::configure());
$containerBuilder->setParameter('fractor_config_file', null);
} else {
$containerBuilder->setParameter('fractor_config_file', $fractorConfigFile);

$self = $this;
$callable = (require $fractorConfigFile);
$self = $this;
$callable = (require $fractorConfigFile);

Assert::isCallable($callable);
Assert::isCallable($callable);
}
$instanceOf = [];
/** @var callable(ContainerConfigurator $container): void $callable */
$callable(new ContainerConfigurator($containerBuilder, new PhpFileLoader($containerBuilder, new FileLocator(
Expand Down

0 comments on commit 7eb03bf

Please sign in to comment.