Completed
Push — master ( 416b5c...1e089b )
by Fumio
07:08
created

Generator::generateDebug()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 75
Code Lines 52

Duplication

Lines 18
Ratio 24 %

Code Coverage

Tests 53
CRAP Score 1

Importance

Changes 4
Bugs 0 Features 0
Metric Value
c 4
b 0
f 0
dl 18
loc 75
ccs 53
cts 53
cp 1
rs 9
cc 1
eloc 52
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 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 2
                'classes',
71 2
            ],
72
            'files' => [
73 2
                'helpers.php',
74 2
            ],
75
            'paths' => [
76 2
                'config' => 'config',
77 2
                'lang' => 'lang',
78 2
                'views' => 'views',
79 2
            ],
80
            'providers' => [
81 2
                new ClassName('Providers\AddonServiceProvider'),
82 2
                new ClassName('Providers\RouteServiceProvider'),
83 2
            ],
84
            'http' => [
85
                'middlewares' => [
86 2
                ],
87
                'route_middlewares' => [
88 2
                ],
89 2
            ],
90
            'routes' => [
91 2
                'domain' => new Constant("env('APP_ADDON_DOMAIN')"),
92 2
                'prefix' => new Constant("env('APP_ADDON_PATH', '".$properties['addon_name']."')"),
93 2
                'middleware' => [],
94
                'files' => [
95
                    'classes/Http/routes.php'
96 2
                ],
97 2
            ],
98 2
        ]);
99 2
    }
100
101 1
    protected function generateAsset(FileGenerator $generator, array $properties)
102
    {
103
        $generator->directory('assets', function ($generator) use ($properties) {
0 ignored issues
show
Unused Code introduced by
The parameter $generator is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

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