From ea2be1aa19758c67d292b916ece59510cc437cb1 Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Sat, 23 Dec 2023 02:12:34 +0800 Subject: [PATCH] add windows fallback for laravel/prompts --- src/SPC/command/BaseCommand.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/SPC/command/BaseCommand.php b/src/SPC/command/BaseCommand.php index 998336e9..b29934c1 100644 --- a/src/SPC/command/BaseCommand.php +++ b/src/SPC/command/BaseCommand.php @@ -4,13 +4,17 @@ declare(strict_types=1); namespace SPC\command; +use Laravel\Prompts\ConfirmPrompt; +use Laravel\Prompts\Prompt; use Psr\Log\LogLevel; use SPC\ConsoleApplication; use SPC\exception\ExceptionHandler; use SPC\exception\WrongUsageException; use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Helper\QuestionHelper; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Console\Question\ConfirmationQuestion; use ZM\Logger\ConsoleLogger; abstract class BaseCommand extends Command @@ -78,6 +82,15 @@ abstract class BaseCommand extends Command { $this->input = $input; $this->output = $output; + + // windows fallback + Prompt::fallbackWhen(PHP_OS_FAMILY === 'Windows'); + ConfirmPrompt::fallbackUsing(function (ConfirmPrompt $prompt) use ($input, $output) { + $helper = new QuestionHelper(); + $case = $prompt->default ? ' [Y/n] ' : ' [y/N] '; + $question = new ConfirmationQuestion($prompt->label . $case, $prompt->default); + return $helper->ask($input, $output, $question); + }); if ($this->shouldExecute()) { try { return $this->handle();