Improves init command

This commit is contained in:
Nuno Maduro
2022-09-18 11:54:07 +01:00
parent 4de7284657
commit b6598af59f
3 changed files with 35 additions and 53 deletions

View File

@ -0,0 +1 @@
<div></div>

View File

@ -4,6 +4,7 @@ declare(strict_types=1);
namespace Pest\Console;
use Pest\Support\View;
use Symfony\Component\Console\Helper\SymfonyQuestionHelper;
use Symfony\Component\Console\Input\ArrayInput;
use Symfony\Component\Console\Output\OutputInterface;
@ -15,18 +16,14 @@ use Symfony\Component\Console\Question\ConfirmationQuestion;
final class Thanks
{
/**
* The Command messages.
* The support options.
*
* @var array<int, string>
* @var array<string, string>
*/
private const FUNDING_MESSAGES = [
'',
' - Star or contribute to Pest:',
' <options=bold>https://github.com/pestphp/pest</>',
' - Tweet something about Pest on Twitter:',
' <options=bold>https://twitter.com/pestphp</>',
' - Sponsor the creator:',
' <options=bold>https://github.com/sponsors/nunomaduro</>',
'Star the project on GitHub' => 'https://github.com/pestphp/pest',
'Tweet about the project' => 'https://twitter.com/pestphp',
'Sponsor the project' => 'https://github.com/sponsors/nunomaduro',
];
/**
@ -46,7 +43,7 @@ final class Thanks
new ArrayInput([]),
$this->output,
new ConfirmationQuestion(
'Can you quickly <options=bold>star our GitHub repository</>? 🙏🏻',
' <options=bold>Would you like to show your support by starring the project on GitHub?</>',
true,
)
);
@ -63,8 +60,15 @@ final class Thanks
}
}
foreach (self::FUNDING_MESSAGES as $message) {
$this->output->writeln($message);
View::render('components.new-line');
foreach (self::FUNDING_MESSAGES as $message => $link) {
View::render('components.two-column-detail', [
'left' => $message,
'right' => $link,
]);
}
View::render('components.new-line');
}
}

View File

@ -6,6 +6,7 @@ namespace Pest\Plugins;
use Pest\Console\Thanks;
use Pest\Contracts\Plugins\HandlesArguments;
use Pest\Support\View;
use Pest\TestSuite;
use Symfony\Component\Console\Output\OutputInterface;
@ -61,61 +62,37 @@ final class Init implements HandlesArguments
$testsBaseDir = "{$this->testSuite->rootPath}/tests";
if (! is_dir($testsBaseDir)) {
if (! mkdir($testsBaseDir) && ! is_dir($testsBaseDir)) {
$this->output->writeln(sprintf(
"\n <fg=white;bg=red;options=bold> ERROR </> Directory `%s` was not created.</>",
$testsBaseDir
));
return;
}
$this->output->writeln(
' <fg=black;bg=green;options=bold> DONE </> Created `tests` directory.</>',
);
mkdir($testsBaseDir);
}
$this->output->writeln([
'',
' <fg=white;bg=blue;options=bold> INFO </> Preparing tests directory.</>',
'',
]);
foreach (self::STUBS as $from => $to) {
$fromPath = __DIR__."/../../stubs/init/{$from}";
$toPath = "{$this->testSuite->rootPath}/{$to}";
if (file_exists($toPath)) {
$this->output->writeln(sprintf(
' <fg=black;bg=yellow;options=bold> INFO </> File `%s` already exists, skipped.</>',
$to
));
View::render('components.two-column-detail', [
'left' => $to,
'right' => 'File already exists.',
]);
continue;
}
if ($from === 'phpunit.xml' && file_exists($toPath.'.dist')) {
$this->output->writeln(sprintf(
' <fg=black;bg=yellow;options=bold> INFO </> File `%s` already exists, skipped.</>',
$to.'.dist'
));
copy($fromPath, $toPath);
continue;
}
if (! copy($fromPath, $toPath)) {
$this->output->writeln(sprintf(
'<fg=black;bg=red>[WARNING] Failed to copy stub `%s` to `%s`</>',
$from,
$toPath
));
continue;
}
$this->output->writeln(sprintf(
' <fg=black;bg=green;options=bold> DONE </> Created `%s` file.</>',
$to
));
View::render('components.two-column-detail', [
'left' => $to,
'right' => 'File created.',
]);
}
$this->output->writeln(
"\n <fg=black;bg=green;options=bold> DONE </> Pest initialised.</>\n",
);
View::render('components.new-line');
(new Thanks($this->output))();