annotate src/Console/InstallCommand.php @ 2:ac199a7a8931 default tip

Changes to the views and only defualt option is available
author luka
date Tue, 19 Aug 2025 20:32:36 -0400
parents 90e38de8f2ba
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
1 <?php
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
2
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
3 namespace Wizard\Auth\Console;
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
4
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
5 use Illuminate\Console\Command;
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
6 use Illuminate\Filesystem\Filesystem;
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
7 use Illuminate\Support\Arr;
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
8 use Illuminate\Support\Str;
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
9 use RuntimeException;
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
10 use Symfony\Component\Console\Attribute\AsCommand;
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
11 use Symfony\Component\Console\Input\InputInterface;
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
12 use Symfony\Component\Console\Output\OutputInterface;
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
13 use Symfony\Component\Finder\Finder;
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
14 use Symfony\Component\Process\PhpExecutableFinder;
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
15 use Symfony\Component\Process\Process;
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
16
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
17 use function Laravel\Prompts\confirm;
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
18 use function Laravel\Prompts\multiselect;
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
19 use function Laravel\Prompts\select;
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
20
2
ac199a7a8931 Changes to the views and only defualt option is available
luka
parents: 0
diff changeset
21 #[AsCommand(name: 'auth:install')]
ac199a7a8931 Changes to the views and only defualt option is available
luka
parents: 0
diff changeset
22 class InstallCommand extends Command
0
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
23 {
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
24 use InstallsBladeStack;
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
25
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
26 /**
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
27 * The name and signature of the console command.
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
28 *
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
29 * @var string
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
30 */
2
ac199a7a8931 Changes to the views and only defualt option is available
luka
parents: 0
diff changeset
31 protected $signature = 'auth:install';
0
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
32
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
33 /**
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
34 * The console command description.
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
35 *
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
36 * @var string
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
37 */
2
ac199a7a8931 Changes to the views and only defualt option is available
luka
parents: 0
diff changeset
38 protected $description = 'Install the Basic Auth controllers and resources';
0
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
39
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
40 /**
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
41 * Execute the console command.
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
42 *
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
43 * @return int|null
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
44 */
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
45 public function handle()
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
46 {
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
47 return $this->installBladeStack();
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
48 }
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
49
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
50 /**
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
51 * Install Breeze's tests.
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
52 *
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
53 * @return bool
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
54 */
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
55 protected function installTests()
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
56 {
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
57 (new Filesystem)->ensureDirectoryExists(base_path('tests/Feature'));
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
58
2
ac199a7a8931 Changes to the views and only defualt option is available
luka
parents: 0
diff changeset
59 (new Filesystem)->copyDirectory(__DIR__.'/../../stubs/default/tests/Feature', base_path('tests/Feature'));
0
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
60
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
61 return true;
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
62 }
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
63
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
64 /**
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
65 * Install the given middleware names into the application.
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
66 *
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
67 * @param array|string $name
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
68 * @param string $group
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
69 * @param string $modifier
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
70 * @return void
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
71 */
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
72 protected function installMiddleware($names, $group = 'web', $modifier = 'append')
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
73 {
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
74 $bootstrapApp = file_get_contents(base_path('bootstrap/app.php'));
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
75
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
76 $names = collect(Arr::wrap($names))
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
77 ->filter(fn ($name) => ! Str::contains($bootstrapApp, $name))
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
78 ->whenNotEmpty(function ($names) use ($bootstrapApp, $group, $modifier) {
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
79 $names = $names->map(fn ($name) => "$name")->implode(','.PHP_EOL.' ');
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
80
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
81 $stubs = [
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
82 '->withMiddleware(function (Middleware $middleware) {',
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
83 '->withMiddleware(function (Middleware $middleware): void {',
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
84 ];
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
85
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
86 $bootstrapApp = str_replace(
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
87 $stubs,
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
88 collect($stubs)->transform(fn ($stub) => $stub
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
89 .PHP_EOL." \$middleware->$group($modifier: ["
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
90 .PHP_EOL." $names,"
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
91 .PHP_EOL.' ]);'
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
92 .PHP_EOL
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
93 )->all(),
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
94 $bootstrapApp,
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
95 );
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
96
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
97 file_put_contents(base_path('bootstrap/app.php'), $bootstrapApp);
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
98 });
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
99 }
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
100
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
101 /**
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
102 * Install the given middleware aliases into the application.
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
103 *
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
104 * @param array $aliases
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
105 * @return void
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
106 */
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
107 protected function installMiddlewareAliases($aliases)
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
108 {
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
109 $bootstrapApp = file_get_contents(base_path('bootstrap/app.php'));
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
110
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
111 $aliases = collect($aliases)
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
112 ->filter(fn ($alias) => ! Str::contains($bootstrapApp, $alias))
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
113 ->whenNotEmpty(function ($aliases) use ($bootstrapApp) {
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
114 $aliases = $aliases->map(fn ($name, $alias) => "'$alias' => $name")->implode(','.PHP_EOL.' ');
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
115
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
116 $stubs = [
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
117 '->withMiddleware(function (Middleware $middleware) {',
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
118 '->withMiddleware(function (Middleware $middleware): void {',
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
119 ];
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
120
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
121 $bootstrapApp = str_replace(
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
122 $stubs,
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
123 collect($stubs)->transform(fn ($stub) => $stub
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
124 .PHP_EOL.' $middleware->alias(['
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
125 .PHP_EOL." $aliases,"
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
126 .PHP_EOL.' ]);'
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
127 .PHP_EOL
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
128 )->all(),
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
129 $bootstrapApp,
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
130 );
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
131
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
132 file_put_contents(base_path('bootstrap/app.php'), $bootstrapApp);
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
133 });
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
134 }
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
135
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
136 /**
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
137 * Determine if the given Composer package is installed.
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
138 *
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
139 * @param string $package
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
140 * @return bool
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
141 */
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
142 protected function hasComposerPackage($package)
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
143 {
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
144 $packages = json_decode(file_get_contents(base_path('composer.json')), true);
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
145
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
146 return array_key_exists($package, $packages['require'] ?? [])
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
147 || array_key_exists($package, $packages['require-dev'] ?? []);
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
148 }
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
149
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
150 /**
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
151 * Installs the given Composer Packages into the application.
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
152 *
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
153 * @param bool $asDev
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
154 * @return bool
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
155 */
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
156 protected function requireComposerPackages(array $packages, $asDev = false)
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
157 {
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
158 $composer = $this->option('composer');
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
159
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
160 if ($composer !== 'global') {
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
161 $command = ['php', $composer, 'require'];
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
162 }
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
163
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
164 $command = array_merge(
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
165 $command ?? ['composer', 'require'],
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
166 $packages,
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
167 $asDev ? ['--dev'] : [],
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
168 );
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
169
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
170 return (new Process($command, base_path(), ['COMPOSER_MEMORY_LIMIT' => '-1']))
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
171 ->setTimeout(null)
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
172 ->run(function ($type, $output) {
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
173 $this->output->write($output);
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
174 }) === 0;
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
175 }
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
176
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
177 /**
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
178 * Removes the given Composer Packages from the application.
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
179 *
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
180 * @param bool $asDev
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
181 * @return bool
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
182 */
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
183 protected function removeComposerPackages(array $packages, $asDev = false)
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
184 {
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
185 $composer = $this->option('composer');
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
186
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
187 if ($composer !== 'global') {
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
188 $command = ['php', $composer, 'remove'];
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
189 }
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
190
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
191 $command = array_merge(
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
192 $command ?? ['composer', 'remove'],
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
193 $packages,
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
194 $asDev ? ['--dev'] : [],
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
195 );
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
196
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
197 return (new Process($command, base_path(), ['COMPOSER_MEMORY_LIMIT' => '-1']))
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
198 ->setTimeout(null)
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
199 ->run(function ($type, $output) {
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
200 $this->output->write($output);
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
201 }) === 0;
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
202 }
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
203
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
204 /**
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
205 * Update the dependencies in the "package.json" file.
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
206 *
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
207 * @param bool $dev
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
208 * @return void
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
209 */
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
210 protected static function updateNodePackages(callable $callback, $dev = true)
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
211 {
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
212 if (! file_exists(base_path('package.json'))) {
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
213 return;
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
214 }
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
215
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
216 $configurationKey = $dev ? 'devDependencies' : 'dependencies';
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
217
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
218 $packages = json_decode(file_get_contents(base_path('package.json')), true);
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
219
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
220 $packages[$configurationKey] = $callback(
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
221 array_key_exists($configurationKey, $packages) ? $packages[$configurationKey] : [],
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
222 $configurationKey
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
223 );
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
224
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
225 ksort($packages[$configurationKey]);
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
226
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
227 file_put_contents(
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
228 base_path('package.json'),
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
229 json_encode($packages, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT).PHP_EOL
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
230 );
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
231 }
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
232
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
233 /**
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
234 * Update the scripts in the "package.json" file.
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
235 *
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
236 * @return void
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
237 */
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
238 protected static function updateNodeScripts(callable $callback)
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
239 {
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
240 if (! file_exists(base_path('package.json'))) {
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
241 return;
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
242 }
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
243
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
244 $content = json_decode(file_get_contents(base_path('package.json')), true);
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
245
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
246 $content['scripts'] = $callback(
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
247 array_key_exists('scripts', $content) ? $content['scripts'] : []
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
248 );
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
249
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
250 file_put_contents(
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
251 base_path('package.json'),
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
252 json_encode($content, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT).PHP_EOL
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
253 );
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
254 }
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
255
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
256 /**
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
257 * Delete the "node_modules" directory and remove the associated lock files.
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
258 *
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
259 * @return void
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
260 */
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
261 protected static function flushNodeModules()
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
262 {
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
263 tap(new Filesystem, function ($files) {
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
264 $files->deleteDirectory(base_path('node_modules'));
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
265
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
266 $files->delete(base_path('pnpm-lock.yaml'));
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
267 $files->delete(base_path('yarn.lock'));
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
268 $files->delete(base_path('bun.lock'));
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
269 $files->delete(base_path('bun.lockb'));
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
270 $files->delete(base_path('deno.lock'));
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
271 $files->delete(base_path('package-lock.json'));
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
272 });
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
273 }
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
274
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
275 /**
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
276 * Replace a given string within a given file.
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
277 *
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
278 * @param string $search
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
279 * @param string $replace
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
280 * @param string $path
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
281 * @return void
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
282 */
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
283 protected function replaceInFile($search, $replace, $path)
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
284 {
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
285 file_put_contents($path, str_replace($search, $replace, file_get_contents($path)));
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
286 }
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
287
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
288 /**
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
289 * Get the path to the appropriate PHP binary.
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
290 *
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
291 * @return string
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
292 */
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
293 protected function phpBinary()
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
294 {
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
295 if (function_exists('Illuminate\Support\php_binary')) {
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
296 return \Illuminate\Support\php_binary();
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
297 }
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
298
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
299 return (new PhpExecutableFinder)->find(false) ?: 'php';
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
300 }
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
301
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
302 /**
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
303 * Run the given commands.
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
304 *
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
305 * @param array $commands
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
306 * @return void
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
307 */
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
308 protected function runCommands($commands)
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
309 {
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
310 $process = Process::fromShellCommandline(implode(' && ', $commands), null, null, null, null);
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
311
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
312 if ('\\' !== DIRECTORY_SEPARATOR && file_exists('/dev/tty') && is_readable('/dev/tty')) {
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
313 try {
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
314 $process->setTty(true);
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
315 } catch (RuntimeException $e) {
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
316 $this->output->writeln(' <bg=yellow;fg=black> WARN </> '.$e->getMessage().PHP_EOL);
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
317 }
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
318 }
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
319
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
320 $process->run(function ($type, $line) {
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
321 $this->output->write(' '.$line);
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
322 });
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
323 }
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
324
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
325 /**
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
326 * Remove Tailwind dark classes from the given files.
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
327 *
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
328 * @return void
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
329 */
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
330 protected function removeDarkClasses(Finder $finder)
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
331 {
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
332 foreach ($finder as $file) {
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
333 file_put_contents($file->getPathname(), preg_replace('/\sdark:[^\s"\']+/', '', $file->getContents()));
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
334 }
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
335 }
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
336
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
337 /**
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
338 * Determine whether the project is already using Pest.
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
339 *
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
340 * @return bool
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
341 */
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
342 protected function isUsingPest()
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
343 {
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
344 return class_exists(\Pest\TestSuite::class);
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
345 }
90e38de8f2ba Initial Commit
luka
parents:
diff changeset
346 }