annotate examples/ExampleGenerator.php.stub @ 2:cf9993c5c7df

Updated .vimrc for some helper commands. updated the Base Generator Brought the controller generator into the package created an example generator, but it needs some work.
author luka
date Sun, 25 Jun 2023 14:45:15 -0400
parents
children 6468684362c2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
1 <?php
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
2
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
3 namespace App\Console\Commands;
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
4
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
5 use Symfony\Component\Console\Attribute\AsCommand;
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
6 use Wizzard\MagicForger\Generator\BaseGenerator;
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
7 use Wizzard\MagicForger\Replacer;
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
8 //use Illuminate\Console\Concerns\CreatesMatchingTest;
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
9
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
10 #[AsCommand(name: 'mf:{{ Command Name }}')]
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
11 class {{ Class Name }}Generator extends BaseGenerator
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
12 {
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
13 //use CreatesMatchingTest;
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
14
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
15 /**
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
16 * The name and signature of the console command.
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
17 *
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
18 * @var string
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
19 */
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
20 protected $name = 'mf:{{ Command Name }}';
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
21
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
22 /**
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
23 * The console command description.
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
24 *
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
25 * @var string
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
26 */
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
27 protected $description = 'Generates the {{ Class Name }} File for a table.';
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
28
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
29 /**
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
30 * The type of class being generated.
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
31 *
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
32 * @var string
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
33 */
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
34 protected $type = '{{ Class Name }}';
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
35
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
36
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
37 /**
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
38 * Execute the console command.
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
39 */
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
40 public function handle()
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
41 {
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
42
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
43
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
44 // First we need to ensure that the table exists, then we can
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
45 if (! $this->tableExists($this->getTableInput())) {
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
46 $this->components->error('The table: "'.$this->getTableInput().'" does not exist in the database.');
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
47
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
48 return false;
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
49 }
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
50
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
51 $name = $this->qualifyClass($this->getTableInput());
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
52
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
53 $path = $this->getPath($name);
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
54
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
55 $file = $this->getFile($name);
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
56
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
57 // Next, we will generate the path to the location where this class' file should get
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
58 // written. Then, we will build the class and make the proper replacements on the
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
59 // file so that it gets the correctly formatted namespace and class name.
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
60 $this->makeDirectory($path);
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
61
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
62 $this->files->put($path, $this->sortImports($this->buildClass($name)));
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
63
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
64 $info = $this->type;
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
65
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
66 if (in_array(CreatesMatchingTest::class, class_uses_recursive($this))) {
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
67 if ($this->handleTestCreation($path)) {
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
68 $info .= ' and test';
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
69 }
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
70 }
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
71
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
72 $this->components->info(sprintf('%s [%s] created successfully.', $info, $path));
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
73 }
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
74
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
75 /**
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
76 * Get the stub file for the generator.
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
77 *
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
78 * @return string
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
79 */
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
80 protected function getStub()
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
81 {
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
82 return $this->resolveStubPath('/stubs/seeder.stub');
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
83 }
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
84
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
85 /**
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
86 * Resolve the fully-qualified path to the stub.
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
87 *
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
88 * @param string $stub
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
89 * @return string
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
90 */
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
91 protected function resolveStubPath($stub)
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
92 {
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
93 return is_file($customPath = $this->laravel->basePath(trim($stub, '/')))
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
94 ? $customPath
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
95 : __DIR__.$stub;
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
96 }
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
97 /**
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
98 * Parse the class name and format according to the root namespace.
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
99 *
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
100 * @param string $name
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
101 * @return string
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
102 */
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
103 protected function qualifyClass($name)
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
104 {
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
105 $name = ltrim($name, '\\/');
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
106
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
107 $name = str_replace('/', '\\', $name);
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
108
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
109 $rootNamespace = $this->rootNamespace();
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
110
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
111 if (Str::startsWith($name, $rootNamespace)) {
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
112 return $name;
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
113 }
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
114
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
115 return $this->qualifyClass(
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
116 $this->getDefaultNamespace(trim($rootNamespace, '\\')).'\\'.$name
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
117 );
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
118 }
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
119 }
cf9993c5c7df Updated .vimrc for some helper commands.
luka
parents:
diff changeset
120