PresetCommand.php
2.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<?php
namespace Illuminate\Foundation\Console;
use InvalidArgumentException;
use Illuminate\Console\Command;
class PresetCommand extends Command
{
/**
* The console command signature.
*
* @var string
*/
protected $signature = 'preset
{ type : The preset type (none, bootstrap, vue, react) }
{ --option=* : Pass an option to the preset command }';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Swap the front-end scaffolding for the application';
/**
* Execute the console command.
*
* @return void
*
* @throws \InvalidArgumentException
*/
public function handle()
{
if (static::hasMacro($this->argument('type'))) {
return call_user_func(static::$macros[$this->argument('type')], $this);
}
if (! in_array($this->argument('type'), ['none', 'bootstrap', 'vue', 'react'])) {
throw new InvalidArgumentException('Invalid preset.');
}
return $this->{$this->argument('type')}();
}
/**
* Install the "fresh" preset.
*
* @return void
*/
protected function none()
{
Presets\None::install();
$this->info('Frontend scaffolding removed successfully.');
}
/**
* Install the "bootstrap" preset.
*
* @return void
*/
protected function bootstrap()
{
Presets\Bootstrap::install();
$this->info('Bootstrap scaffolding installed successfully.');
$this->comment('Please run "npm install && npm run dev" to compile your fresh scaffolding.');
}
/**
* Install the "vue" preset.
*
* @return void
*/
protected function vue()
{
Presets\Vue::install();
$this->info('Vue scaffolding installed successfully.');
$this->comment('Please run "npm install && npm run dev" to compile your fresh scaffolding.');
}
/**
* Install the "react" preset.
*
* @return void
*/
protected function react()
{
Presets\React::install();
$this->info('React scaffolding installed successfully.');
$this->comment('Please run "npm install && npm run dev" to compile your fresh scaffolding.');
}
}