diff --git a/config/services.yml b/config/services.yml index afd00b9..75f8706 100644 --- a/config/services.yml +++ b/config/services.yml @@ -3,6 +3,9 @@ services: class: Symfony\Component\Console\Application autowire: true + app.builder: + class: Opdavies\GmailFilterBuilder\Service\Builder + app.generate.command: class: Opdavies\GmailFilterBuilder\Console\Command\GenerateCommand autowire: true diff --git a/src/Console/Command/GenerateCommand.php b/src/Console/Command/GenerateCommand.php index 70dea4e..05c256e 100644 --- a/src/Console/Command/GenerateCommand.php +++ b/src/Console/Command/GenerateCommand.php @@ -7,6 +7,7 @@ use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Console\Style\SymfonyStyle; class GenerateCommand extends Command { @@ -43,6 +44,10 @@ class GenerateCommand extends Command throw new \Exception('No filters.php file found.'); } - echo new Builder($filters); + // TOOD: Check return code. + new Builder($filters, $outputFile); + + $io = new SymfonyStyle($input, $output); + $io->success(sprintf('%s file generated.', $outputFile)); } } diff --git a/src/Service/Builder.php b/src/Service/Builder.php index 9ee9e3d..f8cf70f 100644 --- a/src/Service/Builder.php +++ b/src/Service/Builder.php @@ -3,17 +3,28 @@ namespace Opdavies\GmailFilterBuilder\Service; use Opdavies\GmailFilterBuilder\Filter; +use Symfony\Component\Filesystem\Filesystem; class Builder { + private $filesystem; + /** * @var array */ private $filters = []; - public function __construct(array $filters) - { + /** + * @var + */ + private $outputFile; + + public function __construct(array $filters, $outputFile = 'filters.xml') { + $this->filesystem = new Filesystem(); $this->filters = $filters; + $this->outputFile = $outputFile; + + $this->build(); } public function __toString() @@ -35,7 +46,9 @@ class Builder return $this->buildEntry($items); })->implode(PHP_EOL); - return collect([$prefix, $xml, $suffix])->implode(PHP_EOL); + $content = collect([$prefix, $xml, $suffix])->implode(PHP_EOL); + + $this->filesystem->dumpFile($this->outputFile, $content); } /**