From 0b924b0902488b65eef8d7840362dc9d5c648222 Mon Sep 17 00:00:00 2001 From: Tan Nguyen Date: Thu, 27 Apr 2023 17:09:47 +0700 Subject: [PATCH 1/8] fix laravel generator config --- config/laravel-generator.php | 4 ++-- .../Controllers/Asset/AssetController.php | 2 +- .../Controllers/Detect/DetectController.php | 20 +++++++++---------- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/config/laravel-generator.php b/config/laravel-generator.php index ce8c508..67b6c9d 100644 --- a/config/laravel-generator.php +++ b/config/laravel-generator.php @@ -25,13 +25,13 @@ 'views' => base_path('resources/views/vendor/laravel-generator'), - 'ui_package_path' => 'vendor/lbil/laravel-generator-ui', + 'ui_package_path' => 'vendor/lbiltech/laravel-generator-ui', 'assets_folder' => 'dist/', 'laravel_generator_assets_path' => env( 'TH_LARAVEL_GENERATOR_ASSETS_PATH', - 'vendor/lbil/laravel-generator-ui/dist/' + 'vendor/lbiltech/laravel-generator-ui/dist/' ), ], ], diff --git a/src/Http/Controllers/Asset/AssetController.php b/src/Http/Controllers/Asset/AssetController.php index 61f5f8f..a9bb931 100644 --- a/src/Http/Controllers/Asset/AssetController.php +++ b/src/Http/Controllers/Asset/AssetController.php @@ -15,7 +15,7 @@ class AssetController extends BaseController * @param Request $request * @return string */ - public function index(Request $request) + public function index(Request $request): string { $fileSystem = new Filesystem(); $asset = $request->offsetGet('asset'); diff --git a/src/Http/Controllers/Detect/DetectController.php b/src/Http/Controllers/Detect/DetectController.php index fb6b733..453c3b6 100644 --- a/src/Http/Controllers/Detect/DetectController.php +++ b/src/Http/Controllers/Detect/DetectController.php @@ -15,7 +15,7 @@ class DetectController extends Controller * * @return array[] */ - public function detect() + public function detect(): array { $recursiveDirectoryIterator = new RecursiveDirectoryIterator(app_path()); $files = new RecursiveIteratorIterator($recursiveDirectoryIterator); @@ -39,7 +39,7 @@ public function detect() * @param $file * @return ReflectionClass|null */ - public function getClassFromFile($file) + public function getClassFromFile($file): ?ReflectionClass { $content = file_get_contents($file); $matches = []; @@ -62,7 +62,7 @@ public function getClassFromFile($file) * @param ReflectionClass $class * @return string */ - protected function getClassType(ReflectionClass $class) + protected function getClassType(ReflectionClass $class): string { $type = 'other'; @@ -93,7 +93,7 @@ protected function getClassType(ReflectionClass $class) * @param ReflectionClass $class * @return bool */ - public function isRepositoryClass(ReflectionClass $class) + public function isRepositoryClass(ReflectionClass $class): bool { return $this->checkClassType($class, 'repository'); } @@ -106,7 +106,7 @@ public function isRepositoryClass(ReflectionClass $class) * @param $type * @return bool */ - protected function checkClassType(ReflectionClass $class, $type) + protected function checkClassType(ReflectionClass $class, $type): bool { $type = ucfirst($type); @@ -122,7 +122,7 @@ protected function checkClassType(ReflectionClass $class, $type) * @param ReflectionClass $class * @return bool */ - protected function implementsCrudMethods(ReflectionClass $class) + protected function implementsCrudMethods(ReflectionClass $class): bool { $methods = $class->getMethods(ReflectionMethod::IS_PUBLIC); $crudMethods = [ @@ -145,7 +145,7 @@ protected function implementsCrudMethods(ReflectionClass $class) * @param ReflectionClass $class * @return bool */ - private function dependsOnModels(ReflectionClass $class) + private function dependsOnModels(ReflectionClass $class): bool { $dependencies = $class->getConstructor()->getParameters(); foreach ($dependencies as $dependency) { @@ -164,7 +164,7 @@ private function dependsOnModels(ReflectionClass $class) * @param ReflectionClass $class * @return bool */ - public function isServiceClass(ReflectionClass $class) + public function isServiceClass(ReflectionClass $class): bool { return $this->checkClassType($class, 'service'); } @@ -178,7 +178,7 @@ public function isServiceClass(ReflectionClass $class) * @param ReflectionClass $class * @return bool */ - public function isControllerClass(ReflectionClass $class) + public function isControllerClass(ReflectionClass $class): bool { return $this->checkClassType($class, 'controller'); } @@ -190,7 +190,7 @@ public function isControllerClass(ReflectionClass $class) * @param ReflectionClass $class * @return bool */ - public function isActionClass(ReflectionClass $class) + public function isActionClass(ReflectionClass $class): bool { return $this->checkClassType($class, 'action'); } From 44bd3f18af48e61a0c5720ed153a92d53274969e Mon Sep 17 00:00:00 2001 From: Tan Nguyen Date: Fri, 28 Apr 2023 08:59:39 +0700 Subject: [PATCH 2/8] add new lang --- common/helpers.php | 4 ++-- lang/ja/generator.php | 6 ++++++ lang/ja/settings.php | 17 +++++++++++++++++ 3 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 lang/ja/generator.php create mode 100644 lang/ja/settings.php diff --git a/common/helpers.php b/common/helpers.php index c40045b..3f0a566 100644 --- a/common/helpers.php +++ b/common/helpers.php @@ -30,7 +30,7 @@ function laravel_generator_dist_path(string $asset = null): string /** * Returns asset from laravel-generator composer package. * - * @param $asset string + * @param string $asset * @return string * * @throws LaravelGeneratorException @@ -53,7 +53,7 @@ function laravel_generator_asset(string $asset): string /** * Returns asset allowed from laravel-generator composer package. * - * @param $asset string + * @param string $asset * @return string * * @throws LaravelGeneratorException diff --git a/lang/ja/generator.php b/lang/ja/generator.php new file mode 100644 index 0000000..087d7e1 --- /dev/null +++ b/lang/ja/generator.php @@ -0,0 +1,6 @@ + 'Laravel ジェネレーター', + 'dashboard' => 'Laravel ジェネレーター ダッシュボード', +]; diff --git a/lang/ja/settings.php b/lang/ja/settings.php new file mode 100644 index 0000000..e49f92b --- /dev/null +++ b/lang/ja/settings.php @@ -0,0 +1,17 @@ + 'UI 構成', + 'description' => 'デスクトップの sidenav スタイルのみを変更できます。', + 'see_options' => 'オプションを見る', + 'sidebar' => [ + 'color' => 'サイドバーの色', + 'nav_type' => 'ナビゲーションタイプ', + 'nav_description' => 'ナビゲーションのタイプを選択します。', + 'nav_fixed' => 'ナビゲーションを固定', + 'dark' => 'ダーク', + 'light' => 'ライト', + 'transparent' => '透明', + 'dashboard' => 'ダッシュボード', + ], +]; From 48801c38184de0fc4cfde09489cb9976219ab73a Mon Sep 17 00:00:00 2001 From: Tan Nguyen Date: Mon, 1 May 2023 12:58:39 +0700 Subject: [PATCH 3/8] change php version require --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 0c0b92f..ff34359 100755 --- a/composer.json +++ b/composer.json @@ -40,7 +40,7 @@ "minimum-stability": "dev", "prefer-stable": true, "require": { - "php": "^7.3|^8.0|^8.1", + "php": "^7.3|^8.0", "laravel/framework": "^8.0|^9.0|^10.0", "lbiltech/laravel-generator-ui": "^v1.0.0" }, From 94156a1ffc577cf1c35f59a60e0f7495fb446563 Mon Sep 17 00:00:00 2001 From: Tan Nguyen Date: Tue, 9 Jan 2024 10:45:48 +0700 Subject: [PATCH 4/8] fix: change autoload name for package --- LICENSE | 2 +- README.md | 18 +++++----- common/helpers.php | 2 +- composer.json | 34 +++++++++++-------- config/laravel-generator.php | 4 +-- phpunit.xml | 2 +- resources/views/shared/left_bar.blade.php | 4 +-- routes/web.php | 10 +++--- src/Exceptions/LaravelGeneratorException.php | 2 +- src/Helpers/ConfigHelper.php | 4 +-- .../Controllers/Asset/AssetController.php | 2 +- .../Controllers/Detect/DetectController.php | 2 +- .../Generator/GeneratorController.php | 2 +- .../RepositoryGeneratorController.php | 4 +-- .../LaravelGeneratorController.php | 4 +-- src/Http/Requests/ApiRequest.php | 2 +- .../Generator/RepositoryGeneratorRequest.php | 4 +-- .../LaravelGeneratorServiceProvider.php | 4 +-- tests/Unit/DetectTest.php | 4 +-- 19 files changed, 58 insertions(+), 52 deletions(-) diff --git a/LICENSE b/LICENSE index 8cc32b7..792c300 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2023 Tan Nguyen +Copyright (c) 2023 CSlant Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 2ff0c20..7a5ad70 100755 --- a/README.md +++ b/README.md @@ -2,11 +2,11 @@ This package is used to generate models, controllers, views, routes, migrations, seeders, factories, requests, and more for Laravel. -[![Latest Version](https://img.shields.io/github/release/lbiltech/laravel-generator.svg?style=flat-square)](https://github.com/lbiltech/laravel-generator/releases) -[![Total Downloads](https://img.shields.io/packagist/dt/lbiltech/laravel-generator.svg?style=flat-square)](https://packagist.org/packages/lbiltech/laravel-generator) +[![Latest Version](https://img.shields.io/github/release/cslant/laravel-generator.svg?style=flat-square)](https://github.com/cslant/laravel-generator/releases) +[![Total Downloads](https://img.shields.io/packagist/dt/cslant/laravel-generator.svg?style=flat-square)](https://packagist.org/packages/cslant/laravel-generator) [![StyleCI](https://styleci.io/repos/605697295/shield)](https://styleci.io/repos/605697295) -[![Quality Score](https://img.shields.io/scrutinizer/g/lbiltech/laravel-generator.svg?style=flat-square)](https://scrutinizer-ci.com/g/lbiltech/laravel-generator) -[![Maintainability](https://api.codeclimate.com/v1/badges/231c123bfa276fd1ac3c/maintainability)](https://codeclimate.com/github/lbiltech/laravel-generator/maintainability) +[![Quality Score](https://img.shields.io/scrutinizer/g/cslant/laravel-generator.svg?style=flat-square)](https://scrutinizer-ci.com/g/cslant/laravel-generator) +[![Maintainability](https://api.codeclimate.com/v1/badges/231c123bfa276fd1ac3c/maintainability)](https://codeclimate.com/github/cslant/laravel-generator/maintainability) ## Technology @@ -19,7 +19,7 @@ This package is used to generate models, controllers, views, routes, migrations, You can install the package with [Composer](https://getcomposer.org/) using the following command: ```bash -composer require lbiltech/laravel-generator +composer require cslant/laravel-generator ``` ## Publish the config file, views, and language files @@ -27,7 +27,7 @@ composer require lbiltech/laravel-generator If you want to change the default configuration, the views, or the language files, you can publish them with the following command: ```bash - php artisan vendor:publish --provider="Lbil\LaravelGenerator\Providers\LaravelGeneratorServiceProvider" + php artisan vendor:publish --provider="CSlant\LaravelGenerator\Providers\LaravelGeneratorServiceProvider" ``` If you have run the above command, you will see the following files in your project: @@ -40,13 +40,13 @@ If you have run the above command, you will see the following files in your proj Also, you can publish only the config file with the following command: ```bash - php artisan vendor:publish --provider="Lbil\LaravelGenerator\Providers\LaravelGeneratorServiceProvider" --tag="config" + php artisan vendor:publish --provider="CSlant\LaravelGenerator\Providers\LaravelGeneratorServiceProvider" --tag="config" ``` Similarly, you can publish only the views with the following command: ```bash - php artisan vendor:publish --provider="Lbil\LaravelGenerator\Providers\LaravelGeneratorServiceProvider" --tag="views" + php artisan vendor:publish --provider="CSlant\LaravelGenerator\Providers\LaravelGeneratorServiceProvider" --tag="views" ``` @@ -55,7 +55,7 @@ Similarly, you can publish only the views with the following command: The MIT License (MIT). Please see [License File](LICENSE) for more information.

- + license

diff --git a/common/helpers.php b/common/helpers.php index 3f0a566..c37f1ff 100644 --- a/common/helpers.php +++ b/common/helpers.php @@ -1,6 +1,6 @@ base_path('resources/views/vendor/laravel-generator'), - 'ui_package_path' => 'vendor/lbiltech/laravel-generator-ui', + 'ui_package_path' => 'vendor/cslant/laravel-generator-ui', 'assets_folder' => 'dist/', 'laravel_generator_assets_path' => env( 'TH_LARAVEL_GENERATOR_ASSETS_PATH', - 'vendor/lbiltech/laravel-generator-ui/dist/' + 'vendor/cslant/laravel-generator-ui/dist/' ), ], ], diff --git a/phpunit.xml b/phpunit.xml index f2e7bde..afdc875 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -13,7 +13,7 @@ - + tests diff --git a/resources/views/shared/left_bar.blade.php b/resources/views/shared/left_bar.blade.php index 6b75f9a..6bb89a0 100644 --- a/resources/views/shared/left_bar.blade.php +++ b/resources/views/shared/left_bar.blade.php @@ -1,7 +1,7 @@ \ No newline at end of file + diff --git a/routes/web.php b/routes/web.php index b274e62..de6c30d 100644 --- a/routes/web.php +++ b/routes/web.php @@ -2,12 +2,12 @@ use Illuminate\Routing\Router; use Illuminate\Support\Facades\Route; -use Lbil\LaravelGenerator\Helpers\ConfigHelper; -use Lbil\LaravelGenerator\Http\Controllers\Asset\AssetController; -use Lbil\LaravelGenerator\Http\Controllers\Generator\RepositoryGeneratorController; -use Lbil\LaravelGenerator\Http\Controllers\LaravelGeneratorController; +use CSlant\LaravelGenerator\Helpers\ConfigHelper; +use CSlant\LaravelGenerator\Http\Controllers\Asset\AssetController; +use CSlant\LaravelGenerator\Http\Controllers\Generator\RepositoryGeneratorController; +use CSlant\LaravelGenerator\Http\Controllers\LaravelGeneratorController; -Route::namespace('Lbil\LaravelGenerator\Http\Controllers')->group(function () { +Route::namespace('CSlant\LaravelGenerator\Http\Controllers')->group(function () { $configRepository = resolve(ConfigHelper::class); $generatorConfig = $configRepository->generatorConfig(); diff --git a/src/Exceptions/LaravelGeneratorException.php b/src/Exceptions/LaravelGeneratorException.php index 23c7b6a..33bac18 100644 --- a/src/Exceptions/LaravelGeneratorException.php +++ b/src/Exceptions/LaravelGeneratorException.php @@ -1,6 +1,6 @@ Date: Tue, 9 Jan 2024 14:26:00 +0700 Subject: [PATCH 5/8] fix: change composer and service provider --- common/helpers.php | 2 +- composer.json | 20 +++++--- config/laravel-generator.php | 6 +-- .../LaravelGeneratorServiceProvider.php | 46 +++++++++---------- 4 files changed, 39 insertions(+), 35 deletions(-) diff --git a/common/helpers.php b/common/helpers.php index c37f1ff..488cd78 100644 --- a/common/helpers.php +++ b/common/helpers.php @@ -43,7 +43,7 @@ function laravel_generator_asset(string $asset): string throw new LaravelGeneratorException(sprintf('%s - this Laravel Generator asset does not exist', $asset)); } - $useAbsolutePath = config('laravel-generator.defaults.paths.use_absolute_path', true); + $useAbsolutePath = config('laravel-generator.defaults.paths.use_absolute_path'); return route('laravel_generator.asset', ['asset' => $asset], $useAbsolutePath).'?v='.filemtime($file); } diff --git a/composer.json b/composer.json index 90d20de..47898cf 100755 --- a/composer.json +++ b/composer.json @@ -41,16 +41,16 @@ "minimum-stability": "dev", "prefer-stable": true, "require": { - "php": "^8.0", + "php": "^8.1", "laravel/framework": "^9.0|^10.0", - "cslant/laravel-generator-ui": "^v1.0.0" + "cslant/laravel-generator-ui": "^v1.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^v3.37", - "nunomaduro/collision": "^7.10", - "nunomaduro/larastan": "^2.6", - "orchestra/testbench": "^8.14", - "pestphp/pest": "^2.24", + "friendsofphp/php-cs-fixer": "^v3.0", + "nunomaduro/collision": "^7.0", + "nunomaduro/larastan": "^2.0", + "orchestra/testbench": "^8.0", + "pestphp/pest": "^2.3", "phpstan/extension-installer": "^1.3", "phpstan/phpstan-deprecation-rules": "^1.1", "phpstan/phpstan-phpunit": "^1.3" @@ -64,5 +64,11 @@ "CSlant\\LaravelGenerator\\Providers\\LaravelGeneratorServiceProvider" ] } + }, + "config": { + "allow-plugins": { + "pestphp/pest-plugin": true, + "phpstan/extension-installer": true + } } } diff --git a/config/laravel-generator.php b/config/laravel-generator.php index 5c68895..0ef5a25 100644 --- a/config/laravel-generator.php +++ b/config/laravel-generator.php @@ -11,16 +11,14 @@ 'routes' => [ /* Route for laravel generator tool */ - 'tool' => env('TH_LARAVEL_GENERATOR_URL', 'laravel-generator'), + 'tool' => env('TH_LARAVEL_GENERATOR_TOOL_ROUTE', 'laravel-generator'), ], ], ], 'defaults' => [ 'paths' => [ - /* - * Edit to include full URL in ui for assets - */ + /* Edit to include full URL in ui for assets */ 'use_absolute_path' => env('TH_LARAVEL_GENERATOR_USE_ABSOLUTE_PATH', true), 'views' => base_path('resources/views/vendor/laravel-generator'), diff --git a/src/Providers/LaravelGeneratorServiceProvider.php b/src/Providers/LaravelGeneratorServiceProvider.php index 076ae0f..7358d06 100755 --- a/src/Providers/LaravelGeneratorServiceProvider.php +++ b/src/Providers/LaravelGeneratorServiceProvider.php @@ -17,36 +17,21 @@ public function boot(): void $viewPath = __DIR__.'/../../resources/views'; $this->loadViewsFrom($viewPath, 'laravel-generator'); - // Publish a config file - $configPath = __DIR__.'/../../config/laravel-generator.php'; - $this->publishes([ - $configPath => config_path('laravel-generator.php'), - ], 'config'); - - // Publish views - $this->publishes([ - __DIR__.'/../../resources/views' => config('laravel-generator.defaults.paths.views'), - ], 'views'); - - // Include routes $routePath = __DIR__.'/../../routes/web.php'; if (file_exists($routePath)) { $this->loadRoutesFrom($routePath); } + $this->loadTranslationsFrom(__DIR__.'/../../lang', 'laravel-generator'); + // Load package helpers file $helpersPath = __DIR__.'/../../common/helpers.php'; if (file_exists($helpersPath)) { require_once $helpersPath; } - // Load language files - $this->loadTranslationsFrom(__DIR__.'/../../lang', 'laravel-generator'); - - // Publish language files - $this->publishes([ - __DIR__.'/../../lang' => resource_path('lang/vendor/laravel-generator'), - ], 'lang'); + // Publish assets + $this->registerAssetPublishing(); } /** @@ -58,10 +43,6 @@ public function register(): void { $configPath = __DIR__.'/../../config/laravel-generator.php'; $this->mergeConfigFrom($configPath, 'laravel-generator'); - - $this->app->singleton('laravel-generator', function () { - return new ConfigHelper(); - }); } /** @@ -73,4 +54,23 @@ public function provides(): ?array { return ['laravel-generator']; } + + /** + * @return void + */ + protected function registerAssetPublishing(): void + { + $configPath = __DIR__.'/../../config/laravel-generator.php'; + $this->publishes([ + $configPath => config_path('laravel-generator.php'), + ], 'config'); + + $this->publishes([ + __DIR__.'/../../resources/views' => config('laravel-generator.defaults.paths.views'), + ], 'views'); + + $this->publishes([ + __DIR__.'/../../lang' => resource_path('lang/vendor/laravel-generator'), + ], 'lang'); + } } From c19f7fe522ebd642dc1173bc13054bd071a28542 Mon Sep 17 00:00:00 2001 From: Tan Nguyen Date: Tue, 9 Jan 2024 14:32:35 +0700 Subject: [PATCH 6/8] feat: add some workflow --- .github/workflows/dependabot-auto-merge.yml | 32 +++++++++++++++++ .github/workflows/php-cs-fixer.yml | 26 ++++++++++++++ .github/workflows/phpstan.yml | 32 +++++++++++++++++ .github/workflows/setup_test.yml | 34 ++++++++++++++++++ .github/workflows/update-changelog.yml | 31 ++++++++++++++++ .gitignore | 6 +++- .php-cs-fixer.dist.php | 40 +++++++++++++++++++++ composer.json | 4 +++ phpstan-baseline.neon | 0 phpstan.neon.dist | 12 +++++++ 10 files changed, 216 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/dependabot-auto-merge.yml create mode 100644 .github/workflows/php-cs-fixer.yml create mode 100644 .github/workflows/phpstan.yml create mode 100644 .github/workflows/setup_test.yml create mode 100644 .github/workflows/update-changelog.yml create mode 100644 .php-cs-fixer.dist.php create mode 100644 phpstan-baseline.neon create mode 100644 phpstan.neon.dist diff --git a/.github/workflows/dependabot-auto-merge.yml b/.github/workflows/dependabot-auto-merge.yml new file mode 100644 index 0000000..0281309 --- /dev/null +++ b/.github/workflows/dependabot-auto-merge.yml @@ -0,0 +1,32 @@ +name: Dependabot auto-merge +on: pull_request_target + +permissions: + pull-requests: write + contents: write + +jobs: + dependabot: + runs-on: ubuntu-latest + if: ${{ github.actor == 'dependabot[bot]' }} + steps: + + - name: Dependabot metadata + id: metadata + uses: dependabot/fetch-metadata@v1.6.0 + with: + github-token: "${{ secrets.GITHUB_TOKEN }}" + + - name: Auto-merge Dependabot PRs for semver-major updates + if: ${{steps.metadata.outputs.update-type == 'version-update:semver-minor'}} + run: gh pr merge --auto --merge "$PR_URL" + env: + PR_URL: ${{github.event.pull_request.html_url}} + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} + + - name: Auto-merge Dependabot PRs for semver-patch updates + if: ${{steps.metadata.outputs.update-type == 'version-update:semver-patch'}} + run: gh pr merge --auto --merge "$PR_URL" + env: + PR_URL: ${{github.event.pull_request.html_url}} + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} diff --git a/.github/workflows/php-cs-fixer.yml b/.github/workflows/php-cs-fixer.yml new file mode 100644 index 0000000..802d168 --- /dev/null +++ b/.github/workflows/php-cs-fixer.yml @@ -0,0 +1,26 @@ +name: Check & fix styling + +on: [push] + +permissions: + contents: write + +jobs: + php-cs-fixer: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + ref: ${{ github.head_ref }} + + - name: Run PHP CS Fixer + uses: docker://oskarstark/php-cs-fixer-ga + with: + args: --config=.php-cs-fixer.dist.php --allow-risky=yes + + - name: Commit changes + uses: stefanzweifel/git-auto-commit-action@v5 + with: + commit_message: Fix styling diff --git a/.github/workflows/phpstan.yml b/.github/workflows/phpstan.yml new file mode 100644 index 0000000..ff3cbb0 --- /dev/null +++ b/.github/workflows/phpstan.yml @@ -0,0 +1,32 @@ +name: PHPStan + +on: [push, pull_request] + +jobs: + phpstan: + runs-on: ${{ matrix.os }} + name: PHPStan - P${{ matrix.php }} + + strategy: + matrix: + os: [ ubuntu-latest ] + php: [ '8.1', '8.2', '8.3' ] + + steps: + - uses: actions/checkout@v4 + + - name: Setup PHP + uses: shivammathur/setup-php@2.26.0 + with: + php-version: ${{ matrix.php }} + + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install dependencies + run: | + composer install --no-interaction --no-progress --no-suggest + + - name: Run PHPStan + run: | + composer analyse --error-format=github diff --git a/.github/workflows/setup_test.yml b/.github/workflows/setup_test.yml new file mode 100644 index 0000000..f1b2866 --- /dev/null +++ b/.github/workflows/setup_test.yml @@ -0,0 +1,34 @@ +name: Setup & test + +on: [ push, pull_request ] + +jobs: + tests: + name: Composer P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ ubuntu-latest ] + php: [ '8.1', '8.2', '8.3' ] + laravel: [ 10.*, 9.* ] + include: + - laravel: 10.* + testbench: 8.* + - laravel: 9.* + testbench: 8.* + steps: + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php }} + + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install dependencies + run: | + composer install --no-interaction --no-progress --no-suggest + + - name: Run tests + run: | + composer validate --strict diff --git a/.github/workflows/update-changelog.yml b/.github/workflows/update-changelog.yml new file mode 100644 index 0000000..acd4c1d --- /dev/null +++ b/.github/workflows/update-changelog.yml @@ -0,0 +1,31 @@ +name: Update Changelog + +on: + release: + types: [released] + +permissions: + contents: write + +jobs: + update: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + ref: main + + - name: Update Changelog + uses: stefanzweifel/changelog-updater-action@v1 + with: + latest-version: ${{ github.event.release.name }} + release-notes: ${{ github.event.release.body }} + + - name: Commit updated CHANGELOG + uses: stefanzweifel/git-auto-commit-action@v5 + with: + branch: main + commit_message: Update CHANGELOG + file_pattern: CHANGELOG.md diff --git a/.gitignore b/.gitignore index b4ddc5f..d216841 100755 --- a/.gitignore +++ b/.gitignore @@ -29,4 +29,8 @@ npm-debug.log package-lock.json yarn.lock -/.sass-cache \ No newline at end of file +/.sass-cache + +build +.php-cs-fixer.cache +storage diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php new file mode 100644 index 0000000..001df5e --- /dev/null +++ b/.php-cs-fixer.dist.php @@ -0,0 +1,40 @@ +in([ + __DIR__ . '/src', + __DIR__ . '/tests', + __DIR__ . '/routes', + __DIR__ . '/resources', + ]) + ->name('*.php') + ->ignoreDotFiles(true) + ->ignoreVCS(true); + +return (new PhpCsFixer\Config()) + ->setRules([ + '@PSR12' => true, + 'array_syntax' => ['syntax' => 'short'], + 'ordered_imports' => ['sort_algorithm' => 'alpha'], + 'no_unused_imports' => true, + 'trailing_comma_in_multiline' => true, + 'phpdoc_scalar' => true, + 'unary_operator_spaces' => true, + 'binary_operator_spaces' => true, + 'blank_line_before_statement' => [ + 'statements' => ['break', 'continue', 'declare', 'return', 'throw', 'try'], + ], + 'phpdoc_single_line_var_spacing' => true, + 'phpdoc_var_without_name' => true, + 'class_attributes_separation' => [ + 'elements' => [ + 'method' => 'one', + ], + ], + 'method_argument_space' => [ + 'on_multiline' => 'ensure_fully_multiline', + 'keep_multiple_spaces_after_comma' => true, + ], + 'single_trait_insert_per_statement' => true, + ]) + ->setFinder($finder); diff --git a/composer.json b/composer.json index 47898cf..ad71834 100755 --- a/composer.json +++ b/composer.json @@ -55,6 +55,10 @@ "phpstan/phpstan-deprecation-rules": "^1.1", "phpstan/phpstan-phpunit": "^1.3" }, + "scripts": { + "analyse": "vendor/bin/phpstan analyse", + "format": "vendor/bin/php-cs-fixer fix --allow-risky=yes" + }, "support": { "issues": "https://github.com/cslant/laravel-generator/issues" }, diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon new file mode 100644 index 0000000..e69de29 diff --git a/phpstan.neon.dist b/phpstan.neon.dist new file mode 100644 index 0000000..dba5a52 --- /dev/null +++ b/phpstan.neon.dist @@ -0,0 +1,12 @@ +includes: + - phpstan-baseline.neon + +parameters: + level: 9 + paths: + - src + - routes + tmpDir: build/phpstan + checkOctaneCompatibility: true + checkModelProperties: true + checkMissingIterableValueType: false From c44cbdeb95d5e4de5bdb2d28b372b972360db668 Mon Sep 17 00:00:00 2001 From: tanhongit Date: Tue, 9 Jan 2024 07:32:58 +0000 Subject: [PATCH 7/8] Fix styling --- routes/web.php | 4 ++-- src/Helpers/ConfigHelper.php | 1 + src/Http/Controllers/Detect/DetectController.php | 4 ++++ .../Controllers/Generator/RepositoryGeneratorController.php | 2 +- src/Http/Controllers/LaravelGeneratorController.php | 2 +- src/Providers/LaravelGeneratorServiceProvider.php | 1 - 6 files changed, 9 insertions(+), 5 deletions(-) diff --git a/routes/web.php b/routes/web.php index de6c30d..f6a675c 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,11 +1,11 @@ group(function () { $configRepository = resolve(ConfigHelper::class); diff --git a/src/Helpers/ConfigHelper.php b/src/Helpers/ConfigHelper.php index d39eeea..cedc462 100644 --- a/src/Helpers/ConfigHelper.php +++ b/src/Helpers/ConfigHelper.php @@ -47,6 +47,7 @@ private function mergeConfig(array $defaults, array $generatorName): array && $this->isAssociativeArray($value) ) { $merged[$key] = $this->mergeConfig($defaults[$key], $value); + continue; } diff --git a/src/Http/Controllers/Detect/DetectController.php b/src/Http/Controllers/Detect/DetectController.php index 7ce0009..844436b 100644 --- a/src/Http/Controllers/Detect/DetectController.php +++ b/src/Http/Controllers/Detect/DetectController.php @@ -69,15 +69,19 @@ protected function getClassType(ReflectionClass $class): string switch (true) { case $this->isRepositoryClass($class): $type = 'repository'; + break; case $this->isServiceClass($class): $type = 'service'; + break; case $this->isControllerClass($class): $type = 'controller'; + break; case $this->isActionClass($class): $type = 'action'; + break; } diff --git a/src/Http/Controllers/Generator/RepositoryGeneratorController.php b/src/Http/Controllers/Generator/RepositoryGeneratorController.php index a6a6272..edc2126 100644 --- a/src/Http/Controllers/Generator/RepositoryGeneratorController.php +++ b/src/Http/Controllers/Generator/RepositoryGeneratorController.php @@ -2,8 +2,8 @@ namespace CSlant\LaravelGenerator\Http\Controllers\Generator; -use Illuminate\Support\Str; use CSlant\LaravelGenerator\Http\Controllers\Detect\DetectController; +use Illuminate\Support\Str; class RepositoryGeneratorController extends GeneratorController { diff --git a/src/Http/Controllers/LaravelGeneratorController.php b/src/Http/Controllers/LaravelGeneratorController.php index 24ce8e0..259f5d0 100644 --- a/src/Http/Controllers/LaravelGeneratorController.php +++ b/src/Http/Controllers/LaravelGeneratorController.php @@ -2,12 +2,12 @@ namespace CSlant\LaravelGenerator\Http\Controllers; +use CSlant\LaravelGenerator\Http\Controllers\Detect\DetectController; use Illuminate\Contracts\Foundation\Application; use Illuminate\Contracts\View\Factory; use Illuminate\Contracts\View\View; use Illuminate\Http\Request; use Illuminate\Routing\Controller; -use CSlant\LaravelGenerator\Http\Controllers\Detect\DetectController; class LaravelGeneratorController extends Controller { diff --git a/src/Providers/LaravelGeneratorServiceProvider.php b/src/Providers/LaravelGeneratorServiceProvider.php index 7358d06..b540b96 100755 --- a/src/Providers/LaravelGeneratorServiceProvider.php +++ b/src/Providers/LaravelGeneratorServiceProvider.php @@ -3,7 +3,6 @@ namespace CSlant\LaravelGenerator\Providers; use Illuminate\Support\ServiceProvider; -use CSlant\LaravelGenerator\Helpers\ConfigHelper; class LaravelGeneratorServiceProvider extends ServiceProvider { From ff9042c063b3f088faf49c9c5f18277d36da4544 Mon Sep 17 00:00:00 2001 From: Tan Nguyen Date: Tue, 9 Jan 2024 14:45:28 +0700 Subject: [PATCH 8/8] docs: update readme and changelog --- CHANGELOG.md | 7 +++++++ README.md | 5 +++-- 2 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..cd82b96 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,7 @@ +# Changelog + +Here you can see the full list of changes between each Laravel Generator release. + +## v1.0 - 2023-06-26 + +- Experimental release diff --git a/README.md b/README.md index 7a5ad70..ce54596 100755 --- a/README.md +++ b/README.md @@ -4,14 +4,15 @@ This package is used to generate models, controllers, views, routes, migrations, [![Latest Version](https://img.shields.io/github/release/cslant/laravel-generator.svg?style=flat-square)](https://github.com/cslant/laravel-generator/releases) [![Total Downloads](https://img.shields.io/packagist/dt/cslant/laravel-generator.svg?style=flat-square)](https://packagist.org/packages/cslant/laravel-generator) +![Test Status](https://img.shields.io/github/actions/workflow/status/cslant/laravel-generator/setup_test.yml?label=tests&branch=main) [![StyleCI](https://styleci.io/repos/605697295/shield)](https://styleci.io/repos/605697295) [![Quality Score](https://img.shields.io/scrutinizer/g/cslant/laravel-generator.svg?style=flat-square)](https://scrutinizer-ci.com/g/cslant/laravel-generator) [![Maintainability](https://api.codeclimate.com/v1/badges/231c123bfa276fd1ac3c/maintainability)](https://codeclimate.com/github/cslant/laravel-generator/maintainability) ## Technology -- PHP ^7.3|^8.0 -- Laravel Framework 8.x, 9.x, 10.x +- PHP ^8.1 +- Laravel Framework 9.x, 10.x - Composer ## Installation