- Reverts the schneespur/ subdirectory restructure (b8e426b)
- Restores package.json and vite.config.js (needed for npm build, were
removed in an earlier cleanup before the restructure)
- Updates public/build/ assets with current Vite output (new content hashes)
107 lines
2.4 KiB
PHP
107 lines
2.4 KiB
PHP
<?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'));
|