diff --git a/composer.json b/composer.json index d1232f0..13a872f 100755 --- a/composer.json +++ b/composer.json @@ -11,7 +11,12 @@ "migration", "model", "controller", - "repository" + "repository", + "request", + "resource", + "factory", + "seeder", + "action" ], "autoload": { "psr-4": { @@ -27,7 +32,6 @@ } ], "minimum-stability": "dev", - "prefer-stable": true, "require": { "php": "^8.0" }, diff --git a/config/laravel-generator.php b/config/laravel-generator.php index 035fcd5..4336bd8 100644 --- a/config/laravel-generator.php +++ b/config/laravel-generator.php @@ -1,5 +1,17 @@ 'default', + 'generators' => [ + 'default' => [ + 'path' => 'app', + + 'routes' => [ + /* Route for laravel generator tool */ + 'tool' => env('TH_LARAVEL_GENERATOR_URL', 'laravel-generator'), + ], + ], + ], + + 'defaults' => [], ]; \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index b9dce78..39597ec 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,10 +1,15 @@ group(function () { - Route::prefix('laravel-generator')->group(function () { +Route::namespace('TanHongIT\LaravelGenerator\Http\Controllers')->group(function (Router $router) { + $configRepository = resolve(ConfigRepository::class); + $generatorConfig = $configRepository->generatorConfig(); + + Route::prefix($generatorConfig['routes']['tool'])->group(function (Router $router) { Route::get('/', [LaravelGeneratorController::class, 'index'])->name('laravel_generator.index'); }); }); \ No newline at end of file diff --git a/src/Exceptions/LaravelGeneratorException.php b/src/Exceptions/LaravelGeneratorException.php new file mode 100644 index 0000000..5184dcc --- /dev/null +++ b/src/Exceptions/LaravelGeneratorException.php @@ -0,0 +1,18 @@ +mergeConfig($defaults, $generators[$generatorName]); + } + + /** + * Merge config + * + * @param array $defaults + * @param array $generatorName + * + * @return array + */ + private function mergeConfig(array $defaults, array $generatorName): array + { + $merged = $defaults; + + foreach ($generatorName as $key => &$value) { + if (isset($defaults[$key]) + && $this->isAssociativeArray($defaults[$key]) + && $this->isAssociativeArray($value) + ) { + $merged[$key] = $this->mergeConfig($defaults[$key], $value); + continue; + } + + $merged[$key] = $value; + } + + return $merged; + } + + /** + * Check is associative key array + * + * @param mixed $key + * + * @return bool + */ + private function isAssociativeArray(mixed $key): bool + { + return is_array($key) && count(array_filter(array_keys($key), 'is_string')) > 0; + } +} \ No newline at end of file