CronInstallCommand.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Cron\Console\Command;
  7. use Magento\Framework\Crontab\CrontabManagerInterface;
  8. use Magento\Framework\Crontab\TasksProviderInterface;
  9. use Magento\Framework\Exception\LocalizedException;
  10. use Symfony\Component\Console\Command\Command;
  11. use Symfony\Component\Console\Input\InputInterface;
  12. use Symfony\Component\Console\Output\OutputInterface;
  13. use Magento\Framework\Console\Cli;
  14. use Symfony\Component\Console\Input\InputOption;
  15. /**
  16. * CronInstallCommand installs Magento cron tasks
  17. */
  18. class CronInstallCommand extends Command
  19. {
  20. /**
  21. * @var CrontabManagerInterface
  22. */
  23. private $crontabManager;
  24. /**
  25. * @var TasksProviderInterface
  26. */
  27. private $tasksProvider;
  28. /**
  29. * @param CrontabManagerInterface $crontabManager
  30. * @param TasksProviderInterface $tasksProvider
  31. */
  32. public function __construct(
  33. CrontabManagerInterface $crontabManager,
  34. TasksProviderInterface $tasksProvider
  35. ) {
  36. $this->crontabManager = $crontabManager;
  37. $this->tasksProvider = $tasksProvider;
  38. parent::__construct();
  39. }
  40. /**
  41. * {@inheritdoc}
  42. */
  43. protected function configure()
  44. {
  45. $this->setName('cron:install')
  46. ->setDescription('Generates and installs crontab for current user')
  47. ->addOption('force', 'f', InputOption::VALUE_NONE, 'Force install tasks');
  48. parent::configure();
  49. }
  50. /**
  51. * {@inheritdoc}
  52. */
  53. protected function execute(InputInterface $input, OutputInterface $output)
  54. {
  55. if ($this->crontabManager->getTasks() && !$input->getOption('force')) {
  56. $output->writeln('<error>Crontab has already been generated and saved</error>');
  57. return Cli::RETURN_FAILURE;
  58. }
  59. try {
  60. $this->crontabManager->saveTasks($this->tasksProvider->getTasks());
  61. } catch (LocalizedException $e) {
  62. $output->writeln('<error>' . $e->getMessage() . '</error>');
  63. return Cli::RETURN_FAILURE;
  64. }
  65. $output->writeln('<info>Crontab has been generated and saved</info>');
  66. return Cli::RETURN_SUCCESS;
  67. }
  68. }