feat: improve --init command

This commit is contained in:
Nuno Maduro
2023-03-17 10:58:23 +00:00
parent 9e89fb5e23
commit 0e4cc94471
2 changed files with 17 additions and 6 deletions

View File

@ -8,6 +8,7 @@ use Pest\Bootstrappers\BootView;
use Pest\Support\View; use Pest\Support\View;
use Symfony\Component\Console\Helper\SymfonyQuestionHelper; use Symfony\Component\Console\Helper\SymfonyQuestionHelper;
use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Input\ArrayInput;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Question\ConfirmationQuestion; use Symfony\Component\Console\Question\ConfirmationQuestion;
@ -30,8 +31,10 @@ final class Thanks
/** /**
* Creates a new Console Command instance. * Creates a new Console Command instance.
*/ */
public function __construct(private readonly OutputInterface $output) public function __construct(
{ private readonly InputInterface $input,
private readonly OutputInterface $output
) {
// .. // ..
} }
@ -43,11 +46,11 @@ final class Thanks
$bootstrapper = new BootView($this->output); $bootstrapper = new BootView($this->output);
$bootstrapper->boot(); $bootstrapper->boot();
$wantsToSupport = (new SymfonyQuestionHelper())->ask( $wantsToSupport = $this->input->isInteractive() && (new SymfonyQuestionHelper())->ask(
new ArrayInput([]), new ArrayInput([]),
$this->output, $this->output,
new ConfirmationQuestion( new ConfirmationQuestion(
' <options=bold>Would you like to show your support by starring the project on GitHub?</>', ' <options=bold>Wanna show Pest some love by starring it on GitHub?</>',
true, true,
) )
); );

View File

@ -9,6 +9,7 @@ use Pest\Console\Thanks;
use Pest\Contracts\Plugins\HandlesArguments; use Pest\Contracts\Plugins\HandlesArguments;
use Pest\Support\View; use Pest\Support\View;
use Pest\TestSuite; use Pest\TestSuite;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Process\Process; use Symfony\Component\Process\Process;
@ -38,6 +39,7 @@ final class Init implements HandlesArguments
*/ */
public function __construct( public function __construct(
private readonly TestSuite $testSuite, private readonly TestSuite $testSuite,
private readonly InputInterface $input,
private readonly OutputInterface $output private readonly OutputInterface $output
) { ) {
// .. // ..
@ -54,6 +56,7 @@ final class Init implements HandlesArguments
if ($arguments[1] !== self::INIT_OPTION) { if ($arguments[1] !== self::INIT_OPTION) {
return $arguments; return $arguments;
} }
unset($arguments[1]); unset($arguments[1]);
$this->init(); $this->init();
@ -61,7 +64,10 @@ final class Init implements HandlesArguments
return array_values($arguments); return array_values($arguments);
} }
private function init(): void /**
* Initializes the tests directory.
*/
private function init(): never
{ {
$testsBaseDir = "{$this->testSuite->rootPath}/tests"; $testsBaseDir = "{$this->testSuite->rootPath}/tests";
@ -92,6 +98,8 @@ final class Init implements HandlesArguments
continue; continue;
} }
@mkdir(dirname($toPath));
copy($fromPath, $toPath); copy($fromPath, $toPath);
View::render('components.two-column-detail', [ View::render('components.two-column-detail', [
@ -102,7 +110,7 @@ final class Init implements HandlesArguments
View::render('components.new-line'); View::render('components.new-line');
(new Thanks($this->output))(); (new Thanks($this->input, $this->output))();
exit(0); exit(0);
} }