protected function execute(InputInterface $input, OutputInterface $output) { $vagrant = new Vagrant(); $hostList = $this->getHostList($input, $output); if ($hostList === null) { if ($input->getOption("start")) { $vagrant->commandUp(); } $vagrant->commandSsh(); } else { $count = count($hostList); # handle all boxes that match the inputStr foreach ($hostList as $host) { /** @var \Klang\App\Service\Vagrant\Host $host */ if ($host->getData("state") != 'running') { if ($input->getOption("start")) { $output->writeln(sprintf("<fg=yellow>Starting:</> %s <fg=blue>%s</>", $host->getData("name"), $host->getData("dir"))); $vagrant->commandUp($host->getData("id")); } else { $count--; $output->writeln(sprintf("<bg=red>Box %s (%s) is not running!</>", $host->getData("name"), $host->getData("dir"))); $output->writeln(sprintf("<fg=yellow>Use option --start to start it for you</>")); continue; } } $output->writeln(sprintf("<fg=yellow>Starting ssh-session to:</> %s <fg=blue>%s</>", $host->getData("name"), $host->getData("dir"))); $vagrant->commandSsh($host->getData("id")); } # print success-message if ($count) { $output->writeln(sprintf("<fg=green>Done:</> ssh-session ended for <fg=blue>%s</> %s", $count, $count > 1 ? 'boxes' : "box")); } } }
/** * @param InputInterface $input * @param OutputInterface $output * @throws \Exception * @throws \Symfony\Component\Console\Exception\ExceptionInterface * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ protected function execute(InputInterface $input, OutputInterface $output) { $vagrant = new Vagrant(); foreach ($this->actions as $action) { if (!isset($action["boxes"])) { continue; } /** @var VagrantCommand $command */ $command = $this->getApplication()->find($action["action"]); $statusInput = new ArrayInput(array("identifier" => $action["boxes"]), $command->getDefinition()); $command->run($statusInput, $output); $vagrant->flushCache(); } }
/** * Should return (one of) * array of \Klang\App\Service\Vagrant\Host * null, if no input is given (empty identifier) * * @param InputInterface $input * @param OutputInterface $output * @return null|array(\Klang\App\Service\Vagrant\Host) * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function getHostList(InputInterface $input, OutputInterface $output) { $vagrant = new Vagrant(); $inputStr = $input->getArgument("identifier"); if ($inputStr === null) { return null; } else { $hosts = []; # handle all boxes that match the inputStr foreach ($vagrant->resolveStr($inputStr) as $id) { /** @var \Klang\App\Service\Vagrant\Host $host */ $host = $vagrant->lookupBox($id); $hosts[] = $host; unset($host); } return $hosts; } }
protected function execute(InputInterface $input, OutputInterface $output) { $vagrant = new Vagrant(); $hostList = $this->getHostList($input, $output); if ($hostList === null) { $vagrant->commandHalt(); } else { $count = count($hostList); # handle all boxes that match the inputStr foreach ($hostList as $host) { /** @var \Klang\App\Service\Vagrant\Host $host */ $output->writeln(sprintf("<fg=yellow>Halting:</> %s <fg=blue>%s</>", $host->getData("name"), $host->getData("dir"))); $vagrant->commandHalt($host->getData("id")); } # print success-message if ($count) { $output->writeln(sprintf("<fg=green>Done:</> Halted <fg=blue>%s</> %s", $count, $count > 1 ? 'boxes' : "box")); } } }