Example #1
0
 /**
  * @param JobDefinition $job
  *
  * @throws \Exception
  */
 public function runJob(JobDefinition $job)
 {
     $this->output->writeln(["\n", sprintf('<info>Running the %s job</info><comment>%s</comment>', $job->getName(), $job->getDescription() !== '' ? " > " . $job->getDescription() : '')]);
     foreach ($job->getTasks() as $task) {
         $preTaskEvent = new PreTaskEvent($job, $task);
         $this->dispatcher->dispatch(Event::PRE_TASK, $preTaskEvent);
         if ($preTaskEvent->isPropagationStopped()) {
             continue;
         }
         $service = $this->taskRegistry->findTaskByType($task->getType());
         $this->prepareServiceForTask($service, $task);
         try {
             $service->run($this->output);
         } catch (TaskRuntimeException $e) {
             if (!$task->continueOnError()) {
                 throw $e;
             }
             /** @var FormatterHelper $formatter */
             $formatter = $this->helperSet->get('formatter');
             $this->output->writeln(['', $formatter->formatBlock([sprintf('[Warning] Task: %s', $task->getType()), sprintf('%s', $e->getMessage())], 'bg=yellow;fg=black', true), '']);
         }
     }
 }
Example #2
0
 /**
  * @param string[] $names
  *
  * @throws \Exception
  * @return array
  */
 private function buildJobs(array $names)
 {
     $jobs = $this->container->getParameter('jobs');
     foreach ($names as $name) {
         if (!array_key_exists($name, $jobs)) {
             throw new BldrException(sprintf("Job `%s` does not exist. Found: %s", $name, implode(', ', array_keys($jobs))));
         }
         $jobInfo = $jobs[$name];
         $description = isset($jobInfo['description']) ? $jobInfo['description'] : "";
         $job = new JobDefinition($name, $description);
         foreach ($jobInfo['tasks'] as $taskInfo) {
             $task = new TaskDefinition($taskInfo['type']);
             $task->setContinueOnError(isset($taskInfo['continueOnError']) ? $taskInfo['continueOnError'] : false);
             unset($taskInfo['type'], $taskInfo['continueOnError']);
             $task->setParameters($taskInfo);
             $job->addTask($task);
         }
         $this->registry->addJob($job);
     }
 }
Example #3
0
 /**
  * @param string[] $names
  *
  * @return array
  */
 public function buildJobs($names)
 {
     foreach ($names as $name) {
         $jobInfo = $this->config['jobs'][$name];
         $description = isset($jobInfo['description']) ? $jobInfo['description'] : "";
         $job = new JobDefinition($name, $description);
         foreach ($jobInfo['tasks'] as $taskInfo) {
             $task = new TaskDefinition($taskInfo['type']);
             $task->setContinueOnError(isset($taskInfo['continueOnError']) ? $taskInfo['continueOnError'] : false);
             unset($taskInfo['type'], $taskInfo['continueOnError']);
             $task->setParameters($taskInfo);
             $job->addTask($task);
         }
         $this->registry->addJob($job);
     }
 }