Completed
Push — master ( 880a30...6b3c1e )
by Fumio
02:31
created

Generator::generateSampleUi()   B

Complexity

Conditions 2
Paths 1

Size

Total Lines 80
Code Lines 55

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 56
CRAP Score 2.0002

Importance

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