Completed
Push — master ( 18af08...7d327c )
by Fumio
03:56
created

Generator::generateSampleUi()   B

Complexity

Conditions 2
Paths 1

Size

Total Lines 83
Code Lines 57

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 58
CRAP Score 2.0001

Importance

Changes 2
Bugs 0 Features 0
Metric Value
c 2
b 0
f 0
dl 0
loc 83
ccs 58
cts 60
cp 0.9667
rs 8.7468
cc 2
eloc 57
nc 1
nop 2
crap 2.0001

How to fix   Long Method   

Long Method

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

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

Commonly applied refactorings include:

1
<?php
2
3
namespace Jumilla\Addomnipot\Laravel;
4
5
use Jumilla\Generators\Php\Constant;
6
use Jumilla\Generators\Php\ClassName;
7
use Jumilla\Generators\FileGenerator;
8
9
class Generator
10
{
11
    /**
12
     * @param string $path
13
     * @param string $type
14
     * @param array  $properties
15
     */
16 19
    public function generateAddon($path, $type, array $properties)
17
    {
18 19
        $generator = FileGenerator::make($path, __DIR__.'/stubs/'.$type);
19
20 19
        $method = 'generate'.studly_case($type);
21
22 19
        call_user_func([$this, $method], $generator, $properties);
23 19
    }
24
25 8
    protected function generateMinimum(FileGenerator $generator, array $properties)
26
    {
27 8
        $generator->directory('classes')
28 8
            ->file('AddonServiceProvider.php')->template('AddonServiceProvider.php', $properties);
29
30 8
        $this->generateAddonConfig($generator, $properties['namespace'], [
31 8
            'namespace' => new Constant('__NAMESPACE__'),
32
            'directories' => [
33 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
        $generator->directory('resources', function ($generator) use ($properties) {
60
            $this->generateLang($generator, $properties, function ($generator) use ($properties) {
61 2
                $generator->gitKeepFile();
62 2
            });
63
64 2
            $generator->keepDirectory('views');
65 2
        });
66
67 2
        $generator->phpBlankFile('helpers.php');
68
69 2
        $this->generateAddonConfig($generator, $properties['namespace'], [
70 2
            'namespace' => new Constant('__NAMESPACE__'),
71
            'directories' => [
72 2
                'classes',
73 2
            ],
74
            'files' => [
75 2
                'helpers.php',
76 2
            ],
77
            'paths' => [
78 2
                'config' => 'config',
79 2
                'lang' => 'resources/lang',
80 2
                'views' => 'resources/views',
81 2
            ],
82
            'providers' => [
83 2
                new ClassName('Providers\AddonServiceProvider'),
84 2
                new ClassName('Providers\RouteServiceProvider'),
85 2
            ],
86
            'http' => [
87 2
                'prefix' => 'addons/'.$properties['addon_name'],
88 2
            ],
89 2
        ]);
90 2
    }
91
92 2
    protected function generateLibrary(FileGenerator $generator, array $properties)
93
    {
94
        $generator->directory('classes', function ($generator) use ($properties) {
95 2
            $migration_class = $properties['addon_class'].'_1_0';
96
97 2
            $generator->directory('Providers')
98 2
                ->file('AddonServiceProvider.php')->template('AddonServiceProvider.php', $properties);
99 2
            $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
104 2
            $generator->directory('Database/Migrations')
105 2
                ->file($migration_class.'.php')->template('Migration.php', array_merge($properties, ['class_name' => $migration_class]));
106 2
            $generator->keepDirectory('Database/Seeds');
107
108 2
            $generator->keepDirectory('Services');
109 2
        });
110
111 2
        $generator->keepDirectory('config');
112
113
        $generator->directory('resources', function ($generator) use ($properties) {
114
            $this->generateLang($generator, $properties, function ($generator) use ($properties) {
115 2
                $generator->phpConfigFile('messages.php', []);
116 2
            });
117 2
        });
118
119
        $generator->directory('tests', function ($generator) use ($properties) {
120 2
            $generator->file('TestCase.php')->template('TestCase.php', $properties);
121 2
        });
122
123 2
        $generator->phpBlankFile('helpers.php');
124
125 2
        $this->generateAddonConfig($generator, $properties['namespace'], [
126 2
            'namespace' => new Constant('__NAMESPACE__'),
127
            'directories' => [
128 2
                'classes',
129 2
            ],
130
            'files' => [
131 2
                'helpers.php',
132 2
            ],
133
            'paths' => [
134 2
                'config' => 'config',
135 2
                'lang' => 'resources/lang',
136 2
            ],
137
            'providers' => [
138 2
                new ClassName('Providers\AddonServiceProvider'),
139 2
                new ClassName('Providers\DatabaseServiceProvider'),
140 2
            ],
141 2
        ]);
142 2
    }
143
144 2
    protected function generateApi(FileGenerator $generator, array $properties)
145
    {
146
        $generator->directory('classes', function ($generator) use ($properties) {
147 2
            $generator->directory('Providers')
148 2
                ->file('AddonServiceProvider.php')->template('AddonServiceProvider.php', $properties);
149 2
            $generator->directory('Providers')
150 2
                ->file('RouteServiceProvider.php')->template('RouteServiceProvider.php', $properties);
151
152 2
            $generator->keepDirectory('Console/Commands');
153
154 2
            $generator->directory('Http')
155 2
                ->file('routes.php')->template('routes.php', $properties);
156 2
            $generator->directory('Http/Controllers')
157 2
                ->file('Controller.php')->template('Controller.php', $properties);
158 2
            $generator->keepDirectory('Http/Middleware');
159
160 2
            $generator->keepDirectory('Services');
161 2
        });
162
163 2
        $generator->keepDirectory('config');
164
165
        $generator->directory('resources', function ($generator) use ($properties) {
166
            $this->generateLang($generator, $properties, function ($generator) use ($properties) {
167 2
                $generator->phpConfigFile('messages.php', []);
168 2
                $generator->phpConfigFile('vocabulary.php', []);
169 2
                $generator->phpConfigFile('methods.php', []);
170 2
            });
171
172 2
            $generator->directory('specs')->phpConfigFile('methods.php', []);
173 2
        });
174
175
        $generator->directory('tests', function ($generator) use ($properties) {
176 2
            $generator->file('TestCase.php')->template('TestCase.php', $properties);
177 2
        });
178
179 2
        $generator->phpBlankFile('helpers.php');
180
181 2
        $this->generateAddonConfig($generator, $properties['namespace'], [
182 2
            'namespace' => new Constant('__NAMESPACE__'),
183
            'directories' => [
184 2
                'classes',
185 2
            ],
186
            'files' => [
187 2
                'helpers.php',
188 2
            ],
189
            'paths' => [
190 2
                'config' => 'config',
191 2
                'lang' => 'resources/lang',
192 2
                'specs' => 'resources/specs',
193 2
            ],
194
            'providers' => [
195 2
                new ClassName('Providers\AddonServiceProvider'),
196 2
                new ClassName('Providers\RouteServiceProvider'),
197 2
            ],
198
            'http' => [
199 2
                'prefix' => 'addons/'.$properties['addon_name'],
200 2
            ],
201 2
        ]);
202 2
    }
203
204 5
    protected function generateUi(FileGenerator $generator, array $properties)
205
    {
206
        $generator->directory('classes', function ($generator) use ($properties) {
207 4
            $migration_class = $properties['addon_class'].'_1_0';
208
209 4
            $generator->directory('Providers')
210 4
                ->file('AddonServiceProvider.php')->template('AddonServiceProvider.php', $properties);
211 4
            $generator->directory('Providers')
212 4
                ->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
216 4
            $generator->keepDirectory('Console/Commands');
217
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
222 4
            $generator->directory('Http')
223 4
                ->file('routes.php')->template('routes.php', $properties);
224 4
            $generator->directory('Http/Controllers')
225 4
                ->file('Controller.php')->template('Controller.php', $properties);
226 4
            $generator->keepDirectory('Http/Middleware');
227
228 4
            $generator->keepDirectory('Services');
229 4
        });
230
231 4
        $generator->keepDirectory('config');
232
233
        $generator->directory('resources', function ($generator) use ($properties) {
234 4
            $generator->keepDirectory('assets');
235
236
            $this->generateLang($generator, $properties, function ($generator) use ($properties) {
237 4
                $generator->phpConfigFile('messages.php', []);
238 4
                $generator->phpConfigFile('vocabulary.php', []);
239 4
                $generator->phpConfigFile('forms.php', []);
240 4
            });
241
242 4
            $generator->directory('specs')->phpConfigFile('forms.php', []);
243
244 4
            $generator->directory('views')
245 4
                ->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 5
        });
249
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
256 4
        $this->generateAddonConfig($generator, $properties['namespace'], [
257 4
            'namespace' => new Constant('__NAMESPACE__'),
258
            'directories' => [
259 4
                'classes',
260 4
            ],
261
            'files' => [
262 4
                'helpers.php',
263 4
            ],
264
            'paths' => [
265 4
                'config' => 'config',
266 4
                'assets' => 'resources/assets',
267 4
                'lang' => 'resources/lang',
268 4
                'specs' => 'resources/specs',
269 4
                'views' => 'resources/views',
270 4
            ],
271
            'providers' => [
272 4
                new ClassName('Providers\AddonServiceProvider'),
273 4
                new ClassName('Providers\DatabaseServiceProvider'),
274 4
                new ClassName('Providers\RouteServiceProvider'),
275 4
            ],
276
            'http' => [
277 4
                'prefix' => 'addons/'.$properties['addon_name'],
278 4
            ],
279 4
        ]);
280 4
    }
281
282 2
    protected function generateDebug(FileGenerator $generator, array $properties)
283
    {
284 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
290 2
            $generator->keepDirectory('Console/Commands');
291
292 2
            $generator->directory('Http')
293 2
                ->file('routes.php')->template('routes.php', $properties);
294 2
            $generator->directory('Http/Controllers')
295 2
                ->file('Controller.php')->template('Controller.php', $properties);
296 2
            $generator->directory('Http/Controllers')
297 2
                ->file('DebugController.php')->template('DebugController.php', $properties);
298 2
            $generator->keepDirectory('Http/Middleware');
299
300 2
            $generator->keepDirectory('Services');
301 2
        });
302
303 2
        $generator->keepDirectory('config');
304
305
        $generator->directory('resources', function ($generator) use ($properties) {
306
            $this->generateLang($generator, $properties, function ($generator) use ($properties) {
307 2
                $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
313 2
            $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 2
            $generator->directory('views')
319 2
                ->file('layout.blade.php')->template('layout.blade.php', $properties);
320 2
        });
321
322 2
        $generator->phpBlankFile('helpers.php');
323
324 2
        $this->generateAddonConfig($generator, $properties['namespace'], [
325 2
            'namespace' => new Constant('__NAMESPACE__'),
326
            'directories' => [
327 2
                'classes',
328 2
            ],
329
            'files' => [
330 2
                'helpers.php',
331 2
            ],
332
            'paths' => [
333 2
                'config' => 'config',
334 2
                'lang' => 'resources/lang',
335 2
                'specs' => 'resources/specs',
336 2
                'views' => 'resources/views',
337 2
            ],
338
            'providers' => [
339 2
                new ClassName('Providers\AddonServiceProvider'),
340 2
                new ClassName('Providers\RouteServiceProvider'),
341 2
            ],
342
            'http' => [
343 2
                'prefix' => 'debug',
344 2
            ],
345 2
        ]);
346 2
    }
347
348 2
    protected function generateGenerator(FileGenerator $generator, array $properties)
349
    {
350
        $generator->directory('classes', function ($generator) use ($properties) {
351 2
            $generator->directory('Providers')
352 2
                ->file('AddonServiceProvider.php')->template('AddonServiceProvider.php', $properties);
353 2
        });
354
355
        $generator->directory('config', function ($generator) use ($properties) {
356 2
            $generator->file('commands.php')->template('commands.php', $properties);
357 2
        });
358
359
        $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 2
            $generator->sourceFile('_middleware.stub');
369 2
            $generator->sourceFile('_migration.stub');
370 2
            $generator->sourceFile('_migration-create.stub');
371 2
            $generator->sourceFile('_migration-update.stub');
372 2
            $generator->sourceFile('_model.stub');
373 2
            $generator->sourceFile('_policy.stub');
374 2
            $generator->sourceFile('_provider.stub');
375 2
            $generator->sourceFile('_request.stub');
376 2
            $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
            'directories' => [
383 2
                'classes',
384 2
            ],
385
            'files' => [
386 2
            ],
387
            'paths' => [
388 2
                'config' => 'config',
389 2
            ],
390
            'providers' => [
391 2
                new ClassName('Providers\AddonServiceProvider'),
392 2
            ],
393 2
        ]);
394 2
    }
395
396 2
    protected function generateLaravel5(FileGenerator $generator, array $properties)
397
    {
398 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 2
                ->file('RouteServiceProvider.php')->template('RouteServiceProvider.php', $properties);
403
404 2
            $generator->keepDirectory('Console/Commands');
405
406 2
            $generator->directory('Http')
407 2
                ->file('routes.php')->template('routes.php', $properties);
408 2
            $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 2
            $generator->keepDirectory('Services');
415 2
        });
416
417 2
        $generator->keepDirectory('config');
418
419
        $generator->directory('database', function ($generator) use ($properties) {
420 2
            $generator->keepDirectory('factories');
421 2
            $generator->keepDirectory('migrations');
422 2
            $generator->keepDirectory('seeds');
423 2
        });
424
425
        $generator->directory('resources', function ($generator) use ($properties) {
426 2
            $generator->keepDirectory('assets');
427
428
            $this->generateLang($generator, $properties, function ($generator) use ($properties) {
429 2
                $generator->phpConfigFile('messages.php', []);
430 2
            });
431
432 2
            $generator->keepDirectory('views');
433 2
        });
434
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
441 2
        $this->generateAddonConfig($generator, $properties['namespace'], [
442 2
            'namespace' => new Constant('__NAMESPACE__'),
443
            'directories' => [
444 2
                'classes',
445 2
            ],
446
            'files' => [
447 2
                'helpers.php',
448 2
            ],
449
            'paths' => [
450 2
                'config' => 'config',
451 2
                'assets' => 'resources/assets',
452 2
                'lang' => 'resources/lang',
453 2
                'views' => 'resources/views',
454 2
            ],
455
            'providers' => [
456 2
                new ClassName('Providers\AddonServiceProvider'),
457 2
                new ClassName('Providers\RouteServiceProvider'),
458 2
            ],
459
            'http' => [
460 2
                'prefix' => 'addons/'.$properties['addon_name'],
461 2
            ],
462 2
        ]);
463 2
    }
464
465 2
    protected function generateSampleUi(FileGenerator $generator, array $properties)
466
    {
467
        $generator->directory('classes', function ($generator) use ($properties) {
468 2
            $migration_class = $properties['addon_class'].'_1_0';
469
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
479 2
            $generator->directory('Database/Migrations')
480 2
                ->file($migration_class.'.php')->template('Migration.php', array_merge($properties, ['class_name' => $migration_class]));
481 2
            $generator->keepDirectory('Database/Seeds');
482
483 2
            $generator->directory('Http')
484 2
                ->file('routes.php')->template('routes.php', $properties);
485 2
            $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
491 2
            $generator->keepDirectory('Services');
492 2
        });
493
494 2
        $generator->keepDirectory('config');
495
496
        $generator->directory('resources', function ($generator) use ($properties) {
497 2
            $generator->keepDirectory('assets');
498
499
            $this->generateLang($generator, $properties, function ($generator) use ($properties) {
500 2
                $generator->phpConfigFile('messages.php', []);
501 2
                $generator->phpConfigFile('vocabulary.php', []);
502 2
                $generator->phpConfigFile('forms.php', []);
503 2
            });
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
            }
508
509 2
            $generator->directory('specs')->phpConfigFile('forms.php', []);
510
511 2
            $generator->directory('views')
512 2
                ->file('index.blade.php')->template('index.blade.php', $properties);
513 2
            $generator->directory('views')
514 2
                ->file('layout.blade.php')->template('layout.blade.php', $properties);
515 2
        });
516
517
        $generator->directory('tests', function ($generator) use ($properties) {
518 2
            $generator->file('TestCase.php')->template('TestCase.php', $properties);
519 2
        });
520
521 2
        $generator->phpBlankFile('helpers.php');
522
523 2
        $this->generateAddonConfig($generator, $properties['namespace'], [
524 2
            'namespace' => new Constant('__NAMESPACE__'),
525
            'directories' => [
526 2
                'classes',
527 2
            ],
528
            'files' => [
529 2
                'helpers.php',
530 2
            ],
531
            'paths' => [
532 2
                'config' => 'config',
533 2
                'assets' => 'resources/assets',
534 2
                'lang' => 'resources/lang',
535 2
                'specs' => 'resources/specs',
536 2
                'views' => 'resources/views',
537 2
            ],
538
            'providers' => [
539 2
                new ClassName('Providers\AddonServiceProvider'),
540 2
                new ClassName('Providers\DatabaseServiceProvider'),
541 2
                new ClassName('Providers\RouteServiceProvider'),
542 2
            ],
543
            'http' => [
544 2
                'prefix' => 'addons/'.$properties['addon_name'],
545 2
            ],
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 2
            $generator->keepDirectory('Database/Seeds');
556
557 2
            $generator->templateDirectory('Http', $properties);
558
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
        $generator->directory('resources', function ($generator) use ($properties) {
569 2
            $generator->keepDirectory('assets');
570
571 2
            $generator->sourceDirectory('lang');
572
            $this->generateLang($generator, $properties, function ($generator) use ($properties) {
573 2
                $generator->phpConfigFile('messages.php', []);
574 2
                $generator->phpConfigFile('vocabulary.php', []);
575 2
                $generator->phpConfigFile('forms.php', []);
576 2
            });
577
578 2
            $generator->directory('specs')->phpConfigFile('forms.php', []);
579
580 2
            $generator->sourceDirectory('views');
581 2
        });
582
583 2
        $generator->sourceDirectory('public');
584
585 2
        $generator->templateDirectory('tests', $properties);
586
587 2
        $generator->phpBlankFile('helpers.php');
588
589 2
        $this->generateAddonConfig($generator, $properties['namespace'], [
590 2
            'namespace' => new Constant('__NAMESPACE__'),
591
            'directories' => [
592 2
                'classes',
593 2
            ],
594
            'files' => [
595 2
                'helpers.php',
596 2
            ],
597
            '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 2
            ],
604
            'http' => [
605
                'middlewares' => [
606 2
                ],
607
                'route_middlewares' => [
608 2
                    'auth' => new ClassName('Http\Middleware\Authenticate'),
609 2
                    'auth.basic' => new ClassName('Illuminate\Auth\Middleware\AuthenticateWithBasicAuth'),
610 2
                    'guest' => new ClassName('Http\Middleware\RedirectIfAuthenticated'),
611 2
                ],
612 2
            ],
613
            'providers' => [
614 2
                new ClassName('Providers\AddonServiceProvider'),
615 2
                new ClassName('Providers\DatabaseServiceProvider'),
616 2
                new ClassName('Providers\RouteServiceProvider'),
617 2
            ],
618
            'http' => [
619 2
                'prefix' => 'addons/'.$properties['addon_name'],
620 2
            ],
621 2
        ]);
622 2
    }
623
624
    protected function generateLang(FileGenerator $generator, array $properties, callable $callable)
625
    {
626 11
        $generator->directory('lang', function ($generator) use ($properties, $callable) {
627 11
            foreach ($properties['languages'] as $lang) {
628 11
                $generator->directory($lang, $callable);
629 11
            }
630 11
        });
631 11
    }
632
633 19
    protected function generateAddonConfig(FileGenerator $generator, $namespace, array $data)
634
    {
635
        $defaults = [
636 19
            'version' => 5,
637 19
            'namespace' => '',
638
            'directories' => [
639
                // path
640 19
            ],
641
            'files' => [
642
                // path
643 19
            ],
644
            'paths' => [
645
                // role => path
646 19
            ],
647
            'providers' => [
648
                // class
649 19
            ],
650
            'console' => [
651
                'commands' => [
652
                    // class
653 19
                ],
654 19
            ],
655
            'http' => [
656 19
                'prefix' => '',
657
                'middlewares' => [
658
                    // class
659 19
                ],
660
                'route_middlewares' => [
661
                    // name => class
662 19
                ],
663 19
            ],
664 19
            'includes_global_aliases' => true,
665
            'aliases' => [
666
                // name => class
667 19
            ],
668 19
        ];
669
670 19
        $data = array_replace($defaults, $data);
671
672 19
        $generator->phpConfigFile('addon.php', $data, $namespace);
0 ignored issues
show
Unused Code introduced by
The call to FileGenerator::phpConfigFile() has too many arguments starting with $namespace.

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress.

In this case you can add the @ignore PhpDoc annotation to the duplicate definition and it will be ignored.

Loading history...
673 19
    }
674
}
675