Completed
Push — master ( e09f8c...50fa0d )
by Fumio
10:35
created

Generator::generateUiSample()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 74
Code Lines 47

Duplication

Lines 12
Ratio 16.22 %

Code Coverage

Tests 28
CRAP Score 2.0001

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 12
loc 74
ccs 28
cts 29
cp 0.9655
rs 9.0335
cc 2
eloc 47
nc 2
nop 2
crap 2.0001

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
                'classes',
34
            ],
35
            'paths' => [
36
            ],
37
            'providers' => [
38 8
                new ClassName('AddonServiceProvider'),
39
            ],
40
        ]);
41 8
    }
42
43 2
    protected function generateSimple(FileGenerator $generator, array $properties)
44
    {
45
        $generator->directory('classes', function ($generator) use ($properties) {
46 2
            $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 2
            $generator->gitKeepFile();
61 2
        });
62
63 2
        $generator->keepDirectory('views');
64
65 2
        $generator->phpBlankFile('helpers.php');
66
67 2
        $this->generateAddonConfig($generator, $properties['namespace'], [
68 2
            'namespace' => new Constant('__NAMESPACE__'),
69
            'directories' => [
70
                'classes',
71
            ],
72
            'files' => [
73
                'helpers.php',
74
            ],
75
            'paths' => [
76
                'config' => 'config',
77
                'lang' => 'lang',
78
                'views' => 'views',
79
            ],
80
            'providers' => [
81 2
                new ClassName('Providers\AddonServiceProvider'),
82 2
                new ClassName('Providers\RouteServiceProvider'),
83
            ],
84
            'http' => [
85
                'middlewares' => [
86
                ],
87
                'route_middlewares' => [
88
                ],
89
            ],
90
            'routes' => [
91 2
                'domain' => new Constant("env('APP_ADDON_DOMAIN')"),
92 2
                'prefix' => new Constant("env('APP_ADDON_PATH', '".$properties['addon_name']."')"),
93
                'middleware' => [],
94
                'files' => [
95
                    'classes/Http/routes.php'
96
                ],
97
            ],
98
        ]);
99 2
    }
100
101 2
    protected function generateLibrary(FileGenerator $generator, array $properties)
102
    {
103
        $generator->directory('classes', function ($generator) use ($properties) {
104 2
            $migration_class = $properties['addon_class'].'_1_0';
105
106 2
            $generator->directory('Providers')
107 2
                ->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 2
            $generator->directory('Database/Migrations')
114 2
                ->file($migration_class.'.php')->template('Migration.php', array_merge($properties, ['class_name' => $migration_class]));
115 2
            $generator->keepDirectory('Database/Seeds');
116
117 2
            $generator->keepDirectory('Services');
118 2
        });
119
120 2
        $generator->keepDirectory('config');
121
122
        $this->generateLang($generator, $properties, function ($generator) use ($properties) {
123 2
            $generator->phpConfigFile('messages.php', []);
124 2
        });
125
126
        $generator->directory('tests', function ($generator) use ($properties) {
127 2
            $generator->file('TestCase.php')->template('TestCase.php', $properties);
128 2
        });
129
130 2
        $generator->phpBlankFile('helpers.php');
131
132 2
        $this->generateAddonConfig($generator, $properties['namespace'], [
133 2
            'namespace' => new Constant('__NAMESPACE__'),
134
            'directories' => [
135
                'classes',
136
            ],
137
            'files' => [
138
                'helpers.php',
139
            ],
140
            'paths' => [
141
                'config' => 'config',
142
                'lang' => 'lang',
143
                'tests' => 'tests',
144
            ],
145
            'providers' => [
146 2
                new ClassName('Providers\AddonServiceProvider'),
147 2
                new ClassName('Providers\DatabaseServiceProvider'),
148
            ],
149
        ]);
150 2
    }
151
152 2
    protected function generateApi(FileGenerator $generator, array $properties)
153
    {
154
        $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
162 2
            $generator->directory('Http')
163 2
                ->file('routes.php')->template('routes.php', $properties);
164 2
            $generator->directory('Http/Controllers')
165 2
                ->file('Controller.php')->template('Controller.php', $properties);
166 2
            $generator->keepDirectory('Http/Middleware');
167
168 2
            $generator->keepDirectory('Services');
169 2
        });
170
171 2
        $generator->keepDirectory('config');
172
173
        $this->generateLang($generator, $properties, function ($generator) use ($properties) {
174 2
            $generator->phpConfigFile('messages.php', []);
175 2
            $generator->phpConfigFile('vocabulary.php', []);
176 2
            $generator->phpConfigFile('methods.php', []);
177 2
        });
178
179 2
        $generator->directory('specs')->phpConfigFile('methods.php', []);
180
181
        $generator->directory('tests', function ($generator) use ($properties) {
182 2
            $generator->file('TestCase.php')->template('TestCase.php', $properties);
183 2
        });
184
185 2
        $generator->phpBlankFile('helpers.php');
186
187 2
        $this->generateAddonConfig($generator, $properties['namespace'], [
188 2
            'namespace' => new Constant('__NAMESPACE__'),
189
            'directories' => [
190
                'classes',
191
            ],
192
            'files' => [
193
                'helpers.php',
194
            ],
195
            'paths' => [
196
                'config' => 'config',
197
                'lang' => 'lang',
198
                'specs' => 'specs',
199
                'tests' => 'tests',
200
            ],
201
            'providers' => [
202 2
                new ClassName('Providers\AddonServiceProvider'),
203 2
                new ClassName('Providers\RouteServiceProvider'),
204
            ],
205
            'http' => [
206
                'middlewares' => [
207
                ],
208
                'route_middlewares' => [
209
                ],
210
            ],
211
            'routes' => [
212 2
                'domain' => new Constant("env('APP_ADDON_DOMAIN')"),
213 2
                'prefix' => new Constant("env('APP_ADDON_PATH', '".$properties['addon_name']."')"),
214
                'middleware' => ['api'],
215
                'files' => [
216
                    'classes/Http/routes.php'
217
                ],
218
            ],
219
        ]);
220 2
    }
221
222 4
    protected function generateUi(FileGenerator $generator, array $properties)
223
    {
224 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
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
229 4
            $generator->directory('Database/Migrations')
230 4
                ->file($migration_class.'.php')->template('classes/Database/Migration.php', array_merge($properties, ['class_name' => $migration_class]));
231
//            $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 4
            $generator->templateDirectory('Http', $properties);
234
//            $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 4
            $generator->templateDirectory('Providers', array_merge($properties, ['migration_class_name' => $migration_class]));
237
238 4
            $generator->keepDirectory('Services');
239 4
        });
240
241 4
        $generator->keepDirectory('config');
242
243 4
        $generator->keepDirectory('assets');
244
245
        $this->generateLang($generator, $properties, function ($generator) use ($properties) {
246 4
            $generator->phpConfigFile('messages.php', []);
247 4
            $generator->phpConfigFile('vocabulary.php', []);
248 4
            $generator->phpConfigFile('forms.php', []);
249 4
        });
250
251 4
        $generator->directory('specs')->phpConfigFile('forms.php', []);
252
253 4
        $generator->templateDirectory('views', $properties);
254
255 4
        $generator->templateDirectory('tests', $properties);
256
257 4
        $generator->phpBlankFile('helpers.php');
258
259 4
        $this->generateAddonConfig($generator, $properties['namespace'], [
260 4
            'namespace' => new Constant('__NAMESPACE__'),
261
            'directories' => [
262
                'classes',
263
            ],
264
            'files' => [
265
                'helpers.php',
266
            ],
267
            'paths' => [
268
                'config' => 'config',
269
                'assets' => 'assets',
270
                'lang' => 'lang',
271
                'specs' => 'specs',
272
                'views' => 'views',
273
                'tests' => 'tests',
274
            ],
275
            'providers' => [
276 4
                new ClassName('Providers\AddonServiceProvider'),
277 4
                new ClassName('Providers\DatabaseServiceProvider'),
278 4
                new ClassName('Providers\RouteServiceProvider'),
279
            ],
280
            'http' => [
281
                'middlewares' => [
282
                ],
283
                'route_middlewares' => [
284
                ],
285
            ],
286
            'routes' => [
287 4
                'domain' => new Constant("env('APP_ADDON_DOMAIN')"),
288 4
                'prefix' => new Constant("env('APP_ADDON_PATH', '".$properties['addon_name']."')"),
289
                'middleware' => ['web'],
290
                'files' => [
291
                    'classes/Http/routes.php'
292
                ],
293
            ],
294
        ]);
295 4
    }
296
297 2
    protected function generateUiSample(FileGenerator $generator, array $properties)
298
    {
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
            $migration_class = $properties['addon_class'].'_1_0';
301
302 2
            $generator->directory('Database/Migrations')
303 2
                ->file($migration_class.'.php')->template('classes/Database/Migration.php', array_merge($properties, ['class_name' => $migration_class]));
304
305 2
            $generator->templateDirectory('Http', $properties);
306
307 2
            $generator->templateDirectory('Providers', array_merge($properties, ['migration_class_name' => $migration_class]));
308
309 2
            $generator->keepDirectory('Services');
310 2
        });
311
312 2
        $generator->keepDirectory('config');
313
314 2
        $generator->keepDirectory('assets');
315
316
        $this->generateLang($generator, $properties, function ($generator) use ($properties) {
317 2
            $generator->phpConfigFile('messages.php', []);
318 2
            $generator->phpConfigFile('vocabulary.php', []);
319 2
            $generator->phpConfigFile('forms.php', []);
320 2
        });
321 2
        $generator->directory('lang/en')->file('messages.php')->template('lang/en-messages.php', $properties);
322 2
        if (in_array('ja', $properties['languages'])) {
323
            $generator->directory('lang/ja')->file('messages.php')->template('lang/ja-messages.php', $properties);
324
        }
325
326 2
        $generator->directory('specs')->phpConfigFile('forms.php', []);
327
328 2
        $generator->templateDirectory('views', $properties);
329
330 2
        $generator->templateDirectory('tests', $properties);
331
332 2
        $generator->phpBlankFile('helpers.php');
333
334 2
        $this->generateAddonConfig($generator, $properties['namespace'], [
335 2
            'namespace' => new Constant('__NAMESPACE__'),
336
            'directories' => [
337
                'classes',
338
            ],
339
            'files' => [
340
                'helpers.php',
341
            ],
342
            'paths' => [
343
                'config' => 'config',
344
                'assets' => 'assets',
345
                'lang' => 'lang',
346
                'specs' => 'specs',
347
                'views' => 'views',
348
                'tests' => 'tests',
349
            ],
350
            'providers' => [
351 2
                new ClassName('Providers\AddonServiceProvider'),
352 2
                new ClassName('Providers\DatabaseServiceProvider'),
353 2
                new ClassName('Providers\RouteServiceProvider'),
354
            ],
355
            'http' => [
356
                'middlewares' => [
357
                ],
358
                'route_middlewares' => [
359
                ],
360
            ],
361
            'routes' => [
362 2
                'domain' => new Constant("env('APP_ADDON_DOMAIN')"),
363 2
                'prefix' => new Constant("env('APP_ADDON_PATH', '".$properties['addon_name']."')"),
364
                'middleware' => ['web'],
365
                'files' => [
366
                    'classes/Http/routes.php'
367
                ],
368
            ],
369
        ]);
370 2
    }
371
372 2
    protected function generateDebug(FileGenerator $generator, array $properties)
373
    {
374 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...
375 2
            $generator->directory('Providers')
376 2
                ->file('AddonServiceProvider.php')->template('AddonServiceProvider.php', $properties);
377 2
            $generator->directory('Providers')
378 2
                ->file('RouteServiceProvider.php')->template('RouteServiceProvider.php', $properties);
379
380 2
            $generator->keepDirectory('Console/Commands');
381
382 2
            $generator->directory('Http')
383 2
                ->file('routes.php')->template('routes.php', $properties);
384 2
            $generator->directory('Http/Controllers')
385 2
                ->file('Controller.php')->template('Controller.php', $properties);
386 2
            $generator->directory('Http/Controllers')
387 2
                ->file('DebugController.php')->template('DebugController.php', $properties);
388 2
            $generator->keepDirectory('Http/Middleware');
389
390 2
            $generator->keepDirectory('Services');
391 2
        });
392
393 2
        $generator->keepDirectory('config');
394
395
        $this->generateLang($generator, $properties, function ($generator) use ($properties) {
396 2
            $generator->phpConfigFile('messages.php', []);
397 2
            $generator->phpConfigFile('vocabulary.php', []);
398 2
            $generator->phpConfigFile('forms.php', []);
399 2
            $generator->phpConfigFile('methods.php', []);
400 2
        });
401
402 2
        $generator->directory('specs')->phpConfigFile('forms.php', []);
403 2
        $generator->directory('specs')->phpConfigFile('methods.php', []);
404
405 2
        $generator->directory('views')
406 2
            ->file('index.blade.php')->template('index.blade.php', $properties);
407 2
        $generator->directory('views')
408 2
            ->file('layout.blade.php')->template('layout.blade.php', $properties);
409
410 2
        $generator->phpBlankFile('helpers.php');
411
412 2
        $this->generateAddonConfig($generator, $properties['namespace'], [
413 2
            'namespace' => new Constant('__NAMESPACE__'),
414
            'directories' => [
415
                'classes',
416
            ],
417
            'files' => [
418
                'helpers.php',
419
            ],
420
            'paths' => [
421
                'config' => 'config',
422
                'lang' => 'lang',
423
                'specs' => 'specs',
424
                'views' => 'views',
425
                'tests' => 'tests',
426
            ],
427
            'providers' => [
428 2
                new ClassName('Providers\AddonServiceProvider'),
429 2
                new ClassName('Providers\RouteServiceProvider'),
430
            ],
431
            'http' => [
432
                'middlewares' => [
433
                ],
434
                'route_middlewares' => [
435
                ],
436
            ],
437
            'routes' => [
438 2
                'domain' => new Constant("env('APP_ADDON_DOMAIN')"),
439 2
                'prefix' => new Constant("env('APP_ADDON_PATH', 'debug')"),
440
                'middleware' => ['web'],
441
                'files' => [
442
                    'classes/Http/routes.php'
443
                ],
444
            ],
445
        ]);
446 2
    }
447
448 2
    protected function generateGenerator(FileGenerator $generator, array $properties)
449
    {
450
        $generator->directory('classes', function ($generator) use ($properties) {
451 2
            $generator->directory('Providers')
452 2
                ->file('AddonServiceProvider.php')->template('AddonServiceProvider.php', $properties);
453 2
        });
454
455
        $generator->directory('config', function ($generator) use ($properties) {
456 2
            $generator->file('commands.php')->template('commands.php', $properties);
457 2
        });
458
459
        $generator->directory('stubs', function ($generator) use ($properties) {
460 2
            $generator->sourceFile('_console.stub');
461 2
            $generator->sourceFile('_controller.stub');
462 2
            $generator->sourceFile('_controller-resource.stub');
463 2
            $generator->sourceFile('_event.stub');
464 2
            $generator->sourceFile('_job.stub');
465 2
            $generator->sourceFile('_job-queued.stub');
466 2
            $generator->sourceFile('_listener.stub');
467 2
            $generator->sourceFile('_listener-queued.stub');
468 2
            $generator->sourceFile('_middleware.stub');
469 2
            $generator->sourceFile('_migration.stub');
470 2
            $generator->sourceFile('_migration-create.stub');
471 2
            $generator->sourceFile('_migration-update.stub');
472 2
            $generator->sourceFile('_model.stub');
473 2
            $generator->sourceFile('_policy.stub');
474 2
            $generator->sourceFile('_provider.stub');
475 2
            $generator->sourceFile('_request.stub');
476 2
            $generator->sourceFile('_seeder.stub');
477 2
            $generator->sourceFile('_test.stub');
478 2
        });
479
480 2
        $this->generateAddonConfig($generator, $properties['namespace'], [
481 2
            'namespace' => new Constant('__NAMESPACE__'),
482
            'directories' => [
483
                'classes',
484
            ],
485
            'paths' => [
486
                'config' => 'config',
487
            ],
488
            'providers' => [
489 2
                new ClassName('Providers\AddonServiceProvider'),
490
            ],
491
        ]);
492 2
    }
493
494 2
    protected function generateLaravel5(FileGenerator $generator, array $properties)
495
    {
496 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...
497 2
            $generator->directory('Providers')
498 2
                ->file('AddonServiceProvider.php')->template('AddonServiceProvider.php', $properties);
499 2
            $generator->directory('Providers')
500 2
                ->file('RouteServiceProvider.php')->template('RouteServiceProvider.php', $properties);
501
502 2
            $generator->keepDirectory('Console/Commands');
503
504 2
            $generator->directory('Http')
505 2
                ->file('routes.php')->template('routes.php', $properties);
506 2
            $generator->directory('Http/Controllers')
507 2
                ->file('Controller.php')->template('Controller.php', $properties);
508 2
            $generator->keepDirectory('Http/Middleware');
509 2
            $generator->directory('Http/Requests')
510 2
                ->file('Request.php')->template('Request.php', $properties);
511
512 2
            $generator->keepDirectory('Services');
513 2
        });
514
515 2
        $generator->keepDirectory('config');
516
517
        $generator->directory('database', function ($generator) use ($properties) {
518 2
            $generator->keepDirectory('factories');
519 2
            $generator->keepDirectory('migrations');
520 2
            $generator->keepDirectory('seeds');
521 2
        });
522
523
        $generator->directory('resources', function ($generator) use ($properties) {
524 2
            $generator->keepDirectory('assets');
525
526
            $this->generateLang($generator, $properties, function ($generator) use ($properties) {
527 2
                $generator->phpConfigFile('messages.php', []);
528 2
            });
529
530 2
            $generator->keepDirectory('views');
531 2
        });
532
533
        $generator->directory('tests', function ($generator) use ($properties) {
534 2
            $generator->file('TestCase.php')->template('TestCase.php', $properties);
535 2
        });
536
537 2
        $generator->phpBlankFile('helpers.php');
538
539 2
        $this->generateAddonConfig($generator, $properties['namespace'], [
540 2
            'namespace' => new Constant('__NAMESPACE__'),
541
            'directories' => [
542
                'classes',
543
            ],
544
            'files' => [
545
                'helpers.php',
546
            ],
547
            'paths' => [
548
                'config' => 'config',
549
                'assets' => 'resources/assets',
550
                'lang' => 'resources/lang',
551
                'views' => 'resources/views',
552
            ],
553
            'providers' => [
554 2
                new ClassName('Providers\AddonServiceProvider'),
555 2
                new ClassName('Providers\RouteServiceProvider'),
556
            ],
557
            'http' => [
558
                'middlewares' => [
559
                ],
560
                'route_middlewares' => [
561
                ],
562
            ],
563
            'routes' => [
564 2
                'domain' => new Constant("env('APP_ADDON_DOMAIN')"),
565 2
                'prefix' => new Constant("env('APP_ADDON_PATH', '".$properties['addon_name']."')"),
566
                'middleware' => ['web'],
567
                'files' => [
568
                    'classes/Http/routes.php'
569
                ],
570
            ],
571
        ]);
572 2
    }
573
574 2
    protected function generateLaravel5Auth(FileGenerator $generator, array $properties)
575
    {
576
        $generator->directory('classes', function ($generator) use ($properties) {
577 2
            $generator->keepDirectory('Console/Commands');
578
579 2
            $generator->templateDirectory('Database/Migrations', $properties);
580 2
            $generator->keepDirectory('Database/Seeds');
581
582 2
            $generator->templateDirectory('Http', $properties);
583
584 2
            $generator->templateDirectory('Providers', $properties);
585
586 2
            $generator->keepDirectory('Services');
587
588 2
            $generator->templateFile('User.php', $properties);
589 2
        });
590
591 2
        $generator->keepDirectory('config');
592
593 2
        $generator->keepDirectory('assets');
594
595 2
        $generator->sourceDirectory('lang');
596
        $this->generateLang($generator, $properties, function ($generator) use ($properties) {
597 2
            $generator->phpConfigFile('messages.php', []);
598 2
            $generator->phpConfigFile('vocabulary.php', []);
599 2
            $generator->phpConfigFile('forms.php', []);
600 2
        });
601
602 2
        $generator->directory('specs')->phpConfigFile('forms.php', []);
603
604 2
        $generator->templateDirectory('views', $properties);
605
606
//        $generator->sourceDirectory('public');
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...
607
608 2
        $generator->templateDirectory('tests', $properties);
609
610 2
        $generator->phpBlankFile('helpers.php');
611
612 2
        $this->generateAddonConfig($generator, $properties['namespace'], [
613 2
            'namespace' => new Constant('__NAMESPACE__'),
614
            'directories' => [
615
                'classes',
616
            ],
617
            'files' => [
618
                'helpers.php',
619
            ],
620
            'paths' => [
621
                'config' => 'config',
622
                'assets' => 'assets',
623
                'lang' => 'lang',
624
                'specs' => 'specs',
625
                'views' => 'views',
626
                'tests' => 'tests',
627
            ],
628
            'http' => [
629
                'middlewares' => [
630
                ],
631
                'route_middlewares' => [
632 2
                    'auth' => new ClassName('Http\Middleware\Authenticate'),
633 2
                    'auth.basic' => new ClassName('Illuminate\Auth\Middleware\AuthenticateWithBasicAuth'),
634 2
                    'guest' => new ClassName('Http\Middleware\RedirectIfAuthenticated'),
635
                ],
636
            ],
637
            'providers' => [
638 2
                new ClassName('Providers\AddonServiceProvider'),
639 2
                new ClassName('Providers\DatabaseServiceProvider'),
640 2
                new ClassName('Providers\RouteServiceProvider'),
641
            ],
642
            'http' => [
643
                'middlewares' => [
644
                ],
645
                'route_middlewares' => [
646
                ],
647
            ],
648
            'routes' => [
649 2
                'domain' => new Constant("env('APP_ADDON_DOMAIN')"),
650 2
                'prefix' => new Constant("env('APP_ADDON_PATH', '/')"),
651
                'middleware' => ['web'],
652
                'files' => [
653
                    'classes/Http/routes.php'
654
                ],
655 2
                'home' => '/home',
656
            ],
657
        ]);
658 2
    }
659
660
    protected function generateLang(FileGenerator $generator, array $properties, callable $callable)
661
    {
662 11
        $generator->directory('lang', function ($generator) use ($properties, $callable) {
663 11
            foreach ($properties['languages'] as $lang) {
664 11
                $generator->directory($lang, $callable);
665
            }
666 11
        });
667 11
    }
668
669 19
    protected function generateAddonConfig(FileGenerator $generator, $namespace, array $data)
670
    {
671
        $defaults = [
672 19
            'version' => 5,
673
            'namespace' => '',
674
            'directories' => [
675
                // path
676
            ],
677
            'files' => [
678
                // path
679
            ],
680
            'paths' => [
681
                // role => path
682
            ],
683
            'providers' => [
684
                // class
685
            ],
686
            'console' => [
687
                'commands' => [
688
                    // class
689
                ],
690
            ],
691
            'http' => [
692
                'middlewares' => [
693
                    // class
694
                ],
695
                'route_middlewares' => [
696
                    // name => class
697
                ],
698
            ],
699
            'includes_global_aliases' => true,
700
            'aliases' => [
701
                // name => class
702
            ],
703
        ];
704
705 19
        $data = array_replace($defaults, $data);
706
707 19
        $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...
708 19
    }
709
}
710