Completed
Push — master ( a3e3d2...e43489 )
by Fumio
08:18
created

Generator::generateLaravel5()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 79
Code Lines 51

Duplication

Lines 18
Ratio 22.78 %

Code Coverage

Tests 53
CRAP Score 1

Importance

Changes 5
Bugs 0 Features 0
Metric Value
c 5
b 0
f 0
dl 18
loc 79
ccs 53
cts 53
cp 1
rs 8.8701
cc 1
eloc 51
nc 1
nop 2
crap 1

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
namespace Jumilla\Addomnipot\Laravel;
4
5
use Jumilla\Generators\Php\Constant;
6
use Jumilla\Generators\Php\ClassName;
7
use Jumilla\Generators\FileGenerator;
8
9
class Generator
10
{
11
    /**
12
     * @param string $path
13
     * @param string $type
14
     * @param array  $properties
15
     */
16 19
    public function generateAddon($path, $type, array $properties)
17
    {
18 19
        $generator = FileGenerator::make($path, __DIR__.'/stubs/'.$type);
19
20 19
        $method = 'generate'.studly_case($type);
21
22 19
        call_user_func([$this, $method], $generator, $properties);
23 19
    }
24
25 8
    protected function generateMinimum(FileGenerator $generator, array $properties)
26
    {
27 8
        $generator->directory('classes')
28 8
            ->file('AddonServiceProvider.php')->template('AddonServiceProvider.php', $properties);
29
30 8
        $this->generateAddonConfig($generator, $properties['namespace'], [
31 8
            'namespace' => new Constant('__NAMESPACE__'),
32
            'directories' => [
33 8
                'classes',
34 8
            ],
35
            'paths' => [
36 8
            ],
37
            'providers' => [
38 8
                new ClassName('AddonServiceProvider'),
39 8
            ],
40 8
        ]);
41 8
    }
42
43 3
    protected function generateSimple(FileGenerator $generator, array $properties)
44
    {
45
        $generator->directory('classes', function ($generator) use ($properties) {
46 3
            $generator->directory('Providers')
47 2
                ->file('AddonServiceProvider.php')->template('AddonServiceProvider.php', $properties);
48 2
            $generator->directory('Providers')
49 2
                ->file('RouteServiceProvider.php')->template('RouteServiceProvider.php', $properties);
50
51 2
            $generator->directory('Http')->phpBlankFile('routes.php');
52 2
            $generator->keepDirectory('Http/Controllers');
53
54 2
            $generator->keepDirectory('Services');
55 2
        });
56
57 2
        $generator->keepDirectory('config');
58
59
        $this->generateLang($generator, $properties, function ($generator) use ($properties) {
60
            $generator->gitKeepFile();
61 2
        });
62 2
63
        $generator->keepDirectory('views');
64 2
65 2
        $generator->phpBlankFile('helpers.php');
66
67 2
        $this->generateAddonConfig($generator, $properties['namespace'], [
68
            'namespace' => new Constant('__NAMESPACE__'),
69 2
            'directories' => [
70 2
                'classes',
71
            ],
72 2
            'files' => [
73 2
                'helpers.php',
74
            ],
75 2
            'paths' => [
76 2
                'config' => 'config',
77
                'lang' => 'lang',
78 2
                'views' => 'views',
79 2
            ],
80 2
            'providers' => [
81 2
                new ClassName('Providers\AddonServiceProvider'),
82
                new ClassName('Providers\RouteServiceProvider'),
83 2
            ],
84 2
            'http' => [
85 2
                'middlewares' => [
86
                ],
87 2
                'route_middlewares' => [
88 2
                ],
89 2
            ],
90 2
            'routes' => [
91
                'domain' => new Constant("env('APP_ADDON_DOMAIN')"),
92 2
                'prefix' => new Constant("env('APP_ADDON_PATH', '".$properties['addon_name']."')"),
93
                'middleware' => [],
94
                'files' => [
95 2
                    'classes/Http/routes.php'
96
                ],
97 2
            ],
98 2
        ]);
99 2
    }
100 2
101
    protected function generateLibrary(FileGenerator $generator, array $properties)
102 2
    {
103
        $generator->directory('classes', function ($generator) use ($properties) {
104 2
            $migration_class = $properties['addon_class'].'_1_0';
105 2
106 2
            $generator->directory('Providers')
107
                ->file('AddonServiceProvider.php')->template('AddonServiceProvider.php', $properties);
108 2
            $generator->directory('Providers')
109 2
                ->file('DatabaseServiceProvider.php')->template('DatabaseServiceProvider.php', array_merge($properties, ['migration_class_name' => $migration_class]));
110
111 2
            $generator->keepDirectory('Console/Commands');
112
113
            $generator->directory('Database/Migrations')
114
                ->file($migration_class.'.php')->template('Migration.php', array_merge($properties, ['class_name' => $migration_class]));
115 2
            $generator->keepDirectory('Database/Seeds');
116 2
117 2
            $generator->keepDirectory('Services');
118
        });
119
120 2
        $generator->keepDirectory('config');
121 2
122
        $this->generateLang($generator, $properties, function ($generator) use ($properties) {
123 2
            $generator->phpConfigFile('messages.php', []);
124
        });
125 2
126 2
        $generator->directory('tests', function ($generator) use ($properties) {
127
            $generator->file('TestCase.php')->template('TestCase.php', $properties);
128 2
        });
129 2
130
        $generator->phpBlankFile('helpers.php');
131 2
132 2
        $this->generateAddonConfig($generator, $properties['namespace'], [
133
            'namespace' => new Constant('__NAMESPACE__'),
134 2
            'directories' => [
135 2
                'classes',
136 2
            ],
137
            'files' => [
138 2
                'helpers.php',
139 2
            ],
140 2
            'paths' => [
141 2
                'config' => 'config',
142 2
                'lang' => 'lang',
143
                'tests' => 'tests',
144 2
            ],
145
            'providers' => [
146
                new ClassName('Providers\AddonServiceProvider'),
147 2
                new ClassName('Providers\DatabaseServiceProvider'),
148 2
            ],
149 2
        ]);
150 2
    }
151
152 2
    protected function generateApi(FileGenerator $generator, array $properties)
153
    {
154 2
        $generator->directory('classes', function ($generator) use ($properties) {
155 2
            $generator->directory('Providers')
156 2
                ->file('AddonServiceProvider.php')->template('AddonServiceProvider.php', $properties);
157 2
            $generator->directory('Providers')
158 2
                ->file('RouteServiceProvider.php')->template('RouteServiceProvider.php', $properties);
159
160 2
            $generator->keepDirectory('Console/Commands');
161 2
162
            $generator->directory('Http')
163 2
                ->file('routes.php')->template('routes.php', $properties);
164
            $generator->directory('Http/Controllers')
165
                ->file('Controller.php')->template('Controller.php', $properties);
166
            $generator->keepDirectory('Http/Middleware');
167 2
168 2
            $generator->keepDirectory('Services');
169 2
        });
170 2
171
        $generator->keepDirectory('config');
172 2
173 2
        $this->generateLang($generator, $properties, function ($generator) use ($properties) {
174
            $generator->phpConfigFile('messages.php', []);
175
            $generator->phpConfigFile('vocabulary.php', []);
176 2
            $generator->phpConfigFile('methods.php', []);
177 2
        });
178
179 2
        $generator->directory('specs')->phpConfigFile('methods.php', []);
180
181 2
        $generator->directory('tests', function ($generator) use ($properties) {
182 2
            $generator->file('TestCase.php')->template('TestCase.php', $properties);
183
        });
184 2
185 2
        $generator->phpBlankFile('helpers.php');
186
187 2
        $this->generateAddonConfig($generator, $properties['namespace'], [
188 2
            'namespace' => new Constant('__NAMESPACE__'),
189
            'directories' => [
190 2
                'classes',
191 2
            ],
192 2
            'files' => [
193 2
                'helpers.php',
194
            ],
195 2
            'paths' => [
196 2
                'config' => 'config',
197 2
                'lang' => 'lang',
198
                'specs' => 'specs',
199 2
                'tests' => 'tests',
200 2
            ],
201 2
            'providers' => [
202 2
                new ClassName('Providers\AddonServiceProvider'),
203
                new ClassName('Providers\RouteServiceProvider'),
204 5
            ],
205
            'http' => [
206
                'middlewares' => [
207 4
                ],
208
                'route_middlewares' => [
209 4
                ],
210 4
            ],
211 4
            'routes' => [
212 4
                'domain' => new Constant("env('APP_ADDON_DOMAIN')"),
213 4
                'prefix' => new Constant("env('APP_ADDON_PATH', '".$properties['addon_name']."')"),
214 4
                'middleware' => ['api'],
215
                'files' => [
216 4
                    'classes/Http/routes.php'
217
                ],
218 4
            ],
219 4
        ]);
220 4
    }
221
222 4
    protected function generateUi(FileGenerator $generator, array $properties)
223 4
    {
224 4 View Code Duplication
        $generator->directory('classes', function ($generator) use ($properties) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
225 4
            $migration_class = $properties['addon_class'].'_1_0';
226 4
227
//            $generator->keepDirectory('Console/Commands');
0 ignored issues
show
Unused Code Comprehensibility introduced by
75% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
228 4
229 4
            $generator->directory('Database/Migrations')
230
                ->file($migration_class.'.php')->template('classes/Database/Migration.php', array_merge($properties, ['class_name' => $migration_class]));
231 4
//            $generator->keepDirectory('Database/Seeds');
0 ignored issues
show
Unused Code Comprehensibility introduced by
75% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
232
233
            $generator->templateDirectory('Http', $properties);
234 4
//            $generator->keepDirectory('Http/Middleware');
0 ignored issues
show
Unused Code Comprehensibility introduced by
75% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
235
236
            $generator->templateDirectory('Providers', array_merge($properties, ['migration_class_name' => $migration_class]));
237 4
238 4
            $generator->keepDirectory('Services');
239 4
        });
240 4
241
        $generator->keepDirectory('config');
242 4
243
        $generator->keepDirectory('assets');
244 4
245 4
        $this->generateLang($generator, $properties, function ($generator) use ($properties) {
246 4
            $generator->phpConfigFile('messages.php', []);
247 4
            $generator->phpConfigFile('vocabulary.php', []);
248 5
            $generator->phpConfigFile('forms.php', []);
249
        });
250
251 4
        $generator->directory('specs')->phpConfigFile('forms.php', []);
252 4
253
        $generator->templateDirectory('views', $properties);
254 4
255
        $generator->templateDirectory('tests', $properties);
256 4
257 4
        $generator->phpBlankFile('helpers.php');
258
259 4
        $this->generateAddonConfig($generator, $properties['namespace'], [
260 4
            'namespace' => new Constant('__NAMESPACE__'),
261
            'directories' => [
262 4
                'classes',
263 4
            ],
264
            'files' => [
265 4
                'helpers.php',
266 4
            ],
267 4
            'paths' => [
268 4
                'config' => 'config',
269 4
                'assets' => 'assets',
270 4
                'lang' => 'lang',
271
                'specs' => 'specs',
272 4
                'views' => 'views',
273 4
                'tests' => 'tests',
274 4
            ],
275 4
            'providers' => [
276
                new ClassName('Providers\AddonServiceProvider'),
277 4
                new ClassName('Providers\DatabaseServiceProvider'),
278 4
                new ClassName('Providers\RouteServiceProvider'),
279 4
            ],
280 4
            'http' => [
281
                'middlewares' => [
282 2
                ],
283
                'route_middlewares' => [
284
                ],
285 2
            ],
286 2
            'routes' => [
287 2
                'domain' => new Constant("env('APP_ADDON_DOMAIN')"),
288 2
                'prefix' => new Constant("env('APP_ADDON_PATH', '".$properties['addon_name']."')"),
289
                'middleware' => ['web'],
290 2
                'files' => [
291
                    'classes/Http/routes.php'
292 2
                ],
293 2
            ],
294 2
        ]);
295 2
    }
296 2
297 2
    protected function generateDebug(FileGenerator $generator, array $properties)
298 2
    {
299 View Code Duplication
        $generator->directory('classes', function ($generator) use ($properties) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
300 2
            $generator->directory('Providers')
301 2
                ->file('AddonServiceProvider.php')->template('AddonServiceProvider.php', $properties);
302
            $generator->directory('Providers')
303 2
                ->file('RouteServiceProvider.php')->template('RouteServiceProvider.php', $properties);
304
305
            $generator->keepDirectory('Console/Commands');
306
307 2
            $generator->directory('Http')
308 2
                ->file('routes.php')->template('routes.php', $properties);
309 2
            $generator->directory('Http/Controllers')
310 2
                ->file('Controller.php')->template('Controller.php', $properties);
311 2
            $generator->directory('Http/Controllers')
312
                ->file('DebugController.php')->template('DebugController.php', $properties);
313 2
            $generator->keepDirectory('Http/Middleware');
314 2
315
            $generator->keepDirectory('Services');
316 2
        });
317 2
318 2
        $generator->keepDirectory('config');
319 2
320 2
        $this->generateLang($generator, $properties, function ($generator) use ($properties) {
321
            $generator->phpConfigFile('messages.php', []);
322 2
            $generator->phpConfigFile('vocabulary.php', []);
323
            $generator->phpConfigFile('forms.php', []);
324 2
            $generator->phpConfigFile('methods.php', []);
325 2
        });
326
327 2
        $generator->directory('specs')->phpConfigFile('forms.php', []);
328 2
        $generator->directory('specs')->phpConfigFile('methods.php', []);
329
330 2
        $generator->directory('views')
331 2
            ->file('index.blade.php')->template('index.blade.php', $properties);
332
        $generator->directory('views')
333 2
            ->file('layout.blade.php')->template('layout.blade.php', $properties);
334 2
335 2
        $generator->phpBlankFile('helpers.php');
336 2
337 2
        $this->generateAddonConfig($generator, $properties['namespace'], [
338
            'namespace' => new Constant('__NAMESPACE__'),
339 2
            'directories' => [
340 2
                'classes',
341 2
            ],
342
            'files' => [
343 2
                'helpers.php',
344 2
            ],
345 2
            'paths' => [
346 2
                'config' => 'config',
347
                'lang' => 'lang',
348 2
                'specs' => 'specs',
349
                'views' => 'views',
350
                'tests' => 'tests',
351 2
            ],
352 2
            'providers' => [
353 2
                new ClassName('Providers\AddonServiceProvider'),
354
                new ClassName('Providers\RouteServiceProvider'),
355
            ],
356 2
            'http' => [
357 2
                'middlewares' => [
358
                ],
359
                'route_middlewares' => [
360 2
                ],
361 2
            ],
362 2
            'routes' => [
363 2
                'domain' => new Constant("env('APP_ADDON_DOMAIN')"),
364 2
                'prefix' => new Constant("env('APP_ADDON_PATH', 'debug')"),
365 2
                'middleware' => ['web'],
366 2
                'files' => [
367 2
                    'classes/Http/routes.php'
368 2
                ],
369 2
            ],
370 2
        ]);
371 2
    }
372 2
373 2
    protected function generateGenerator(FileGenerator $generator, array $properties)
374 2
    {
375 2
        $generator->directory('classes', function ($generator) use ($properties) {
376 2
            $generator->directory('Providers')
377 2
                ->file('AddonServiceProvider.php')->template('AddonServiceProvider.php', $properties);
378 2
        });
379
380 2
        $generator->directory('config', function ($generator) use ($properties) {
381 2
            $generator->file('commands.php')->template('commands.php', $properties);
382
        });
383 2
384 2
        $generator->directory('stubs', function ($generator) use ($properties) {
385
            $generator->sourceFile('_console.stub');
386 2
            $generator->sourceFile('_controller.stub');
387
            $generator->sourceFile('_controller-resource.stub');
388 2
            $generator->sourceFile('_event.stub');
389 2
            $generator->sourceFile('_job.stub');
390
            $generator->sourceFile('_job-queued.stub');
391 2
            $generator->sourceFile('_listener.stub');
392 2
            $generator->sourceFile('_listener-queued.stub');
393 2
            $generator->sourceFile('_middleware.stub');
394 2
            $generator->sourceFile('_migration.stub');
395
            $generator->sourceFile('_migration-create.stub');
396 2
            $generator->sourceFile('_migration-update.stub');
397
            $generator->sourceFile('_model.stub');
398
            $generator->sourceFile('_policy.stub');
399 2
            $generator->sourceFile('_provider.stub');
400 2
            $generator->sourceFile('_request.stub');
401 2
            $generator->sourceFile('_seeder.stub');
402 2
            $generator->sourceFile('_test.stub');
403
        });
404 2
405
        $this->generateAddonConfig($generator, $properties['namespace'], [
406 2
            'namespace' => new Constant('__NAMESPACE__'),
407 2
            'directories' => [
408 2
                'classes',
409 2
            ],
410 2
            'paths' => [
411 2
                'config' => 'config',
412 2
            ],
413
            'providers' => [
414 2
                new ClassName('Providers\AddonServiceProvider'),
415 2
            ],
416
        ]);
417 2
    }
418
419
    protected function generateLaravel5(FileGenerator $generator, array $properties)
420 2
    {
421 2 View Code Duplication
        $generator->directory('classes', function ($generator) use ($properties) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
422 2
            $generator->directory('Providers')
423 2
                ->file('AddonServiceProvider.php')->template('AddonServiceProvider.php', $properties);
424
            $generator->directory('Providers')
425
                ->file('RouteServiceProvider.php')->template('RouteServiceProvider.php', $properties);
426 2
427
            $generator->keepDirectory('Console/Commands');
428
429 2
            $generator->directory('Http')
430 2
                ->file('routes.php')->template('routes.php', $properties);
431
            $generator->directory('Http/Controllers')
432 2
                ->file('Controller.php')->template('Controller.php', $properties);
433 2
            $generator->keepDirectory('Http/Middleware');
434
            $generator->directory('Http/Requests')
435
                ->file('Request.php')->template('Request.php', $properties);
436 2
437 2
            $generator->keepDirectory('Services');
438
        });
439 2
440
        $generator->keepDirectory('config');
441 2
442 2
        $generator->directory('database', function ($generator) use ($properties) {
443
            $generator->keepDirectory('factories');
444 2
            $generator->keepDirectory('migrations');
445 2
            $generator->keepDirectory('seeds');
446
        });
447 2
448 2
        $generator->directory('resources', function ($generator) use ($properties) {
449
            $generator->keepDirectory('assets');
450 2
451 2
            $this->generateLang($generator, $properties, function ($generator) use ($properties) {
452 2
                $generator->phpConfigFile('messages.php', []);
453 2
            });
454 2
455
            $generator->keepDirectory('views');
456 2
        });
457 2
458 2
        $generator->directory('tests', function ($generator) use ($properties) {
459
            $generator->file('TestCase.php')->template('TestCase.php', $properties);
460 2
        });
461 2
462 2
        $generator->phpBlankFile('helpers.php');
463 2
464
        $this->generateAddonConfig($generator, $properties['namespace'], [
465 2
            'namespace' => new Constant('__NAMESPACE__'),
466
            'directories' => [
467
                'classes',
468 2
            ],
469
            'files' => [
470 2
                'helpers.php',
471 2
            ],
472 2
            'paths' => [
473 2
                'config' => 'config',
474 2
                'assets' => 'resources/assets',
475 2
                'lang' => 'resources/lang',
476
                'views' => 'resources/views',
477 2
            ],
478
            'providers' => [
479 2
                new ClassName('Providers\AddonServiceProvider'),
480 2
                new ClassName('Providers\RouteServiceProvider'),
481 2
            ],
482
            'http' => [
483 2
                'middlewares' => [
484 2
                ],
485 2
                'route_middlewares' => [
486 2
                ],
487 2
            ],
488 2
            'routes' => [
489 2
                'domain' => new Constant("env('APP_ADDON_DOMAIN')"),
490
                'prefix' => new Constant("env('APP_ADDON_PATH', '".$properties['addon_name']."')"),
491 2
                'middleware' => ['web'],
492 2
                'files' => [
493
                    'classes/Http/routes.php'
494 2
                ],
495
            ],
496
        ]);
497 2
    }
498
499
    protected function generateSampleUi(FileGenerator $generator, array $properties)
500 2
    {
501 2 View Code Duplication
        $generator->directory('classes', function ($generator) use ($properties) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
502 2
            $migration_class = $properties['addon_class'].'_1_0';
503 2
504 2
            $generator->directory('Database/Migrations')
505 2
                ->file($migration_class.'.php')->template('classes/Database/Migration.php', array_merge($properties, ['class_name' => $migration_class]));
506
507
            $generator->templateDirectory('Http', $properties);
508
509 2
            $generator->templateDirectory('Providers', array_merge($properties, ['migration_class_name' => $migration_class]));
510
511 2
            $generator->keepDirectory('Services');
512 2
        });
513 2
514 2
        $generator->keepDirectory('config');
515 2
516
        $generator->keepDirectory('assets');
517
518 2
        $this->generateLang($generator, $properties, function ($generator) use ($properties) {
519 2
            $generator->phpConfigFile('messages.php', []);
520
            $generator->phpConfigFile('vocabulary.php', []);
521 2
            $generator->phpConfigFile('forms.php', []);
522
        });
523 2
        $generator->directory('lang/en')->file('messages.php')->template('lang/en-messages.php', $properties);
524 2
        if (in_array('ja', $properties['languages'])) {
525
            $generator->directory('lang/ja')->file('messages.php')->template('lang/ja-messages.php', $properties);
526 2
        }
527 2
528
        $generator->directory('specs')->phpConfigFile('forms.php', []);
529 2
530 2
        $generator->templateDirectory('views', $properties);
531
532 2
        $generator->templateDirectory('tests', $properties);
533 2
534 2
        $generator->phpBlankFile('helpers.php');
535 2
536 2
        $this->generateAddonConfig($generator, $properties['namespace'], [
537 2
            'namespace' => new Constant('__NAMESPACE__'),
538
            'directories' => [
539 2
                'classes',
540 2
            ],
541 2
            'files' => [
542 2
                'helpers.php',
543
            ],
544 2
            'paths' => [
545 2
                'config' => 'config',
546 2
                'assets' => 'assets',
547 2
                'lang' => 'lang',
548
                'specs' => 'specs',
549 2
                'views' => 'views',
550
                'tests' => 'tests',
551
            ],
552 2
            'providers' => [
553
                new ClassName('Providers\AddonServiceProvider'),
554 2
                new ClassName('Providers\DatabaseServiceProvider'),
555 2
                new ClassName('Providers\RouteServiceProvider'),
556
            ],
557 2
            'http' => [
558
                'middlewares' => [
559 2
                ],
560
                'route_middlewares' => [
561 2
                ],
562
            ],
563 2
            'routes' => [
564 2
                'domain' => new Constant("env('APP_ADDON_DOMAIN')"),
565
                'prefix' => new Constant("env('APP_ADDON_PATH', '".$properties['addon_name']."')"),
566 2
                'middleware' => ['web'],
567
                'files' => [
568
                    'classes/Http/routes.php'
569 2
                ],
570
            ],
571 2
        ]);
572
    }
573 2
574 2
    protected function generateSampleAuth(FileGenerator $generator, array $properties)
575 2
    {
576 2
        $generator->directory('classes', function ($generator) use ($properties) {
577
            $generator->keepDirectory('Console/Commands');
578 2
579
            $generator->templateDirectory('Database/Migrations', $properties);
580 2
            $generator->keepDirectory('Database/Seeds');
581 2
582
            $generator->templateDirectory('Http', $properties);
583 2
584
            $generator->templateDirectory('Providers', $properties);
585 2
586
            $generator->keepDirectory('Services');
587 2
588
            $generator->templateFile('User.php', $properties);
589 2
        });
590 2
591
        $generator->keepDirectory('config');
592 2
593 2
        $generator->keepDirectory('assets');
594
595 2
        $generator->sourceDirectory('lang');
596 2
        $this->generateLang($generator, $properties, function ($generator) use ($properties) {
597
            $generator->phpConfigFile('messages.php', []);
598 2
            $generator->phpConfigFile('vocabulary.php', []);
599 2
            $generator->phpConfigFile('forms.php', []);
600 2
        });
601 2
602 2
        $generator->directory('specs')->phpConfigFile('forms.php', []);
603 2
604
        $generator->sourceDirectory('views');
605
606 2
        $generator->sourceDirectory('public');
607
608 2
        $generator->templateDirectory('tests', $properties);
609 2
610 2
        $generator->phpBlankFile('helpers.php');
611 2
612 2
        $this->generateAddonConfig($generator, $properties['namespace'], [
613
            'namespace' => new Constant('__NAMESPACE__'),
614 2
            'directories' => [
615 2
                'classes',
616 2
            ],
617 2
            'files' => [
618
                'helpers.php',
619 2
            ],
620 2
            'paths' => [
621 2
                'config' => 'config',
622 2
                'assets' => 'assets',
623
                'lang' => 'lang',
624
                'specs' => 'specs',
625
                'views' => 'views',
626 11
                'tests' => 'tests',
627 11
            ],
628 11
            'http' => [
629 11
                'middlewares' => [
630 11
                ],
631 11
                'route_middlewares' => [
632
                    'auth' => new ClassName('Http\Middleware\Authenticate'),
633 19
                    'auth.basic' => new ClassName('Illuminate\Auth\Middleware\AuthenticateWithBasicAuth'),
634
                    'guest' => new ClassName('Http\Middleware\RedirectIfAuthenticated'),
635
                ],
636 19
            ],
637 19
            'providers' => [
638
                new ClassName('Providers\AddonServiceProvider'),
639
                new ClassName('Providers\DatabaseServiceProvider'),
640 19
                new ClassName('Providers\RouteServiceProvider'),
641
            ],
642
            'http' => [
643 19
                'middlewares' => [
644
                ],
645
                'route_middlewares' => [
646 19
                ],
647
            ],
648
            'routes' => [
649 19
                'domain' => new Constant("env('APP_ADDON_DOMAIN')"),
650
                'prefix' => new Constant("env('APP_ADDON_PATH', '".$properties['addon_name']."')"),
651
                'middleware' => ['web'],
652
                'files' => [
653 19
                    'classes/Http/routes.php'
654 19
                ],
655
            ],
656 19
        ]);
657
    }
658
659 19
    protected function generateLang(FileGenerator $generator, array $properties, callable $callable)
660
    {
661
        $generator->directory('lang', function ($generator) use ($properties, $callable) {
662 19
            foreach ($properties['languages'] as $lang) {
663 19
                $generator->directory($lang, $callable);
664 19
            }
665
        });
666
    }
667 19
668 19
    protected function generateAddonConfig(FileGenerator $generator, $namespace, array $data)
669
    {
670 19
        $defaults = [
671
            'version' => 5,
672 19
            'namespace' => '',
673 19
            'directories' => [
674
                // path
675
            ],
676
            'files' => [
677
                // path
678
            ],
679
            'paths' => [
680
                // role => path
681
            ],
682
            'providers' => [
683
                // class
684
            ],
685
            'console' => [
686
                'commands' => [
687
                    // class
688
                ],
689
            ],
690
            'http' => [
691
                'middlewares' => [
692
                    // class
693
                ],
694
                'route_middlewares' => [
695
                    // name => class
696
                ],
697
            ],
698
            'includes_global_aliases' => true,
699
            'aliases' => [
700
                // name => class
701
            ],
702
        ];
703
704
        $data = array_replace($defaults, $data);
705
706
        $generator->phpConfigFile('addon.php', $data, $namespace);
0 ignored issues
show
Unused Code introduced by
The call to FileGenerator::phpConfigFile() has too many arguments starting with $namespace.

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress.

In this case you can add the @ignore PhpDoc annotation to the duplicate definition and it will be ignored.

Loading history...
707
    }
708
}
709