Mercurial > packages > auth
diff src/Console/InstallsBladeStack.php @ 0:90e38de8f2ba
Initial Commit
| author | luka |
|---|---|
| date | Wed, 13 Aug 2025 22:17:20 -0400 |
| parents | |
| children | a2a3059de103 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/Console/InstallsBladeStack.php Wed Aug 13 22:17:20 2025 -0400 @@ -0,0 +1,87 @@ +<?php + +namespace Wizard\Auth\Console; + +use Illuminate\Filesystem\Filesystem; +use Symfony\Component\Finder\Finder; + +trait InstallsBladeStack +{ + /** + * Install the Blade Breeze stack. + * + * @return int|null + */ + protected function installBladeStack() + { + // NPM Packages... + $this->updateNodePackages(function ($packages) { + return [ + "@popperjs/core" => "^2.11.8", + "bootstrap" => "^5.3.0", + ] + $packages; + }); + + // Controllers... + (new Filesystem)->ensureDirectoryExists(app_path('Http/Controllers')); + (new Filesystem)->copyDirectory(__DIR__.'/../../stubs/default/app/Http/Controllers', app_path('Http/Controllers')); + + // Requests... + (new Filesystem)->ensureDirectoryExists(app_path('Http/Requests')); + (new Filesystem)->copyDirectory(__DIR__.'/../../stubs/default/app/Http/Requests', app_path('Http/Requests')); + + // Views... + (new Filesystem)->ensureDirectoryExists(resource_path('views')); + (new Filesystem)->copyDirectory(__DIR__.'/../../stubs/default/resources/views', resource_path('views')); + + if (! $this->option('dark')) { + $this->removeDarkClasses((new Finder) + ->in(resource_path('views')) + ->name('*.blade.php') + ->notPath('livewire/welcome/navigation.blade.php') + ->notName('welcome.blade.php') + ); + } + + // Components... + (new Filesystem)->ensureDirectoryExists(app_path('View/Components')); + (new Filesystem)->copyDirectory(__DIR__.'/../../stubs/default/app/View/Components', app_path('View/Components')); + + // Tests... + if (! $this->installTests()) { + return 1; + } + + // Routes... + copy(__DIR__.'/../../stubs/default/routes/web.php', base_path('routes/web.php')); + copy(__DIR__.'/../../stubs/default/routes/auth.php', base_path('routes/auth.php')); + + // "Dashboard" Route... + $this->replaceInFile('/home', '/dashboard', resource_path('views/welcome.blade.php')); + $this->replaceInFile('Home', 'Dashboard', resource_path('views/welcome.blade.php')); + + // Tailwind / Vite... + copy(__DIR__.'/../../stubs/default/tailwind.config.js', base_path('tailwind.config.js')); + copy(__DIR__.'/../../stubs/default/postcss.config.js', base_path('postcss.config.js')); + copy(__DIR__.'/../../stubs/default/vite.config.js', base_path('vite.config.js')); + copy(__DIR__.'/../../stubs/default/resources/css/app.css', resource_path('css/app.css')); + copy(__DIR__.'/../../stubs/default/resources/js/app.js', resource_path('js/app.js')); + + $this->components->info('Installing and building Node dependencies.'); + + if (file_exists(base_path('pnpm-lock.yaml'))) { + $this->runCommands(['pnpm install', 'pnpm run build']); + } elseif (file_exists(base_path('yarn.lock'))) { + $this->runCommands(['yarn install', 'yarn run build']); + } elseif (file_exists(base_path('bun.lock')) || file_exists(base_path('bun.lockb'))) { + $this->runCommands(['bun install', 'bun run build']); + } elseif (file_exists(base_path('deno.lock'))) { + $this->runCommands(['deno install', 'deno task build']); + } else { + $this->runCommands(['npm install', 'npm run build']); + } + + $this->line(''); + $this->components->info('Breeze scaffolding installed successfully.'); + } +}
