Completed
Push — master ( a40a00...18af08 )
by Fumio
09:11
created

Generator::generateSampleAuth()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 74
Code Lines 46

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 47
CRAP Score 1

Importance

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