123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- <?php
- namespace Symfony\Component\Console;
- use Symfony\Component\Console\Command\Command;
- use Symfony\Component\Console\Input\InputInterface;
- use Symfony\Component\Console\Output\OutputInterface;
- class SingleCommandApplication extends Command
- {
- private $version = 'UNKNOWN';
- private $autoExit = true;
- private $running = false;
-
- public function setVersion(string $version): self
- {
- $this->version = $version;
- return $this;
- }
-
- public function setAutoExit(bool $autoExit): self
- {
- $this->autoExit = $autoExit;
- return $this;
- }
- public function run(InputInterface $input = null, OutputInterface $output = null): int
- {
- if ($this->running) {
- return parent::run($input, $output);
- }
-
- $application = new Application($this->getName() ?: 'UNKNOWN', $this->version);
- $application->setAutoExit($this->autoExit);
-
- $this->setName($_SERVER['argv'][0]);
- $application->add($this);
- $application->setDefaultCommand($this->getName(), true);
- $this->running = true;
- try {
- $ret = $application->run($input, $output);
- } finally {
- $this->running = false;
- }
- return $ret ?? 1;
- }
- }
|