setName('scheduled-task:run') ->setDescription('Runs scheduled task(-s)') ->addArgument( 'scheduled_task_name', InputArgument::OPTIONAL, 'Scheduled task name' ); } /** * Executes the current command. * * @param InputInterface $input An InputInterface instance. * @param OutputInterface $output An OutputInterface instance. * * @return null|integer */ protected function execute(InputInterface $input, OutputInterface $output) { $scheduled_task_name = $input->getArgument('scheduled_task_name'); if ( !$scheduled_task_name ) { $this->Application->EventManager->runScheduledTasks(true); return 0; } if ( !in_array($scheduled_task_name, $this->getScheduledTaskNames()) ) { throw new \InvalidArgumentException('Scheduled task "' . $scheduled_task_name . '" not found'); } $scheduled_tasks = $this->Application->EventManager->getScheduledTasks(); $result = $this->Application->EventManager->runScheduledTask($scheduled_tasks[$scheduled_task_name]); return $result ? 0 : 64; } /** * Return possible values for the named option * * @param string $optionName Option name. * @param CompletionContext $context Completion context. * * @return array */ public function completeOptionValues($optionName, CompletionContext $context) { return array(); } /** * Return possible values for the named argument. * * @param string $argumentName Argument name. * @param CompletionContext $context Completion context. * * @return array */ public function completeArgumentValues($argumentName, CompletionContext $context) { if ( $argumentName === 'scheduled_task_name' ) { return $this->getScheduledTaskNames(); } return array(); } /** * Returns scheduled task names. * * @return array */ protected function getScheduledTaskNames() { $scheduled_tasks = $this->Application->EventManager->getScheduledTasks(); return array_keys($scheduled_tasks); } }