Completed
Push — master ( 1e089b...040cb4 )
by Fumio
02:56
created

Generator::generateApi()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 69
Code Lines 46

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 47
CRAP Score 1

Importance

Changes 4
Bugs 0 Features 0
Metric Value
cc 1
eloc 46
c 4
b 0
f 0
nc 1
nop 2
dl 0
loc 69
ccs 47
cts 47
cp 1
crap 1
rs 9.2083

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 1
const ADDON_VERSION = 5;
10
11
class Generator
12
{
13 39
    public function __construct() {
14 39
        $this->DEFAULTS = [
0 ignored issues
show
Bug introduced by
The property DEFAULTS does not exist. Did you maybe forget to declare it?

In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:

class MyClass { }

$x = new MyClass();
$x->foo = true;

Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion:

class MyClass {
    public $foo;
}

$x = new MyClass();
$x->foo = true;
Loading history...
15 39
            'namespace' => '',
16
            'directories' => [
17
                // path
18 39
            ],
19
            'files' => [
20
                // path
21 39
            ],
22
            'paths' => [
23
                // role => path
24 39
            ],
25
            'providers' => [
26
                // class
27 39
            ],
28
            'console' => [
29
                'commands' => [
30
                    // class
31 39
                ],
32 39
            ],
33 39
            'includes_global_aliases' => true,
34
            'aliases' => [
35
                // name => class
36 39
            ],
37
            'http' => [
38
                'middlewares' => [
39
                    // class
40 39
                ],
41
                'route_middlewares' => [
42
                    // name => class
43 39
                ],
44 39
            ],
45
            'routes' => [
46 39
            ],
47
        ];
48 39
    }
49
50
    /**
51
     * @param string $path
52
     * @param string $type
53
     * @param array  $properties
54
     */
55 19
    public function generateAddon($path, $type, array $properties)
56
    {
57 19
        $generator = FileGenerator::make($path, __DIR__.'/stubs/'.$type);
58
59 19
        $method = 'generate'.studly_case($type);
60
61 19
        call_user_func([$this, $method], $generator, $properties);
62 19
    }
63
64 8
    protected function generateMinimum(FileGenerator $generator, array $properties)
65
    {
66 8
        $generator->directory('classes')
67 8
            ->file('AddonServiceProvider.php')->template('AddonServiceProvider.php', $properties);
68
69 8
        $this->generateAddonConfig($generator, $properties['namespace'], [
70 8
            'namespace' => new Constant('__NAMESPACE__'),
71
            'directories' => [
72 8
                'classes',
73 8
            ],
74
            'paths' => [
75 8
            ],
76
            'providers' => [
77 8
                new ClassName('AddonServiceProvider'),
78 8
            ],
79 8
        ]);
80 8
    }
81
82 2
    protected function generateSimple(FileGenerator $generator, array $properties)
83
    {
84
        $generator->directory('classes', function ($generator) use ($properties) {
85 2
            $generator->directory('Providers')
86 2
                ->file('AddonServiceProvider.php')->template('AddonServiceProvider.php', $properties);
87 2
            $generator->directory('Providers')
88 2
                ->file('RouteServiceProvider.php')->template('RouteServiceProvider.php', $properties);
89
90 2
            $generator->directory('Http')->phpBlankFile('routes.php');
91 2
            $generator->keepDirectory('Http/Controllers');
92
93 2
            $generator->keepDirectory('Services');
94 2
        });
95
96 2
        $generator->keepDirectory('config');
97
98
        $this->generateLang($generator, $properties, function ($generator) use ($properties) {
99 2
            $generator->gitKeepFile();
100 2
        });
101
102 2
        $generator->keepDirectory('views');
103
104 2
        $generator->phpBlankFile('helpers.php');
105
106 2
        $this->generateAddonConfig($generator, $properties['namespace'], [
107 2
            'namespace' => new Constant('__NAMESPACE__'),
108
            'directories' => [
109 2
                'classes',
110 2
            ],
111
            'files' => [
112 2
                'helpers.php',
113 2
            ],
114
            'paths' => [
115 2
                'config' => 'config',
116 2
                'lang' => 'lang',
117 2
                'views' => 'views',
118 2
            ],
119
            'providers' => [
120 2
                new ClassName('Providers\AddonServiceProvider'),
121 2
                new ClassName('Providers\RouteServiceProvider'),
122 2
            ],
123
            'http' => [
124
                'middlewares' => [
125 2
                ],
126
                'route_middlewares' => [
127 2
                ],
128 2
            ],
129
            'routes' => [
130 2
                'domain' => new Constant("env('APP_ADDON_DOMAIN')"),
131 2
                'prefix' => new Constant("env('APP_ADDON_PATH', '".$properties['addon_name']."')"),
132 2
                'middleware' => [],
133
                'files' => [
134
                    'classes/Http/routes.php'
135 2
                ],
136 2
            ],
137 2
        ], $this->DEFAULTS);
138 2
    }
139
140 1
    protected function generateAsset(FileGenerator $generator, array $properties)
141
    {
142
        $generator->directory('assets', function ($generator) use ($properties) {
0 ignored issues
show
Unused Code introduced by
The parameter $generator is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
143 1
        });
144
145 1
        $generator->file('gulpfile.js')->template('gulpfile.js', $properties);
146
147 1
        $this->generateAddonConfig($generator, $properties['namespace'], [
148
            'paths' => [
149 1
                'assets' => 'assets',
150 1
            ],
151 1
        ]);
152 1
    }
153
154 2
    protected function generateLibrary(FileGenerator $generator, array $properties)
155
    {
156
        $generator->directory('classes', function ($generator) use ($properties) {
157 2
            $migration_class = $properties['addon_class'].'_1_0';
158
159 2
            $generator->directory('Providers')
160 2
                ->file('AddonServiceProvider.php')->template('AddonServiceProvider.php', $properties);
161 2
            $generator->directory('Providers')
162 2
                ->file('DatabaseServiceProvider.php')->template('DatabaseServiceProvider.php', array_merge($properties, ['migration_class_name' => $migration_class]));
163
164 2
            $generator->keepDirectory('Console/Commands');
165
166 2
            $generator->directory('Database/Migrations')
167 2
                ->file($migration_class.'.php')->template('Migration.php', array_merge($properties, ['class_name' => $migration_class]));
168 2
            $generator->keepDirectory('Database/Seeds');
169
170 2
            $generator->keepDirectory('Services');
171 2
        });
172
173 2
        $generator->keepDirectory('config');
174
175
        $this->generateLang($generator, $properties, function ($generator) use ($properties) {
176 2
            $generator->phpConfigFile('messages.php', []);
177 2
        });
178
179
        $generator->directory('tests', function ($generator) use ($properties) {
180 2
            $generator->file('TestCase.php')->template('TestCase.php', $properties);
181 2
        });
182
183 2
        $generator->phpBlankFile('helpers.php');
184
185 2
        $this->generateAddonConfig($generator, $properties['namespace'], [
186 2
            'namespace' => new Constant('__NAMESPACE__'),
187
            'directories' => [
188 2
                'classes',
189 2
            ],
190
            'files' => [
191 2
                'helpers.php',
192 2
            ],
193
            'paths' => [
194 2
                'config' => 'config',
195 2
                'lang' => 'lang',
196 2
                'tests' => 'tests',
197 2
            ],
198
            'providers' => [
199 2
                new ClassName('Providers\AddonServiceProvider'),
200 2
                new ClassName('Providers\DatabaseServiceProvider'),
201 2
            ],
202 2
        ], $this->DEFAULTS);
203 2
    }
204
205 2
    protected function generateApi(FileGenerator $generator, array $properties)
206
    {
207
        $generator->directory('classes', function ($generator) use ($properties) {
208 2
            $generator->directory('Providers')
209 2
                ->file('AddonServiceProvider.php')->template('AddonServiceProvider.php', $properties);
210 2
            $generator->directory('Providers')
211 2
                ->file('RouteServiceProvider.php')->template('RouteServiceProvider.php', $properties);
212
213 2
            $generator->keepDirectory('Console/Commands');
214
215 2
            $generator->directory('Http')
216 2
                ->file('routes.php')->template('routes.php', $properties);
217 2
            $generator->directory('Http/Controllers')
218 2
                ->file('Controller.php')->template('Controller.php', $properties);
219 2
            $generator->keepDirectory('Http/Middleware');
220
221 2
            $generator->keepDirectory('Services');
222 2
        });
223
224 2
        $generator->keepDirectory('config');
225
226
        $this->generateLang($generator, $properties, function ($generator) use ($properties) {
227 2
            $generator->phpConfigFile('messages.php', []);
228 2
            $generator->phpConfigFile('vocabulary.php', []);
229 2
            $generator->phpConfigFile('methods.php', []);
230 2
        });
231
232 2
        $generator->directory('specs')->phpConfigFile('methods.php', []);
233
234
        $generator->directory('tests', function ($generator) use ($properties) {
235 2
            $generator->file('TestCase.php')->template('TestCase.php', $properties);
236 2
        });
237
238 2
        $generator->phpBlankFile('helpers.php');
239
240 2
        $this->generateAddonConfig($generator, $properties['namespace'], [
241 2
            'namespace' => new Constant('__NAMESPACE__'),
242
            'directories' => [
243 2
                'classes',
244 2
            ],
245
            'files' => [
246 2
                'helpers.php',
247 2
            ],
248 1
            'paths' => [
249 2
                'config' => 'config',
250 2
                'lang' => 'lang',
251 2
                'specs' => 'specs',
252 2
                'tests' => 'tests',
253 2
            ],
254
            'providers' => [
255 2
                new ClassName('Providers\AddonServiceProvider'),
256 2
                new ClassName('Providers\RouteServiceProvider'),
257 2
            ],
258
            'http' => [
259
                'middlewares' => [
260 2
                ],
261
                'route_middlewares' => [
262 2
                ],
263 2
            ],
264
            'routes' => [
265 2
                'domain' => new Constant("env('APP_ADDON_DOMAIN')"),
266 2
                'prefix' => new Constant("env('APP_ADDON_PATH', '".$properties['addon_name']."')"),
267 2
                'middleware' => ['api'],
268
                'files' => [
269
                    'classes/Http/routes.php'
270 2
                ],
271 2
            ],
272 2
        ], $this->DEFAULTS);
273 2
    }
274
275 4
    protected function generateUi(FileGenerator $generator, array $properties)
276
    {
277 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...
278 4
            $migration_class = $properties['addon_class'].'_1_0';
279
280
//            $generator->keepDirectory('Console/Commands');
0 ignored issues
show
Unused Code Comprehensibility introduced by
75% of this comment could be valid code. Did you maybe forget this after debugging?

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

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

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

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

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

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

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

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

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

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

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

Loading history...
288
289 4
            $generator->templateDirectory('Providers', array_merge($properties, ['migration_class_name' => $migration_class]));
290
291 4
            $generator->keepDirectory('Services');
292 4
        });
293
294 4
        $generator->keepDirectory('config');
295
296 4
        $generator->keepDirectory('assets');
297
298
        $this->generateLang($generator, $properties, function ($generator) use ($properties) {
299 4
            $generator->phpConfigFile('messages.php', []);
300 4
            $generator->phpConfigFile('vocabulary.php', []);
301 4
            $generator->phpConfigFile('forms.php', []);
302 4
        });
303
304 4
        $generator->directory('specs')->phpConfigFile('forms.php', []);
305
306 4
        $generator->templateDirectory('views', $properties);
307
308 4
        $generator->templateDirectory('tests', $properties);
309
310 4
        $generator->phpBlankFile('helpers.php');
311
312 4
        $this->generateAddonConfig($generator, $properties['namespace'], [
313 4
            'namespace' => new Constant('__NAMESPACE__'),
314
            'directories' => [
315 4
                'classes',
316 4
            ],
317
            'files' => [
318 4
                'helpers.php',
319 4
            ],
320
            'paths' => [
321 4
                'config' => 'config',
322 4
                'assets' => 'assets',
323 4
                'lang' => 'lang',
324 4
                'specs' => 'specs',
325 4
                'views' => 'views',
326 4
                'tests' => 'tests',
327 4
            ],
328
            'providers' => [
329 4
                new ClassName('Providers\AddonServiceProvider'),
330 4
                new ClassName('Providers\DatabaseServiceProvider'),
331 4
                new ClassName('Providers\RouteServiceProvider'),
332 4
            ],
333
            'http' => [
334
                'middlewares' => [
335 4
                ],
336
                'route_middlewares' => [
337 4
                ],
338 4
            ],
339
            'routes' => [
340 4
                'domain' => new Constant("env('APP_ADDON_DOMAIN')"),
341 4
                'prefix' => new Constant("env('APP_ADDON_PATH', '".$properties['addon_name']."')"),
342 4
                'middleware' => ['web'],
343
                'files' => [
344
                    'classes/Http/routes.php'
345 4
                ],
346 4
            ],
347 4
        ], $this->DEFAULTS);
348 4
    }
349
350 2
    protected function generateUiSample(FileGenerator $generator, array $properties)
351
    {
352 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...
353 2
            $migration_class = $properties['addon_class'].'_1_0';
354
355 2
            $generator->directory('Database/Migrations')
356 2
                ->file($migration_class.'.php')->template('classes/Database/Migration.php', array_merge($properties, ['class_name' => $migration_class]));
357
358 2
            $generator->templateDirectory('Http', $properties);
359
360 2
            $generator->templateDirectory('Providers', array_merge($properties, ['migration_class_name' => $migration_class]));
361
362 2
            $generator->keepDirectory('Services');
363 2
        });
364
365 2
        $generator->keepDirectory('config');
366
367 2
        $generator->keepDirectory('assets');
368
369
        $this->generateLang($generator, $properties, function ($generator) use ($properties) {
370 2
            $generator->phpConfigFile('messages.php', []);
371 2
            $generator->phpConfigFile('vocabulary.php', []);
372 2
            $generator->phpConfigFile('forms.php', []);
373 2
        });
374 2
        $generator->directory('lang/en')->file('messages.php')->template('lang/en-messages.php', $properties);
375 2
        if (in_array('ja', $properties['languages'])) {
376
            $generator->directory('lang/ja')->file('messages.php')->template('lang/ja-messages.php', $properties);
377
        }
378
379 2
        $generator->directory('specs')->phpConfigFile('forms.php', []);
380
381 2
        $generator->templateDirectory('views', $properties);
382
383 2
        $generator->templateDirectory('tests', $properties);
384
385 2
        $generator->phpBlankFile('helpers.php');
386
387 2
        $this->generateAddonConfig($generator, $properties['namespace'], [
388 2
            'namespace' => new Constant('__NAMESPACE__'),
389
            'directories' => [
390 2
                'classes',
391 2
            ],
392
            'files' => [
393 2
                'helpers.php',
394 2
            ],
395
            'paths' => [
396 2
                'config' => 'config',
397 2
                'assets' => 'assets',
398 2
                'lang' => 'lang',
399 2
                'specs' => 'specs',
400 2
                'views' => 'views',
401 2
                'tests' => 'tests',
402 2
            ],
403
            'providers' => [
404 2
                new ClassName('Providers\AddonServiceProvider'),
405 2
                new ClassName('Providers\DatabaseServiceProvider'),
406 2
                new ClassName('Providers\RouteServiceProvider'),
407 2
            ],
408
            'http' => [
409
                'middlewares' => [
410 2
                ],
411
                'route_middlewares' => [
412 2
                ],
413 2
            ],
414
            'routes' => [
415 2
                'domain' => new Constant("env('APP_ADDON_DOMAIN')"),
416 2
                'prefix' => new Constant("env('APP_ADDON_PATH', '".$properties['addon_name']."')"),
417 2
                'middleware' => ['web'],
418
                'files' => [
419
                    'classes/Http/routes.php'
420 2
                ],
421 2
            ],
422 2
        ], $this->DEFAULTS);
423 2
    }
424
425 2
    protected function generateDebug(FileGenerator $generator, array $properties)
426
    {
427 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...
428 2
            $generator->directory('Providers')
429 2
                ->file('AddonServiceProvider.php')->template('AddonServiceProvider.php', $properties);
430 2
            $generator->directory('Providers')
431 2
                ->file('RouteServiceProvider.php')->template('RouteServiceProvider.php', $properties);
432
433 2
            $generator->keepDirectory('Console/Commands');
434
435 2
            $generator->directory('Http')
436 2
                ->file('routes.php')->template('routes.php', $properties);
437 2
            $generator->directory('Http/Controllers')
438 2
                ->file('Controller.php')->template('Controller.php', $properties);
439 2
            $generator->directory('Http/Controllers')
440 2
                ->file('DebugController.php')->template('DebugController.php', $properties);
441 2
            $generator->keepDirectory('Http/Middleware');
442
443 2
            $generator->keepDirectory('Services');
444 2
        });
445
446 2
        $generator->keepDirectory('config');
447
448
        $this->generateLang($generator, $properties, function ($generator) use ($properties) {
449 2
            $generator->phpConfigFile('messages.php', []);
450 2
            $generator->phpConfigFile('vocabulary.php', []);
451 2
            $generator->phpConfigFile('forms.php', []);
452 2
            $generator->phpConfigFile('methods.php', []);
453 2
        });
454
455 2
        $generator->directory('specs')->phpConfigFile('forms.php', []);
456 2
        $generator->directory('specs')->phpConfigFile('methods.php', []);
457
458 2
        $generator->directory('views')
459 2
            ->file('index.blade.php')->template('index.blade.php', $properties);
460 2
        $generator->directory('views')
461 2
            ->file('layout.blade.php')->template('layout.blade.php', $properties);
462
463 2
        $generator->phpBlankFile('helpers.php');
464
465 2
        $this->generateAddonConfig($generator, $properties['namespace'], [
466 2
            'namespace' => new Constant('__NAMESPACE__'),
467
            'directories' => [
468 2
                'classes',
469 2
            ],
470
            'files' => [
471 2
                'helpers.php',
472 2
            ],
473
            'paths' => [
474 2
                'config' => 'config',
475 2
                'lang' => 'lang',
476 2
                'specs' => 'specs',
477 2
                'views' => 'views',
478 2
                'tests' => 'tests',
479 2
            ],
480
            'providers' => [
481 2
                new ClassName('Providers\AddonServiceProvider'),
482 2
                new ClassName('Providers\RouteServiceProvider'),
483 2
            ],
484
            'http' => [
485
                'middlewares' => [
486 2
                ],
487
                'route_middlewares' => [
488 2
                ],
489 2
            ],
490
            'routes' => [
491 2
                'domain' => new Constant("env('APP_ADDON_DOMAIN')"),
492 2
                'prefix' => new Constant("env('APP_ADDON_PATH', 'debug')"),
493 2
                'middleware' => ['web'],
494
                'files' => [
495
                    'classes/Http/routes.php'
496 2
                ],
497 2
            ],
498 2
        ], $this->DEFAULTS);
499 2
    }
500
501 2
    protected function generateGenerator(FileGenerator $generator, array $properties)
502
    {
503
        $generator->directory('classes', function ($generator) use ($properties) {
504 2
            $generator->directory('Providers')
505 2
                ->file('AddonServiceProvider.php')->template('AddonServiceProvider.php', $properties);
506 2
        });
507
508
        $generator->directory('config', function ($generator) use ($properties) {
509 2
            $generator->file('commands.php')->template('commands.php', $properties);
510 2
        });
511
512
        $generator->directory('stubs', function ($generator) use ($properties) {
513 2
            $generator->sourceFile('_console.stub');
514 2
            $generator->sourceFile('_controller.stub');
515 2
            $generator->sourceFile('_controller-resource.stub');
516 2
            $generator->sourceFile('_event.stub');
517 2
            $generator->sourceFile('_job.stub');
518 2
            $generator->sourceFile('_job-queued.stub');
519 2
            $generator->sourceFile('_listener.stub');
520 2
            $generator->sourceFile('_listener-queued.stub');
521 2
            $generator->sourceFile('_middleware.stub');
522 2
            $generator->sourceFile('_migration.stub');
523 2
            $generator->sourceFile('_migration-create.stub');
524 2
            $generator->sourceFile('_migration-update.stub');
525 2
            $generator->sourceFile('_model.stub');
526 2
            $generator->sourceFile('_policy.stub');
527 2
            $generator->sourceFile('_provider.stub');
528 2
            $generator->sourceFile('_request.stub');
529 2
            $generator->sourceFile('_seeder.stub');
530 2
            $generator->sourceFile('_test.stub');
531 2
        });
532
533 2
        $this->generateAddonConfig($generator, $properties['namespace'], [
534 2
            'namespace' => new Constant('__NAMESPACE__'),
535
            'directories' => [
536 2
                'classes',
537 2
            ],
538
            'paths' => [
539 2
                'config' => 'config',
540 2
            ],
541
            'providers' => [
542 2
                new ClassName('Providers\AddonServiceProvider'),
543 2
            ],
544 2
        ]);
545 2
    }
546
547 2
    protected function generateLaravel5(FileGenerator $generator, array $properties)
548
    {
549 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...
550 2
            $generator->directory('Providers')
551 2
                ->file('AddonServiceProvider.php')->template('AddonServiceProvider.php', $properties);
552 2
            $generator->directory('Providers')
553 2
                ->file('RouteServiceProvider.php')->template('RouteServiceProvider.php', $properties);
554
555 2
            $generator->keepDirectory('Console/Commands');
556
557 2
            $generator->directory('Http')
558 2
                ->file('routes.php')->template('routes.php', $properties);
559 2
            $generator->directory('Http/Controllers')
560 2
                ->file('Controller.php')->template('Controller.php', $properties);
561 2
            $generator->keepDirectory('Http/Middleware');
562 2
            $generator->directory('Http/Requests')
563 2
                ->file('Request.php')->template('Request.php', $properties);
564
565 2
            $generator->keepDirectory('Services');
566 2
        });
567
568 2
        $generator->keepDirectory('config');
569
570
        $generator->directory('database', function ($generator) use ($properties) {
571 2
            $generator->keepDirectory('factories');
572 2
            $generator->keepDirectory('migrations');
573 2
            $generator->keepDirectory('seeds');
574 2
        });
575
576
        $generator->directory('resources', function ($generator) use ($properties) {
577 2
            $generator->keepDirectory('assets');
578
579
            $this->generateLang($generator, $properties, function ($generator) use ($properties) {
580 2
                $generator->phpConfigFile('messages.php', []);
581 2
            });
582
583 2
            $generator->keepDirectory('views');
584 2
        });
585
586
        $generator->directory('tests', function ($generator) use ($properties) {
587 2
            $generator->file('TestCase.php')->template('TestCase.php', $properties);
588 2
        });
589
590 2
        $generator->phpBlankFile('helpers.php');
591
592 2
        $this->generateAddonConfig($generator, $properties['namespace'], [
593 2
            'namespace' => new Constant('__NAMESPACE__'),
594
            'directories' => [
595 2
                'classes',
596 2
            ],
597
            'files' => [
598 2
                'helpers.php',
599 2
            ],
600
            'paths' => [
601 2
                'config' => 'config',
602 2
                'assets' => 'resources/assets',
603 2
                'lang' => 'resources/lang',
604 2
                'views' => 'resources/views',
605 2
            ],
606
            'providers' => [
607 2
                new ClassName('Providers\AddonServiceProvider'),
608 2
                new ClassName('Providers\RouteServiceProvider'),
609 2
            ],
610
            'http' => [
611
                'middlewares' => [
612 2
                ],
613
                'route_middlewares' => [
614 2
                ],
615 2
            ],
616
            'routes' => [
617 2
                'domain' => new Constant("env('APP_ADDON_DOMAIN')"),
618 2
                'prefix' => new Constant("env('APP_ADDON_PATH', '".$properties['addon_name']."')"),
619 2
                'middleware' => ['web'],
620
                'files' => [
621
                    'classes/Http/routes.php'
622 2
                ],
623 2
            ],
624 2
        ], $this->DEFAULTS);
625 2
    }
626
627 2
    protected function generateLaravel5Auth(FileGenerator $generator, array $properties)
628
    {
629
        $generator->directory('classes', function ($generator) use ($properties) {
630 2
            $generator->keepDirectory('Console/Commands');
631
632 2
            $generator->templateDirectory('Database/Migrations', $properties);
633 2
            $generator->keepDirectory('Database/Seeds');
634
635 2
            $generator->templateDirectory('Http', $properties);
636
637 2
            $generator->templateDirectory('Providers', $properties);
638
639 2
            $generator->keepDirectory('Services');
640
641 2
            $generator->templateFile('User.php', $properties);
642 2
        });
643
644 2
        $generator->keepDirectory('config');
645
646 2
        $generator->keepDirectory('assets');
647
648 2
        $generator->sourceDirectory('lang');
649
        $this->generateLang($generator, $properties, function ($generator) use ($properties) {
650 2
            $generator->phpConfigFile('messages.php', []);
651 2
            $generator->phpConfigFile('vocabulary.php', []);
652 2
            $generator->phpConfigFile('forms.php', []);
653 2
        });
654
655 2
        $generator->directory('specs')->phpConfigFile('forms.php', []);
656
657 2
        $generator->templateDirectory('views', $properties);
658
659
//        $generator->sourceDirectory('public');
0 ignored issues
show
Unused Code Comprehensibility introduced by
75% of this comment could be valid code. Did you maybe forget this after debugging?

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

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

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

Loading history...
660
661 2
        $generator->templateDirectory('tests', $properties);
662
663 2
        $generator->phpBlankFile('helpers.php');
664
665 2
        $this->generateAddonConfig($generator, $properties['namespace'], [
666 2
            'namespace' => new Constant('__NAMESPACE__'),
667
            'directories' => [
668 2
                'classes',
669 2
            ],
670
            'files' => [
671 2
                'helpers.php',
672 2
            ],
673
            'paths' => [
674 2
                'config' => 'config',
675 2
                'assets' => 'assets',
676 2
                'lang' => 'lang',
677 2
                'specs' => 'specs',
678 2
                'views' => 'views',
679 2
                'tests' => 'tests',
680 2
            ],
681
            'providers' => [
682 2
                new ClassName('Providers\AddonServiceProvider'),
683 2
                new ClassName('Providers\DatabaseServiceProvider'),
684 2
                new ClassName('Providers\RouteServiceProvider'),
685 2
            ],
686
            'http' => [
687
                'middlewares' => [
688 2
                ],
689
                'route_middlewares' => [
690 2
                    'auth' => new ClassName('Http\Middleware\Authenticate'),
691 2
                    'auth.basic' => new ClassName('Illuminate\Auth\Middleware\AuthenticateWithBasicAuth'),
692 2
                    'guest' => new ClassName('Http\Middleware\RedirectIfAuthenticated'),
693 2
                ],
694 2
            ],
695
            'routes' => [
696 2
                'domain' => new Constant("env('APP_ADDON_DOMAIN')"),
697 2
                'prefix' => new Constant("env('APP_ADDON_PATH', '/')"),
698 2
                'middleware' => ['web'],
699
                'files' => [
700
                    'classes/Http/routes.php'
701 2
                ],
702 2
                'landing' => '/',
703 2
                'home' => '/home',
704 2
                'login' => '/login',
705 2
            ],
706 2
        ], $this->DEFAULTS);
707 2
    }
708
709
    protected function generateLang(FileGenerator $generator, array $properties, callable $callable)
710
    {
711 11
        $generator->directory('lang', function ($generator) use ($properties, $callable) {
712 11
            foreach ($properties['languages'] as $lang) {
713 11
                $generator->directory($lang, $callable);
714 11
            }
715 11
        });
716 11
    }
717
718 19
    protected function generateAddonConfig(FileGenerator $generator, $namespace, array $data, array $defaults = null)
719
    {
720 19
        if ($defaults !== null) {
721 11
            $data = array_replace($defaults, $data);
722 11
        }
723
724 19
        $data = array_merge(['version' => ADDON_VERSION], $data);
725
726 19
        $generator->phpConfigFile('addon.php', $data, $namespace);
727 19
    }
728
}
729