Add Filter options to the TestFeed command

This commit is contained in:
Lewis Dale 2024-09-20 15:36:46 +01:00
parent 78ed53d529
commit 6b053d5cb4

View File

@ -8,6 +8,7 @@ use Symfony\Component\Console\{Attribute\AsCommand,
Command\Command, Command\Command,
Input\InputArgument, Input\InputArgument,
Input\InputInterface, Input\InputInterface,
Input\InputOption,
Output\OutputInterface}; Output\OutputInterface};
use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\EntityManager; use Doctrine\ORM\EntityManager;
@ -29,9 +30,13 @@ class TestFeed extends Command
protected function configure(): void protected function configure(): void
{ {
$optional_array = InputOption::VALUE_IS_ARRAY|InputOption::VALUE_OPTIONAL;
$this $this
->addArgument("url", InputArgument::REQUIRED, "The URL of the feed to test") ->addArgument("url", InputArgument::REQUIRED, "The URL of the feed to test")
->addArgument("title", InputArgument::REQUIRED, "The title of the feed to test"); ->addArgument("title", InputArgument::REQUIRED, "The title of the feed to test")
->addOption("filter", "f", $optional_array, "Filter Types to apply to the feed", [])
->addOption("target", "t", $optional_array, "Targets to apply the filters to", [])
->addOption("value", "a", $optional_array, "Values to apply the filters to", []);
} }
protected function execute(InputInterface $input, OutputInterface $output): int protected function execute(InputInterface $input, OutputInterface $output): int
@ -50,9 +55,13 @@ class TestFeed extends Command
$feed->url = $url; $feed->url = $url;
$feed->title = $title; $feed->title = $title;
$filters = array_map(null, $input->getOption("target"), $input->getOption("filter"), $input->getOption("value"));
$feed->feedFilters = new ArrayCollection(); $feed->feedFilters = new ArrayCollection();
$feed->feedFilters->add( new FeedFilter(FilterTarget::TITLE, FilterType::INCLUDE, "[No Ads]", $feed));
$feed->feedFilters->add( new FeedFilter(FilterTarget::TITLE, FilterType::EXCLUDE, "S2", $feed)); foreach ($filters as $filter) {
$feed->feedFilters->add(new FeedFilter(FilterTarget::from($filter[0]), FilterType::from($filter[1]), $filter[2], $feed));
}
$this->em->persist($feed); $this->em->persist($feed);
$this->em->flush(); $this->em->flush();