![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/demo.cartinsight.co/vendor/orchestra/workbench/src/Console/ |
<?php namespace Orchestra\Workbench\Console; use Illuminate\Console\Command; use Illuminate\Filesystem\Filesystem; use Illuminate\Support\Collection; use Orchestra\Testbench\Foundation\Console\Actions\GeneratesFile; use Symfony\Component\Console\Attribute\AsCommand; #[AsCommand(name: 'workbench:devtool', description: 'Configure Workbench for package development')] class DevToolCommand extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'workbench:devtool {--force : Overwrite any existing files}'; /** * The console command description. * * @var string */ protected $description = 'Configure Workbench for package development'; /** * Execute the console command. * * @return int */ public function handle(Filesystem $filesystem) { /** @phpstan-ignore-next-line */ $workingPath = TESTBENCH_WORKING_PATH; $this->copyTestbenchConfigurationFile($filesystem, $workingPath); $this->copyTestbenchDotEnvFile($filesystem, $workingPath); $this->call('workbench:create-sqlite-db', ['--force' => true]); return Command::SUCCESS; } /** * Copy the "testbench.yaml" file. */ protected function copyTestbenchConfigurationFile(Filesystem $filesystem, string $workingPath): void { $from = (string) realpath(__DIR__.'/stubs/testbench.yaml'); $to = "{$workingPath}/testbench.yaml"; (new GeneratesFile( filesystem: $filesystem, components: $this->components, force: (bool) $this->option('force'), ))->handle($from, $to); } /** * Copy the ".env" file. */ protected function copyTestbenchDotEnvFile(Filesystem $filesystem, string $workingPath): void { $workbenchWorkingPath = "{$workingPath}/workbench"; $from = $this->laravel->basePath('.env.example'); if (! $filesystem->exists($from)) { return; } $choices = Collection::make($this->environmentFiles()) ->filter(fn ($file) => ! $filesystem->exists("{$workbenchWorkingPath}/{$file}")) ->values() ->prepend('Skip exporting .env') ->all(); if (! $this->option('force') && empty($choices)) { $this->components->twoColumnDetail( 'File [.env] already exists', '<fg=yellow;options=bold>SKIPPED</>' ); return; } $choice = $this->components->choice( "Export '.env' file as?", $choices, ); if ($choice === 'Skip exporting .env') { return; } $to = "{$workbenchWorkingPath}/{$choice}"; (new GeneratesFile( filesystem: $filesystem, components: $this->components, force: (bool) $this->option('force'), ))->handle($from, $to); (new GeneratesFile( filesystem: $filesystem, force: (bool) $this->option('force'), ))->handle((string) realpath(__DIR__.'/stubs/workbench.gitignore'), "{$workbenchWorkingPath}/.gitignore"); } /** * Get possible environment files. * * @return array<int, string> */ protected function environmentFiles(): array { $environmentFile = \defined('TESTBENCH_DUSK') && TESTBENCH_DUSK === true ? '.env.dusk' : '.env'; return [ $environmentFile, "{$environmentFile}.example", "{$environmentFile}.dist", ]; } }