Push can now push json file

This commit is contained in:
Juan Pablo Vial
2025-07-15 22:19:07 -04:00
parent 8b3cf47762
commit 9310d65d77

View File

@ -15,7 +15,8 @@ class Push extends Console\Command\Command
protected function configure(): void protected function configure(): void
{ {
$this->addOption('configurations', 'c', Console\Input\InputOption::VALUE_REQUIRED | Console\Input\InputOption::VALUE_IS_ARRAY, 'Job configuration, must be in valid JSON format'); $this->addOption('configurations', 'c', Console\Input\InputOption::VALUE_REQUIRED | Console\Input\InputOption::VALUE_IS_ARRAY, 'Job configuration options array, each job configuration must be in valid JSON format');
$this->addOption('file', 'f', Console\Input\InputOption::VALUE_REQUIRED, 'Path to jobs configuration file with JSON array');
} }
protected function execute(Console\Input\InputInterface $input, Console\Output\OutputInterface $output): int protected function execute(Console\Input\InputInterface $input, Console\Output\OutputInterface $output): int
@ -23,8 +24,8 @@ class Push extends Console\Command\Command
$io = new Console\Style\SymfonyStyle($input, $output); $io = new Console\Style\SymfonyStyle($input, $output);
$io->title("Pushing job"); $io->title("Pushing job");
$configurations = $input->getOption('configurations'); $configurations = $this->getConfigurations($input);
if ($configurations === null) { if (count($configurations) === 0) {
$io->error('Missing configurations'); $io->error('Missing configurations');
return self::FAILURE; return self::FAILURE;
} }
@ -46,4 +47,21 @@ class Push extends Console\Command\Command
} }
return $result; return $result;
} }
protected function getConfigurations(Console\Input\InputInterface $input): array
{
$configurations = [];
$filePath = $input->getOption('file');
if ($filePath !== null and file_exists($filePath)) {
$json = file_get_contents($filePath);
if (json_validate($json)) {
$configurations = array_map(fn($configArray) => json_encode($configArray), json_decode($json, true));
}
}
$configOptions = $input->getOption('configurations');
if ($configOptions !== null) {
$configurations = array_merge($configurations, array_filter($configOptions, fn($config) => json_validate($config)));
}
return $configurations;
}
} }