-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMigrateMakeCommand.php
More file actions
131 lines (106 loc) · 3.08 KB
/
MigrateMakeCommand.php
File metadata and controls
131 lines (106 loc) · 3.08 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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<?php namespace Illuminate\Database\Console\Migrations;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;
use Illuminate\Database\Migrations\MigrationCreator;
class MigrateMakeCommand extends BaseCommand {
/**
* The console command name.
*
* @var string
*/
protected $name = 'migrate:make';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Create a new migration file';
/**
* The migration creator instance.
*
* @var \Illuminate\Database\Migrations\MigrationCreator
*/
protected $creator;
/**
* The path to the packages directory (vendor).
*
* @var string
*/
protected $packagePath;
/**
* Create a new migration install command instance.
*
* @param \Illuminate\Database\Migrations\MigrationCreator $creator
* @param string $packagePath
* @return void
*/
public function __construct(MigrationCreator $creator, $packagePath)
{
parent::__construct();
$this->creator = $creator;
$this->packagePath = $packagePath;
}
/**
* Execute the console command.
*
* @return int
*/
public function fire()
{
// It's possible for the developer to specify the tables to modify in this
// schema operation. The developer may also specify if this table needs
// to be freshly created so we can create the appropriate migrations.
$name = $this->input->getArgument('name');
$table = $this->input->getOption('table');
$create = $this->input->getOption('create');
if ( ! $table && is_string($create)) $table = $create;
// Now we are ready to write the migration out to disk. Once we've written
// the migration out, we will dump-autoload for the entire framework to
// make sure that the migrations are registered by the class loaders.
$this->writeMigration($name, $table, $create);
$this->call('dump-autoload');
return 0;
}
/**
* Write the migration file to disk.
*
* @param string $name
* @param string $table
* @param bool $create
* @return string
*/
protected function writeMigration($name, $table, $create)
{
$path = $this->getMigrationPath();
$file = pathinfo($this->creator->create($name, $path, $table, $create), PATHINFO_FILENAME);
$this->line("<info>Created Migration:</info> $file");
}
/**
* Get the console command arguments.
*
* @return array
*/
#[\Override]
protected function getArguments()
{
return array(
array('name', InputArgument::REQUIRED, 'The name of the migration'),
);
}
/**
* Get the console command options.
*
* @return array
*/
#[\Override]
protected function getOptions()
{
return array(
array('bench', null, InputOption::VALUE_OPTIONAL, 'The workbench the migration belongs to.', null),
array('create', null, InputOption::VALUE_OPTIONAL, 'The table to be created.'),
array('package', null, InputOption::VALUE_OPTIONAL, 'The package the migration belongs to.', null),
array('path', null, InputOption::VALUE_OPTIONAL, 'Where to store the migration.', null),
array('table', null, InputOption::VALUE_OPTIONAL, 'The table to migrate.'),
);
}
}