/var/www/cobraambalaj/vendor/laravel/sail/src/Console
NameSizeModeActions
InstallCommand.php45540644editdlrm
PublishCommand.php8430644editdlrm
Edit: /var/www/cobraambalaj/vendor/laravel/sail/src/Console/InstallCommand.php (4554B)
option('with')) { $services = $this->option('with') == 'none' ? [] : explode(',', $this->option('with')); } elseif ($this->option('no-interaction')) { $services = ['mysql', 'redis', 'selenium', 'mailhog']; } else { $services = $this->gatherServicesWithSymfonyMenu(); } $this->buildDockerCompose($services); $this->replaceEnvVariables($services); $this->info('Sail scaffolding installed successfully.'); } /** * Gather the desired Sail services using a Symfony menu. * * @return array */ protected function gatherServicesWithSymfonyMenu() { return $this->choice('Which services would you like to install?', [ 'mysql', 'pgsql', 'redis', 'memcached', 'meilisearch', 'mailhog', 'selenium', ], 0, null, true); } /** * Build the Docker Compose file. * * @param array $services * @return void */ protected function buildDockerCompose(array $services) { $depends = collect($services) ->filter(function ($service) { return in_array($service, ['mysql', 'pgsql', 'redis', 'selenium']); })->map(function ($service) { return " - {$service}"; })->whenNotEmpty(function ($collection) { return $collection->prepend('depends_on:'); })->implode("\n"); $stubs = rtrim(collect($services)->map(function ($service) { return file_get_contents(__DIR__ . "/../../stubs/{$service}.stub"); })->implode('')); $volumes = collect($services) ->filter(function ($service) { return in_array($service, ['mysql', 'pgsql', 'redis', 'meilisearch']); })->map(function ($service) { return " sail{$service}:\n driver: local"; })->whenNotEmpty(function ($collection) { return $collection->prepend('volumes:'); })->implode("\n"); $dockerCompose = file_get_contents(__DIR__ . '/../../stubs/docker-compose.stub'); $dockerCompose = str_replace('{{depends}}', empty($depends) ? '' : ' '.$depends, $dockerCompose); $dockerCompose = str_replace('{{services}}', $stubs, $dockerCompose); $dockerCompose = str_replace('{{volumes}}', $volumes, $dockerCompose); // Remove empty lines... $dockerCompose = preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n", $dockerCompose); file_put_contents($this->laravel->basePath('docker-compose.yml'), $dockerCompose); } /** * Replace the Host environment variables in the app's .env file. * * @param array $services * @return void */ protected function replaceEnvVariables(array $services) { $environment = file_get_contents($this->laravel->basePath('.env')); if (in_array('pgsql', $services)) { $environment = str_replace('DB_CONNECTION=mysql', "DB_CONNECTION=pgsql", $environment); $environment = str_replace('DB_HOST=127.0.0.1', "DB_HOST=pgsql", $environment); $environment = str_replace('DB_PORT=3306', "DB_PORT=5432", $environment); } else { $environment = str_replace('DB_HOST=127.0.0.1', "DB_HOST=mysql", $environment); } $environment = str_replace('MEMCACHED_HOST=127.0.0.1', 'MEMCACHED_HOST=memcached', $environment); $environment = str_replace('REDIS_HOST=127.0.0.1', 'REDIS_HOST=redis', $environment); if (in_array('meilisearch', $services)) { $environment .= "\nSCOUT_DRIVER=meilisearch"; $environment .= "\nMEILISEARCH_HOST=http://meilisearch:7700\n"; } file_put_contents($this->laravel->basePath('.env'), $environment); } }