/**
* @param string $jobName
* @param bool $force
* @return ArrayResolver
* @throws \InvalidArgumentException
*/
protected function getJobResolver($jobName, $force = false)
{
$dbJob = $this->queryJob($jobName);
if (!$dbJob) {
throw new \InvalidArgumentException('Unknown job.');
}
$finder = new PhpExecutableFinder();
$phpExecutable = $finder->find();
$rootDir = dirname($this->getContainer()->getParameter('kernel.root_dir'));
$resolver = new ArrayResolver();
if ($dbJob->getEnabled() || $force) {
$job = new ShellJob();
$job->setCommand($phpExecutable . ' app/console ' . $dbJob->getCommand(), $rootDir);
$job->setSchedule(new CrontabSchedule($dbJob->getSchedule()));
$job->raw = $dbJob;
$resolver->addJob($job);
}
return $resolver;
}