Completed
Push — master ( e43489...112112 )
by Fumio
06:51
created

Generator::generateSampleUi()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 74
Code Lines 47

Duplication

Lines 12
Ratio 16.22 %

Code Coverage

Tests 47
CRAP Score 2.0002

Importance

Changes 4
Bugs 0 Features 0
Metric Value
c 4
b 0
f 0
dl 12
loc 74
ccs 47
cts 49
cp 0.9592
rs 9.0335
cc 2
eloc 47
nc 2
nop 2
crap 2.0002

How to fix   Long Method   

Long Method

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

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

Commonly applied refactorings include:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Loading history...
300 2
            $migration_class = $properties['addon_class'].'_1_0';
301 2
302
            $generator->directory('Database/Migrations')
303 2
                ->file($migration_class.'.php')->template('classes/Database/Migration.php', array_merge($properties, ['class_name' => $migration_class]));
304
305
            $generator->templateDirectory('Http', $properties);
306
307 2
            $generator->templateDirectory('Providers', array_merge($properties, ['migration_class_name' => $migration_class]));
308 2
309 2
            $generator->keepDirectory('Services');
310 2
        });
311 2
312
        $generator->keepDirectory('config');
313 2
314 2
        $generator->keepDirectory('assets');
315
316 2
        $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
        $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 2
        }
325 2
326
        $generator->directory('specs')->phpConfigFile('forms.php', []);
327 2
328 2
        $generator->templateDirectory('views', $properties);
329
330 2
        $generator->templateDirectory('tests', $properties);
331 2
332
        $generator->phpBlankFile('helpers.php');
333 2
334 2
        $this->generateAddonConfig($generator, $properties['namespace'], [
335 2
            'namespace' => new Constant('__NAMESPACE__'),
336 2
            'directories' => [
337 2
                'classes',
338
            ],
339 2
            'files' => [
340 2
                'helpers.php',
341 2
            ],
342
            'paths' => [
343 2
                'config' => 'config',
344 2
                'assets' => 'assets',
345 2
                'lang' => 'lang',
346 2
                'specs' => 'specs',
347
                'views' => 'views',
348 2
                '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 2
                'middlewares' => [
357 2
                ],
358
                'route_middlewares' => [
359
                ],
360 2
            ],
361 2
            'routes' => [
362 2
                'domain' => new Constant("env('APP_ADDON_DOMAIN')"),
363 2
                'prefix' => new Constant("env('APP_ADDON_PATH', '".$properties['addon_name']."')"),
364 2
                'middleware' => ['web'],
365 2
                'files' => [
366 2
                    'classes/Http/routes.php'
367 2
                ],
368 2
            ],
369 2
        ]);
370 2
    }
371 2
372 2
    protected function generateDebug(FileGenerator $generator, array $properties)
373 2
    {
374 2 View Code Duplication
        $generator->directory('classes', function ($generator) use ($properties) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

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

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

Loading history...
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 2
382
            $generator->directory('Http')
383 2
                ->file('routes.php')->template('routes.php', $properties);
384 2
            $generator->directory('Http/Controllers')
385
                ->file('Controller.php')->template('Controller.php', $properties);
386 2
            $generator->directory('Http/Controllers')
387
                ->file('DebugController.php')->template('DebugController.php', $properties);
388 2
            $generator->keepDirectory('Http/Middleware');
389 2
390
            $generator->keepDirectory('Services');
391 2
        });
392 2
393 2
        $generator->keepDirectory('config');
394 2
395
        $this->generateLang($generator, $properties, function ($generator) use ($properties) {
396 2
            $generator->phpConfigFile('messages.php', []);
397
            $generator->phpConfigFile('vocabulary.php', []);
398
            $generator->phpConfigFile('forms.php', []);
399 2
            $generator->phpConfigFile('methods.php', []);
400 2
        });
401 2
402 2
        $generator->directory('specs')->phpConfigFile('forms.php', []);
403
        $generator->directory('specs')->phpConfigFile('methods.php', []);
404 2
405
        $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 2
410 2
        $generator->phpBlankFile('helpers.php');
411 2
412 2
        $this->generateAddonConfig($generator, $properties['namespace'], [
413
            'namespace' => new Constant('__NAMESPACE__'),
414 2
            'directories' => [
415 2
                'classes',
416
            ],
417 2
            'files' => [
418
                'helpers.php',
419
            ],
420 2
            'paths' => [
421 2
                'config' => 'config',
422 2
                'lang' => 'lang',
423 2
                'specs' => 'specs',
424
                'views' => 'views',
425
                'tests' => 'tests',
426 2
            ],
427
            'providers' => [
428
                new ClassName('Providers\AddonServiceProvider'),
429 2
                new ClassName('Providers\RouteServiceProvider'),
430 2
            ],
431
            'http' => [
432 2
                'middlewares' => [
433 2
                ],
434
                'route_middlewares' => [
435
                ],
436 2
            ],
437 2
            'routes' => [
438
                'domain' => new Constant("env('APP_ADDON_DOMAIN')"),
439 2
                'prefix' => new Constant("env('APP_ADDON_PATH', 'debug')"),
440
                'middleware' => ['web'],
441 2
                'files' => [
442 2
                    'classes/Http/routes.php'
443
                ],
444 2
            ],
445 2
        ]);
446
    }
447 2
448 2
    protected function generateGenerator(FileGenerator $generator, array $properties)
449
    {
450 2
        $generator->directory('classes', function ($generator) use ($properties) {
451 2
            $generator->directory('Providers')
452 2
                ->file('AddonServiceProvider.php')->template('AddonServiceProvider.php', $properties);
453 2
        });
454 2
455
        $generator->directory('config', function ($generator) use ($properties) {
456 2
            $generator->file('commands.php')->template('commands.php', $properties);
457 2
        });
458 2
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
            $generator->sourceFile('_job.stub');
465 2
            $generator->sourceFile('_job-queued.stub');
466
            $generator->sourceFile('_listener.stub');
467
            $generator->sourceFile('_listener-queued.stub');
468 2
            $generator->sourceFile('_middleware.stub');
469
            $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
            $generator->sourceFile('_seeder.stub');
477 2
            $generator->sourceFile('_test.stub');
478
        });
479 2
480 2
        $this->generateAddonConfig($generator, $properties['namespace'], [
481 2
            'namespace' => new Constant('__NAMESPACE__'),
482
            'directories' => [
483 2
                'classes',
484 2
            ],
485 2
            'paths' => [
486 2
                'config' => 'config',
487 2
            ],
488 2
            'providers' => [
489 2
                new ClassName('Providers\AddonServiceProvider'),
490
            ],
491 2
        ]);
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
                ->file('AddonServiceProvider.php')->template('AddonServiceProvider.php', $properties);
499
            $generator->directory('Providers')
500 2
                ->file('RouteServiceProvider.php')->template('RouteServiceProvider.php', $properties);
501 2
502 2
            $generator->keepDirectory('Console/Commands');
503 2
504 2
            $generator->directory('Http')
505 2
                ->file('routes.php')->template('routes.php', $properties);
506
            $generator->directory('Http/Controllers')
507
                ->file('Controller.php')->template('Controller.php', $properties);
508
            $generator->keepDirectory('Http/Middleware');
509 2
            $generator->directory('Http/Requests')
510
                ->file('Request.php')->template('Request.php', $properties);
511 2
512 2
            $generator->keepDirectory('Services');
513 2
        });
514 2
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
            $generator->keepDirectory('seeds');
521 2
        });
522
523 2
        $generator->directory('resources', function ($generator) use ($properties) {
524 2
            $generator->keepDirectory('assets');
525
526 2
            $this->generateLang($generator, $properties, function ($generator) use ($properties) {
527 2
                $generator->phpConfigFile('messages.php', []);
528
            });
529 2
530 2
            $generator->keepDirectory('views');
531
        });
532 2
533 2
        $generator->directory('tests', function ($generator) use ($properties) {
534 2
            $generator->file('TestCase.php')->template('TestCase.php', $properties);
535 2
        });
536 2
537 2
        $generator->phpBlankFile('helpers.php');
538
539 2
        $this->generateAddonConfig($generator, $properties['namespace'], [
540 2
            'namespace' => new Constant('__NAMESPACE__'),
541 2
            'directories' => [
542 2
                'classes',
543
            ],
544 2
            'files' => [
545 2
                'helpers.php',
546 2
            ],
547 2
            'paths' => [
548
                'config' => 'config',
549 2
                'assets' => 'resources/assets',
550
                'lang' => 'resources/lang',
551
                'views' => 'resources/views',
552 2
            ],
553
            'providers' => [
554 2
                new ClassName('Providers\AddonServiceProvider'),
555 2
                new ClassName('Providers\RouteServiceProvider'),
556
            ],
557 2
            'http' => [
558
                'middlewares' => [
559 2
                ],
560
                'route_middlewares' => [
561 2
                ],
562
            ],
563 2
            'routes' => [
564 2
                'domain' => new Constant("env('APP_ADDON_DOMAIN')"),
565
                'prefix' => new Constant("env('APP_ADDON_PATH', '".$properties['addon_name']."')"),
566 2
                'middleware' => ['web'],
567
                'files' => [
568
                    'classes/Http/routes.php'
569 2
                ],
570
            ],
571 2
        ]);
572
    }
573 2
574 2
    protected function generateLaravel5Auth(FileGenerator $generator, array $properties)
575 2
    {
576 2
        $generator->directory('classes', function ($generator) use ($properties) {
577
            $generator->keepDirectory('Console/Commands');
578 2
579
            $generator->templateDirectory('Database/Migrations', $properties);
580 2
            $generator->keepDirectory('Database/Seeds');
581 2
582
            $generator->templateDirectory('Http', $properties);
583 2
584
            $generator->templateDirectory('Providers', $properties);
585 2
586
            $generator->keepDirectory('Services');
587 2
588
            $generator->templateFile('User.php', $properties);
589 2
        });
590 2
591
        $generator->keepDirectory('config');
592 2
593 2
        $generator->keepDirectory('assets');
594
595 2
        $generator->sourceDirectory('lang');
596 2
        $this->generateLang($generator, $properties, function ($generator) use ($properties) {
597
            $generator->phpConfigFile('messages.php', []);
598 2
            $generator->phpConfigFile('vocabulary.php', []);
599 2
            $generator->phpConfigFile('forms.php', []);
600 2
        });
601 2
602 2
        $generator->directory('specs')->phpConfigFile('forms.php', []);
603 2
604
        $generator->templateDirectory('views', $properties);
605
606 2
//        $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 2
610 2
        $generator->phpBlankFile('helpers.php');
611 2
612 2
        $this->generateAddonConfig($generator, $properties['namespace'], [
613
            'namespace' => new Constant('__NAMESPACE__'),
614 2
            'directories' => [
615 2
                'classes',
616 2
            ],
617 2
            'files' => [
618
                'helpers.php',
619 2
            ],
620 2
            'paths' => [
621 2
                'config' => 'config',
622 2
                'assets' => 'assets',
623
                'lang' => 'lang',
624
                'specs' => 'specs',
625
                'views' => 'views',
626 11
                'tests' => 'tests',
627 11
            ],
628 11
            'http' => [
629 11
                'middlewares' => [
630 11
                ],
631 11
                'route_middlewares' => [
632
                    'auth' => new ClassName('Http\Middleware\Authenticate'),
633 19
                    'auth.basic' => new ClassName('Illuminate\Auth\Middleware\AuthenticateWithBasicAuth'),
634
                    'guest' => new ClassName('Http\Middleware\RedirectIfAuthenticated'),
635
                ],
636 19
            ],
637 19
            'providers' => [
638
                new ClassName('Providers\AddonServiceProvider'),
639
                new ClassName('Providers\DatabaseServiceProvider'),
640 19
                new ClassName('Providers\RouteServiceProvider'),
641
            ],
642
            'http' => [
643 19
                'middlewares' => [
644
                ],
645
                'route_middlewares' => [
646 19
                ],
647
            ],
648
            'routes' => [
649 19
                'domain' => new Constant("env('APP_ADDON_DOMAIN')"),
650
                'prefix' => new Constant("env('APP_ADDON_PATH', '/')"),
651
                'middleware' => ['web'],
652
                'files' => [
653 19
                    'classes/Http/routes.php'
654 19
                ],
655
                'home' => '/home',
656 19
            ],
657
        ]);
658
    }
659 19
660
    protected function generateLang(FileGenerator $generator, array $properties, callable $callable)
661
    {
662 19
        $generator->directory('lang', function ($generator) use ($properties, $callable) {
663 19
            foreach ($properties['languages'] as $lang) {
664 19
                $generator->directory($lang, $callable);
665
            }
666
        });
667 19
    }
668 19
669
    protected function generateAddonConfig(FileGenerator $generator, $namespace, array $data)
670 19
    {
671
        $defaults = [
672 19
            'version' => 5,
673 19
            '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
        $data = array_replace($defaults, $data);
706
707
        $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
    }
709
}
710