diff --git a/src/NewCommand.php b/src/NewCommand.php index 9b37c1c..34e3ae2 100644 --- a/src/NewCommand.php +++ b/src/NewCommand.php @@ -11,6 +11,7 @@ use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Process\Exception\ProcessStartFailedException; use Symfony\Component\Process\PhpExecutableFinder; use Symfony\Component\Process\Process; @@ -760,17 +761,7 @@ protected function generateAppUrl($name) */ protected function getTld() { - foreach (['herd', 'valet'] as $tool) { - $process = new Process([$tool, 'tld', '-v']); - - $process->run(); - - if ($process->isSuccessful()) { - return trim($process->getOutput()); - } - } - - return 'test'; + return $this->runOnValetOrHerd('tld') ?? 'test'; } /** @@ -792,19 +783,9 @@ protected function canResolveHostname($hostname) */ protected function isParked(string $directory) { - foreach (['herd', 'valet'] as $tool) { - $process = new Process([$tool, 'paths', '-v']); + $output = $this->runOnValetOrHerd('paths'); - $process->run(); - - if ($process->isSuccessful()) { - $output = json_decode(trim($process->getOutput())); - - return in_array(dirname($directory), $output); - } - } - - return false; + return $output !== false ? in_array(dirname($directory), json_decode($output)) : false; } /** @@ -846,6 +827,30 @@ protected function phpBinary() : 'php'; } + /** + * Runs the given command on the "herd" or "valet" CLI. + * + * @param string $command + * @return string|bool + */ + protected function runOnValetOrHerd(string $command) + { + foreach (['herd', 'valet'] as $tool) { + $process = new Process([$tool, $command, '-v']); + + try { + $process->run(); + + if ($process->isSuccessful()) { + return trim($process->getOutput()); + } + } catch (ProcessStartFailedException) { + } + } + + return false; + } + /** * Run the given commands. *