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

Generator::generateSimple()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 45
Code Lines 28

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 30
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 45
ccs 30
cts 30
cp 1
rs 8.8571
cc 1
eloc 28
nc 1
nop 2
crap 1
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