ConsoleUI.php 868 B

12345678910111213141516171819202122232425262728293031323334353637
  1. <?php
  2. namespace App\Service\Cron\UI;
  3. use Symfony\Component\Console\Helper\ProgressBar;
  4. use Symfony\Component\Console\Output\OutputInterface;
  5. /**
  6. * Console user interface.
  7. *
  8. * Use it to make communicate cron-jobs with command output
  9. */
  10. class ConsoleUI implements CronUIInterface
  11. {
  12. protected ProgressBar $progressBar;
  13. public function __construct(
  14. private OutputInterface $output,
  15. ) {
  16. $this->progressBar = new ProgressBar($output, 0);
  17. }
  18. public function print(string $message): void
  19. {
  20. $this->output->writeln($message);
  21. }
  22. public function progress(int $i, int $total): void
  23. {
  24. $this->progressBar->setMaxSteps($total);
  25. $this->progressBar->setProgress($i);
  26. if ($i === $total) {
  27. $this->print(''); // to force a line break after the progression bar ends
  28. }
  29. }
  30. }