Lines 100.00% 27 / 27
Methods 100.00% 11 / 11
Classes 100.00% 1 / 1
Name Lines Methods CRAP
 __construct 100.00% 1 / 1 100.00% 1 / 1 1
 configure 100.00% 2 / 2 100.00% 1 / 1 1
 execute 100.00% 6 / 6 100.00% 1 / 1 2
 [Stewart\Runtime\Console\ControlCommand] resolveControlTarget 100.00% 6 / 6 100.00% 1 / 1 1
 [Stewart\Runtime\Console\ControlCommand] writeCommandResult 100.00% 3 / 3 100.00% 1 / 1 2
 [Stewart\Runtime\Console\ControlCommand] parseTimeoutOption 100.00% 1 / 1 100.00% 1 / 1 1
 [Stewart\Runtime\Console\StewartCommand] findConfigOption 100.00% 1 / 1 100.00% 1 / 1 1
 [Stewart\Runtime\Console\StewartCommand] nonEmptyStringOption 100.00% 2 / 2 100.00% 1 / 1 3
 [Stewart\Runtime\Console\StewartCommand] writeMissingConfigFileNotice 100.00% 2 / 2 100.00% 1 / 1 2
 [Stewart\Runtime\Console\StewartCommand] writeNotice 100.00% 1 / 1 100.00% 1 / 1 2
 [Stewart\Runtime\Console\StewartCommand] readStringArgument 100.00% 2 / 2 100.00% 1 / 1 2
20final class WorkerRestartCommand extends ControlCommand
21{
22    public const string NAME = 'worker:restart';
23
24    public function __construct(
25        ConfigLoader $config,
26        ControlTargetResolver $targets,
27        private readonly ControlClient $client,
28    ) {
29        parent::__construct($config, $targets);
30    }
31
32    protected function configure(): void
33    {
34        parent::configure();
35        $this->addArgument('worker', InputArgument::REQUIRED, 'The worker number, as shown by stewart status');
36    }
37
38    protected function execute(InputInterface $input, OutputInterface $output): int
39    {
40        try {
41            $result = $this->client->restartWorker($this->resolveControlTarget($input), $this->readStringArgument($input, 'worker'), $this->parseTimeoutOption($input));
42        } catch (StewartException|StreamException|CancelledException $e) {
43            $output->writeln('<error>' . $e->getMessage() . '</error>');
44
45            return Command::FAILURE;
46        }
47
48        $this->writeCommandResult($output, $result);
49
50        return Command::SUCCESS;
51    }
52}

Inherited from Stewart\Runtime\Console\ControlCommand

39    protected function resolveControlTarget(InputInterface $input): ControlTarget
40    {
41        $path = $this->findConfigOption($input);
42
43        return $this->targets->resolveTarget(
44            $this->nonEmptyStringOption($input, 'address'),
45            $this->nonEmptyStringOption($input, 'token'),
46            fn(): ControlConfig => $this->config->loadConfig($path)->control,
47        );
48    }
50    protected function writeCommandResult(OutputInterface $output, CommandResult $result): void
51    {
52        $output->writeln($result->message);
53
54        if ($result->warning !== null) {
55            $this->writeNotice($output, $result->warning);
56        }
57    }
60    protected function parseTimeoutOption(InputInterface $input): Duration
61    {
62        return Duration::parse($this->nonEmptyStringOption($input, 'timeout') ?? self::DEFAULT_TIMEOUT);
63    }

Inherited from Stewart\Runtime\Console\StewartCommand

20    protected function findConfigOption(InputInterface $input): ?string
21    {
22        return $this->nonEmptyStringOption($input, 'config');
23    }
25    protected function nonEmptyStringOption(InputInterface $input, string $name): ?string
26    {
27        $value = $input->getOption($name);
28
29        return \is_string($value) && $value !== '' ? $value : null;
30    }
32    protected function writeMissingConfigFileNotice(OutputInterface $output, ?string $missingConfigFile): void
33    {
34        if ($missingConfigFile !== null) {
35            $this->writeNotice($output, \sprintf('No config file at %s; using the environment only.', $missingConfigFile));
36        }
37    }
39    protected function writeNotice(OutputInterface $output, string $notice): void
40    {
41        ($output instanceof ConsoleOutputInterface ? $output->getErrorOutput() : $output)->writeln('<comment>' . $notice . '</comment>');
42    }
44    protected function readStringArgument(InputInterface $input, string $name): string
45    {
46        $value = $input->getArgument($name);
47
48        return \is_string($value) ? $value : '';
49    }