1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
|
<?php
use function Laravel\Prompts\alert;
use function Laravel\Prompts\confirm;
use function Laravel\Prompts\error;
use function Laravel\Prompts\intro;
use function Laravel\Prompts\multiselect;
use function Laravel\Prompts\note;
use function Laravel\Prompts\outro;
use function Laravel\Prompts\password;
use function Laravel\Prompts\select;
use function Laravel\Prompts\spin;
use function Laravel\Prompts\suggest;
use function Laravel\Prompts\text;
use function Laravel\Prompts\warning;
require __DIR__.'/../vendor/autoload.php';
intro('Welcome to Laravel');
$name = suggest(
label: 'What is your name?',
placeholder: 'E.g. Taylor Otwell',
options: [
'Dries Vints',
'Guus Leeuw',
'James Brooks',
'Jess Archer',
'Joe Dixon',
'Mior Muhammad Zaki Mior Khairuddin',
'Nuno Maduro',
'Taylor Otwell',
'Tim MacDonald',
],
validate: fn ($value) => match (true) {
! $value => 'Please enter your name.',
default => null,
},
);
$path = text(
label: 'Where should we create your project?',
placeholder: 'E.g. ./laravel',
validate: fn ($value) => match (true) {
! $value => 'Please enter a path',
$value[0] !== '.' => 'Please enter a relative path',
default => null,
},
);
$password = password(
label: 'Provide a password',
validate: fn ($value) => match (true) {
! $value => 'Please enter a password.',
strlen($value) < 5 => 'Password should have at least 5 characters.',
default => null,
},
);
$type = select(
label: 'Pick a project type',
default: 'ts',
options: [
'ts' => 'TypeScript',
'js' => 'JavaScript',
],
);
$tools = multiselect(
label: 'Select additional tools.',
default: ['pint', 'eslint'],
options: [
'pint' => 'Pint',
'eslint' => 'ESLint',
'prettier' => 'Prettier',
],
validate: function ($values) {
if (count($values) === 0) {
return 'Please select at least one tool.';
}
}
);
$install = confirm(
label: 'Install dependencies?',
);
if ($install) {
spin(fn () => sleep(3), 'Installing dependencies...');
}
error('Error');
warning('Warning');
alert('Alert');
note(<<<EOT
Installation complete!
To get started, run:
cd {$path}
php artisan serve
EOT);
outro('Happy coding!');
var_dump(compact('name', 'path', 'password', 'type', 'tools', 'install'));
|