Completed
Push — master ( 81c4b0...19d1ba )
by Fumio
03:34
created

Generator   A

Complexity

Total Complexity 18

Size/Duplication

Total Lines 702
Duplicated Lines 2.85 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 99.56%

Importance

Changes 10
Bugs 0 Features 1
Metric Value
c 10
b 0
f 1
dl 20
loc 702
ccs 449
cts 451
cp 0.9956
rs 9.7391
wmc 18
lcom 1
cbo 3

15 Methods

Rating   Name   Duplication   Size   Complexity  
A generateAddon() 0 8 1
B __construct() 0 36 1
A generateMinimum() 0 6 1
A generateSimple() 0 57 1
A generateAsset() 0 13 1
A generateLibrary() 0 50 1
A generateApi() 0 68 1
A generateUi() 10 69 1
A generateUiSample() 10 73 2
A generateDebug() 0 75 1
B generateGenerator() 0 45 1
B generateLaravel5() 0 80 1
B generateLaravel5Auth() 0 82 1
A generateLang() 0 8 2
A generateAddonConfig() 0 10 2

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

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 1
const ADDON_VERSION = 5;
10
11
class Generator
12
{
13 41
    public function __construct() {
14 41
        $this->DEFAULTS = [
0 ignored issues
show
Bug introduced by
The property DEFAULTS does not exist. Did you maybe forget to declare it?

In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:

class MyClass { }

$x = new MyClass();
$x->foo = true;

Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion:

class MyClass {
    public $foo;
}

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