From 263e0aa1cbf5a9d220a27a61f833bb824f00d2e8 Mon Sep 17 00:00:00 2001 From: Abrar Ahmad Date: Thu, 27 Jan 2022 22:10:10 +0500 Subject: [PATCH] Support Laravel 9 (#3) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * wip * Update composer.json * Update composer.json Co-authored-by: Samuel Štancl * Update composer.json Co-authored-by: Samuel Štancl * Update ci.yml * Update composer.json * wip * wip * Update ci.yml * typehint -> type * Update phpstan.neon * Update composer.json * Update composer.json * wip * Update composer.json * Update composer.json * Update composer.json Co-authored-by: Samuel Štancl --- .github/workflows/ci.yml | 26 +++++++++------ .gitignore | 2 +- .php_cs.php => .php-cs-fixer.php | 34 +++++++++----------- check | 54 ++++++++++++++++++++++++++++++++ composer.json | 10 +++--- phpstan.neon | 8 ++--- src/GlossTranslator.php | 17 +++------- src/helpers.php | 3 -- 8 files changed, 98 insertions(+), 56 deletions(-) rename .php_cs.php => .php-cs-fixer.php (87%) create mode 100755 check diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 07ec0cd..e38ebe9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,19 +13,25 @@ on: jobs: phpunit: + name: Tests (PHPUnit) L${{ matrix.laravel }} + runs-on: ubuntu-latest strategy: matrix: - laravel: [6, 8] - - name: Tests (PHPUnit) - runs-on: ubuntu-latest + laravel: [6, 8, 9] steps: - - uses: actions/checkout@v2 - - name: Install composer dependencies - run: composer require "laravel/framework:^${{matrix.laravel}}.0.0" - - name: Run tests - run: vendor/bin/phpunit + - name: Checkout code + uses: actions/checkout@v2 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '8.0' + + - name: Install dependencies + run: composer require "laravel/framework:^${{matrix.laravel}}.0" + - name: Run tests + run: vendor/bin/phpunit phpstan: name: Static analysis (PHPStan) @@ -46,7 +52,7 @@ jobs: - name: Install php-cs-fixer run: composer global require friendsofphp/php-cs-fixer - name: Run php-cs-fixer - run: $HOME/.composer/vendor/bin/php-cs-fixer fix --config=.php_cs.php + run: $HOME/.composer/vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.php - name: Commit changes from php-cs-fixer uses: EndBug/add-and-commit@v5 with: diff --git a/.gitignore b/.gitignore index 649c3ac..acc3680 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ .phpunit.result.cache composer.lock vendor/ -.php_cs.cache +.php-cs-fixer.cache .vscode/ diff --git a/.php_cs.php b/.php-cs-fixer.php similarity index 87% rename from .php_cs.php rename to .php-cs-fixer.php index 4d16d44..a96d781 100644 --- a/.php_cs.php +++ b/.php-cs-fixer.php @@ -10,22 +10,19 @@ $rules = [ 'operators' => [ '=>' => null, '|' => 'no_space', - ] + ], ], 'blank_line_after_namespace' => true, 'blank_line_after_opening_tag' => true, 'no_superfluous_phpdoc_tags' => true, 'blank_line_before_statement' => [ - 'statements' => ['return'] + 'statements' => ['return'], ], 'braces' => true, 'cast_spaces' => true, - 'class_attributes_separation' => [ - 'elements' => ['method'] - ], 'class_definition' => true, 'concat_space' => [ - 'spacing' => 'one' + 'spacing' => 'one', ], 'declare_equal_normalize' => true, 'elseif' => true, @@ -42,7 +39,7 @@ $rules = [ 'linebreak_after_opening_tag' => true, 'line_ending' => true, 'lowercase_cast' => true, - 'lowercase_constants' => true, + 'constant_case' => true, 'lowercase_keywords' => true, 'lowercase_static_reference' => true, // added from Symfony 'magic_method_casing' => true, // added from Symfony @@ -56,7 +53,7 @@ $rules = [ 'throw', 'use', 'use_trait', - ] + ], ], 'no_blank_lines_after_class_opening' => true, 'no_blank_lines_after_phpdoc' => true, @@ -66,11 +63,11 @@ $rules = [ 'no_leading_import_slash' => true, 'no_leading_namespace_whitespace' => true, 'no_mixed_echo_print' => [ - 'use' => 'echo' + 'use' => 'echo', ], 'no_multiline_whitespace_around_double_arrow' => true, 'multiline_whitespace_before_semicolons' => [ - 'strategy' => 'no_multi_line' + 'strategy' => 'no_multi_line', ], 'no_short_bool_cast' => true, 'no_singleline_whitespace_before_semicolons' => true, @@ -89,9 +86,9 @@ $rules = [ 'normalize_index_brace' => true, 'not_operator_with_successor_space' => true, 'object_operator_without_whitespace' => true, - 'ordered_imports' => ['sortAlgorithm' => 'alpha'], + 'ordered_imports' => ['sort_algorithm' => 'alpha'], 'phpdoc_indent' => true, - 'phpdoc_inline_tag' => true, + 'general_phpdoc_tag_rename' => true, 'phpdoc_no_access' => true, 'phpdoc_no_package' => true, 'phpdoc_no_useless_inheritdoc' => true, @@ -102,18 +99,18 @@ $rules = [ 'phpdoc_trim' => true, 'phpdoc_types' => true, 'phpdoc_var_without_name' => true, - 'psr4' => true, + 'psr_autoloading' => true, 'self_accessor' => true, 'short_scalar_cast' => true, 'simplified_null_return' => false, // disabled by Shift 'single_blank_line_at_eof' => true, 'single_blank_line_before_namespace' => true, 'single_class_element_per_statement' => true, - 'single_import_per_statement' => true, + 'single_import_per_statement' => false, 'single_line_after_imports' => true, 'no_unused_imports' => true, 'single_line_comment_style' => [ - 'comment_types' => ['hash'] + 'comment_types' => ['hash'], ], 'single_quote' => true, 'space_after_semicolon' => true, @@ -121,12 +118,9 @@ $rules = [ 'switch_case_semicolon_to_colon' => true, 'switch_case_space' => true, 'ternary_operator_spaces' => true, - 'trailing_comma_in_multiline_array' => true, + 'trailing_comma_in_multiline' => true, 'trim_array_spaces' => true, 'unary_operator_spaces' => true, - // 'visibility_required' => [ - // 'elements' => ['method', 'property'] - // ], 'whitespace_after_comma_in_array' => true, ]; @@ -140,7 +134,7 @@ $finder = Finder::create() ->ignoreDotFiles(true) ->ignoreVCS(true); -return Config::create() +return (new Config()) ->setFinder($finder) ->setRules($rules) ->setRiskyAllowed(true) diff --git a/check b/check new file mode 100755 index 0000000..0e5c741 --- /dev/null +++ b/check @@ -0,0 +1,54 @@ +#!/bin/bash +set -e + +offer_run() { + read -p "For more output, run $1. Run it now (Y/n)? " run + + case ${run:0:1} in + n|N ) + exit 1 + ;; + * ) + $1 + ;; + esac + + exit 1 +} + +if (php-cs-fixer fix --dry-run --config=.php-cs-fixer.php > /dev/null 2>/dev/null); then + echo '✅ php-cs-fixer OK' +else + read -p "⚠️ php-cs-fixer found issues. Fix (Y/n)? " fix + case ${fix:0:1} in + n|N ) + echo '❌ php-cs-fixer FAIL' + offer_run 'php-cs-fixer fix --config=.php-cs-fixer.php' + ;; + * ) + if (php-cs-fixer fix --config=.php-cs-fixer.php > /dev/null 2>/dev/null); then + echo '✅ php-cs-fixer OK' + else + echo '❌ php-cs-fixer FAIL' + offer_run 'php-cs-fixer fix --config=.php-cs-fixer.php' + fi + ;; + esac +fi + +if (./vendor/bin/phpstan analyse > /dev/null 2>/dev/null); then + echo '✅ PHPStan OK' +else + echo '❌ PHPStan FAIL' + offer_run './vendor/bin/phpstan analyse' +fi + +if (./vendor/bin/phpunit > /dev/null 2>/dev/null); then + echo '✅ PHPUnit OK' +else + echo '❌ PHPUnit FAIL' + offer_run './vendor/bin/phpunit' +fi + +echo '==================' +echo '✅ Everything OK' diff --git a/composer.json b/composer.json index 4ecfc42..9de017e 100644 --- a/composer.json +++ b/composer.json @@ -16,12 +16,12 @@ } }, "require": { - "illuminate/translation": "^8.0||^6.0" + "illuminate/translation": "^6.0|^8.0|^9.0" }, "require-dev": { - "orchestra/testbench": "^6.0||^4.0", + "orchestra/testbench": "^4.0|^6.0|^7.0", "phpunit/phpunit": "^9.5", - "nunomaduro/larastan": "^0.6.11" + "nunomaduro/larastan": "^1.0" }, "extra": { "laravel": { @@ -32,5 +32,7 @@ "Gloss": "Lean\\Gloss\\Gloss" } } - } + }, + "minimum-stability": "dev", + "prefer-stable": true } diff --git a/phpstan.neon b/phpstan.neon index d4dc3dd..be7f931 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -13,7 +13,7 @@ parameters: ignoreErrors: - - message: '#has no return typehint specified#' + message: '#has no return type specified#' paths: - tests/* - src/GlossTranslator.php @@ -22,11 +22,7 @@ parameters: paths: - tests/* - - message: '#with no typehint specified#' - paths: - - src/GlossTranslator.php - - - message: '#of function str_replace expects#' + message: '#with no type specified#' paths: - src/GlossTranslator.php diff --git a/src/GlossTranslator.php b/src/GlossTranslator.php index 375d9e1..c6fad4c 100644 --- a/src/GlossTranslator.php +++ b/src/GlossTranslator.php @@ -23,8 +23,6 @@ class GlossTranslator extends Translator /** * Register an override that returns a different key name. * - * @param string $shortKey - * @param string $newKey * @param array|null|callable $condition * @return void */ @@ -45,8 +43,6 @@ class GlossTranslator extends Translator /** * Register an override that returns a value. * - * @param string $shortKey - * @param string $value * @param array|null|callable $condition * @return void */ @@ -67,7 +63,6 @@ class GlossTranslator extends Translator /** * Register multiple value overrides. * - * @param array $values * @param array|null|callable $condition * @return void */ @@ -82,8 +77,6 @@ class GlossTranslator extends Translator /** * Customize a translation string's value using a callback. * - * @param string $shortKey - * @param callable $value * @return void */ public function extend(string $shortKey, callable $value) @@ -95,7 +88,6 @@ class GlossTranslator extends Translator * Get a translation string. * * @param string $key - * @param array $replace * @param string|null $locale * @param bool $fallback * @return string @@ -132,7 +124,6 @@ class GlossTranslator extends Translator /** * Get a translation string and skip extensions. * - * @param string $key * @param array $replace * @param string|null $locale * @param bool $fallback @@ -203,7 +194,9 @@ class GlossTranslator extends Translator protected function choiceWithoutExtensions($key, $number, array $replace = [], $locale = null) { $line = $this->getWithoutExtensions( - $key, $replace, $locale = $this->localeForChoice($locale) + $key, + $replace, + $locale = $this->localeForChoice($locale) ); // If the given "number" is actually an array or countable we will simply count the @@ -216,7 +209,8 @@ class GlossTranslator extends Translator $replace['count'] = $number; return $this->makeReplacements( - $this->getSelector()->choose($line, $number, $locale), $replace + $this->getSelector()->choose($line, $number, $locale), + $replace ); } @@ -252,7 +246,6 @@ class GlossTranslator extends Translator /** * @param string|callable $line - * @param array $replace * @return string */ protected function makeReplacements($line, array $replace) diff --git a/src/helpers.php b/src/helpers.php index d6d0133..4ab7870 100644 --- a/src/helpers.php +++ b/src/helpers.php @@ -10,7 +10,6 @@ if (! function_exists('gloss')) { * * @param string|array|null $key * @param array|callable|null $replace - * @param string|null $locale * @return void|string|null|\Lean\Gloss\GlossTranslator */ function gloss($key = null, $replace = null, string $locale = null) @@ -36,8 +35,6 @@ if (! function_exists('___') && Gloss::$underscoreHelper) { * Resolve a translation string or Gloss instance. * * @param string|array|null $key - * @param array $replace - * @param string|null $locale * @return void|string|null|\Lean\Gloss\GlossTranslator */ function ___($key = null, array $replace = [], string $locale = null)