1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
namespace Consigliere\Components\Commands; |
4
|
|
|
|
5
|
|
|
use Consigliere\Components\Support\Stub; |
6
|
|
|
use Consigliere\Components\Traits\ComponentCommandTrait; |
7
|
|
|
use Symfony\Component\Console\Input\InputArgument; |
8
|
|
|
|
9
|
|
|
class GenerateJobCommand extends Command |
10
|
|
|
{ |
11
|
|
|
use ComponentCommandTrait; |
12
|
|
|
|
13
|
|
|
/** |
14
|
|
|
* The console command name. |
15
|
|
|
* |
16
|
|
|
* @var string |
17
|
|
|
*/ |
18
|
|
|
protected $name = 'component:make-job'; |
19
|
|
|
|
20
|
|
|
/** |
21
|
|
|
* The console command description. |
22
|
|
|
* |
23
|
|
|
* @var string |
24
|
|
|
*/ |
25
|
|
|
protected $description = 'Generate a new Job Class for the specified component'; |
26
|
|
|
|
27
|
|
|
protected $argumentName = 'name'; |
28
|
|
|
|
29
|
|
|
/** |
30
|
|
|
* Get the console command arguments. |
31
|
|
|
* |
32
|
|
|
* @return array |
33
|
|
|
*/ |
34
|
|
|
protected function getArguments() |
35
|
|
|
{ |
36
|
|
|
return [ |
37
|
|
|
['name', InputArgument::REQUIRED, 'The name of the job.'], |
38
|
|
|
['component', InputArgument::OPTIONAL, 'The name of component will be used.'], |
39
|
|
|
]; |
40
|
|
|
} |
41
|
|
|
|
42
|
|
|
/** |
43
|
|
|
* Get template contents. |
44
|
|
|
* |
45
|
|
|
* @return string |
46
|
|
|
*/ |
47
|
|
|
protected function getTemplateContents() |
48
|
|
|
{ |
49
|
|
|
$component = $this->laravel['components']->findOrFail($this->getComponentName()); |
50
|
|
|
|
51
|
|
|
return (new Stub('/job.stub', [ |
52
|
|
|
'NAMESPACE' => $this->getClassNamespace($component), |
53
|
|
|
'CLASS' => $this->getClass(), |
54
|
|
|
]))->render(); |
55
|
|
|
} |
56
|
|
|
|
57
|
|
|
/** |
58
|
|
|
* Get the destination file path. |
59
|
|
|
* |
60
|
|
|
* @return string |
61
|
|
|
*/ |
62
|
|
|
protected function getDestinationFilePath() |
63
|
|
|
{ |
64
|
|
|
$path = $this->laravel['components']->getComponentPath($this->getComponentName()); |
65
|
|
|
|
66
|
|
|
$jobPath = $this->laravel['components']->config('paths.generator.jobs'); |
67
|
|
|
|
68
|
|
|
return $path . $jobPath . '/' . $this->getFileName() . '.php'; |
69
|
|
|
} |
70
|
|
|
|
71
|
|
|
/** |
72
|
|
|
* @return string |
73
|
|
|
*/ |
74
|
|
|
private function getFileName() |
75
|
|
|
{ |
76
|
|
|
return studly_case($this->argument('name')); |
|
|
|
|
77
|
|
|
} |
78
|
|
|
|
79
|
|
|
/** |
80
|
|
|
* @return string |
81
|
|
|
*/ |
82
|
|
|
public function getDefaultNamespace() |
83
|
|
|
{ |
84
|
|
|
return 'Jobs'; |
85
|
|
|
} |
86
|
|
|
} |
87
|
|
|
|
This check looks at variables that are passed out again to other methods.
If the outgoing method call has stricter type requirements than the method itself, an issue is raised.
An additional type check may prevent trouble.