diff --git a/.Build/gitlab-ci/README.md b/.Build/gitlab-ci/README.md index 05bc181bc943aa488a516e3b6e0da3bcead51013..de8d33684273da5b746158c8b355962ae972287c 100644 --- a/.Build/gitlab-ci/README.md +++ b/.Build/gitlab-ci/README.md @@ -1,5 +1,4 @@ - -# use as git subtree (preferred) +# use as git subtree ## add gitlab-ci to your extension ``` @@ -27,41 +26,50 @@ git subtree push --prefix .Build/gitlab-ci https://git.slub-dresden.de/typo3/git include: - remote: 'https://git.slub-dresden.de/typo3/gitlab-ci/-/raw/main/extension-gitlab-ci.yml' ``` - -## create a .gitignore in your extension root, with this content +# create a .gitignore +## in your extension root, with this content ``` composer.lock +/.Build/gitlab-ci/project +/.Build/gitlab-ci/project-gitlab-ci.yml /vendor /public .php_cs.cache .php-cs-fixer.cache ``` -# use rector local +## add this lines to your project root +``` +/.Build/gitlab-ci/extension +/.Build/gitlab-ci/extension-gitlab-ci.yml +.php_cs.cache +.php-cs-fixer.cache +``` + +# install rector in your local environment ``` composer require --dev ssch/typo3-rector ``` -## run rector +## run rector to fix your code ``` -./vendor/bin/rector process . --config .Build/gitlab-ci/typo3-rector/Extension.php +./vendor/bin/rector process . --config .Build/gitlab-ci/extension/typo3-rector.php ``` -# use php-cs-fixer local +# install php-cs-fixer in your local environment ``` composer require --dev friendsofphp/php-cs-fixer ``` -## run php-cs-fixer +## run php-cs-fixer to fix your code ``` -./vendor/bin/php-cs-fixer fix --config .Build/gitlab-ci/php-cs-fixer/Extension.php +./vendor/bin/php-cs-fixer fix --config .Build/gitlab-ci/extension/php-cs-fixer.php ``` -# use typo3-typoscript-lint local +# install typo3-typoscript-lint in your local environment ``` composer require --dev helmich/typo3-typoscript-lint ``` -## run typo3-typoscript-lint +## run typo3-typoscript-lint to display the errors ``` -vendor/bin/typoscript-lint -c .Build/gitlab-ci/typoscript-lint/Extension.yml --fail-on-warnings +vendor/bin/typoscript-lint -c .Build/gitlab-ci/extension/typoscript-lint.yml --fail-on-warnings ``` - diff --git a/.Build/gitlab-ci/extension-gitlab-ci.yml b/.Build/gitlab-ci/extension-gitlab-ci.yml index 9f6d3d388962ae304c1f0f59fc380e9eb4ea6d3e..f236df6c150fb6bd0f6ff2a77fb2616c5fbbe90c 100644 --- a/.Build/gitlab-ci/extension-gitlab-ci.yml +++ b/.Build/gitlab-ci/extension-gitlab-ci.yml @@ -5,7 +5,7 @@ stages: stage: test image: ekreative/php-cs-fixer:3 script: - - php-cs-fixer fix --dry-run --config=.Build/gitlab-ci/php-cs-fixer/Extension.php --diff --format=junit > php-report.xml + - php-cs-fixer fix --dry-run --config=.Build/gitlab-ci/extension/php-cs-fixer.php --diff --format=junit > php-report.xml tags: - docker artifacts: @@ -21,7 +21,7 @@ stages: before_script: - composer global req ssch/typo3-rector script: - - /tmp/vendor/bin/rector process . --config .Build/gitlab-ci/typo3-rector/Extension.php --dry-run + - /tmp/vendor/bin/rector process . --config .Build/gitlab-ci/extension/typo3-rector.php --dry-run "TypoScript Linter": stage: test image: composer:2 @@ -30,4 +30,4 @@ stages: before_script: - composer global req helmich/typo3-typoscript-lint script: - - /tmp/vendor/bin/typoscript-lint -c .Build/gitlab-ci/typoscript-lint/Extension.yml --fail-on-warnings + - /tmp/vendor/bin/typoscript-lint -c .Build/gitlab-ci/extension/typoscript-lint.yml --fail-on-warnings diff --git a/.Build/gitlab-ci/php-cs-fixer/Extension.php b/.Build/gitlab-ci/extension/php-cs-fixer.php similarity index 100% rename from .Build/gitlab-ci/php-cs-fixer/Extension.php rename to .Build/gitlab-ci/extension/php-cs-fixer.php diff --git a/.Build/gitlab-ci/typo3-rector/Extension.php b/.Build/gitlab-ci/extension/typo3-rector.php similarity index 100% rename from .Build/gitlab-ci/typo3-rector/Extension.php rename to .Build/gitlab-ci/extension/typo3-rector.php diff --git a/.Build/gitlab-ci/typoscript-lint/Extension.yml b/.Build/gitlab-ci/extension/typoscript-lint.yml similarity index 100% rename from .Build/gitlab-ci/typoscript-lint/Extension.yml rename to .Build/gitlab-ci/extension/typoscript-lint.yml diff --git a/.Build/gitlab-ci/php-cs-fixer/Project.php b/.Build/gitlab-ci/php-cs-fixer/Project.php deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/.Build/gitlab-ci/project-gitlab-ci.yml b/.Build/gitlab-ci/project-gitlab-ci.yml index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..eae8fa2b6936401030b303649069e727c996a9a0 100644 --- a/.Build/gitlab-ci/project-gitlab-ci.yml +++ b/.Build/gitlab-ci/project-gitlab-ci.yml @@ -0,0 +1,14 @@ +stages: + - test +"PHP CS Fixer": + stage: test + image: ekreative/php-cs-fixer:3 + script: + - php-cs-fixer fix --dry-run --config=.Build/gitlab-ci/extension/php-cs-fixer.php --diff --format=junit > php-report.xml + tags: + - docker + artifacts: + expire_in: 2 hours + reports: + junit: + - php-report.xml \ No newline at end of file diff --git a/.Build/gitlab-ci/project/php-cs-fixer.php b/.Build/gitlab-ci/project/php-cs-fixer.php new file mode 100644 index 0000000000000000000000000000000000000000..92d273e46f403176cf6a5d11697dfd01a0d314dd --- /dev/null +++ b/.Build/gitlab-ci/project/php-cs-fixer.php @@ -0,0 +1,101 @@ +<?php +/* + * This file is part of the TYPO3 CMS project. + * + * It is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License, either version 2 + * of the License, or any later version. + * + * For the full copyright and license information, please read the + * LICENSE.txt file that was distributed with this source code. + * + * The TYPO3 project - inspiring people to share! + */ +/** + * This file represents the configuration for Code Sniffing PSR-2-related + * automatic checks of coding guidelines + * Install @fabpot's great php-cs-fixer tool via + * + * $ composer global require friendsofphp/php-cs-fixer + * + * And then simply run + * + * $ ./bin/php-cs-fixer fix --config ./Build/gitlab-ci/php-cs-fixer/Extension.php + * + * inside the TYPO3 directory. Warning: This may take up to 10 minutes. + * + * For more information read: + * https://www.php-fig.org/psr/psr-2/ + * https://cs.sensiolabs.org + */ +if (PHP_SAPI !== 'cli') { + die('This script supports command line usage only. Please check your command.'); +} +// Define in which folders to search and which folders to exclude +// Exclude all files and directories from .gitignore +$finder = (new PhpCsFixer\Finder()) + ->ignoreVCSIgnored(true) + ->in(realpath(__DIR__ . '/../../../')); +// Return a Code Sniffing configuration using +// all sniffers needed for PSR-2 +// and additionally: +// - Remove leading slashes in use clauses. +// - PHP single-line arrays should not have trailing comma. +// - Single-line whitespace before closing semicolon are prohibited. +// - Remove unused use statements in the PHP source code +// - Ensure Concatenation to have at least one whitespace around +// - Remove trailing whitespace at the end of blank lines. +return (new \PhpCsFixer\Config()) + ->setRiskyAllowed(true) + ->setRules([ + '@DoctrineAnnotation' => true, + '@PSR2' => true, + 'array_syntax' => ['syntax' => 'short'], + 'blank_line_after_opening_tag' => false, + 'braces' => ['allow_single_line_closure' => true], + 'cast_spaces' => ['space' => 'none'], + 'compact_nullable_typehint' => true, + 'concat_space' => ['spacing' => 'one'], + 'declare_equal_normalize' => ['space' => 'none'], + 'dir_constant' => true, + 'function_typehint_space' => true, + 'lowercase_cast' => true, + 'method_argument_space' => ['on_multiline' => 'ensure_fully_multiline'], + 'modernize_types_casting' => true, + 'native_function_casing' => true, + 'new_with_braces' => true, + 'no_alias_functions' => true, + 'no_blank_lines_after_phpdoc' => true, + 'no_empty_phpdoc' => true, + 'no_empty_statement' => true, + 'no_extra_blank_lines' => true, + 'no_leading_import_slash' => true, + 'no_leading_namespace_whitespace' => true, + 'no_null_property_initialization' => true, + 'no_short_bool_cast' => true, + 'no_singleline_whitespace_before_semicolons' => true, + 'no_superfluous_elseif' => true, + 'no_trailing_comma_in_singleline_array' => true, + 'no_unneeded_control_parentheses' => true, + 'no_unused_imports' => true, + 'no_useless_else' => true, + 'no_whitespace_in_blank_line' => true, + 'ordered_imports' => true, + 'php_unit_construct' => ['assertions' => ['assertEquals', 'assertSame', 'assertNotEquals', 'assertNotSame']], + 'php_unit_mock_short_will_return' => true, + 'php_unit_test_case_static_method_calls' => ['call_type' => 'self'], + 'phpdoc_no_access' => true, + 'phpdoc_no_empty_return' => true, + 'phpdoc_no_package' => true, + 'phpdoc_scalar' => true, + 'phpdoc_trim' => true, + 'phpdoc_types' => true, + 'phpdoc_types_order' => ['null_adjustment' => 'always_last', 'sort_algorithm' => 'none'], + 'return_type_declaration' => ['space_before' => 'none'], + 'single_quote' => true, + 'single_line_comment_style' => ['comment_types' => ['hash']], + 'single_trait_insert_per_statement' => true, + 'trailing_comma_in_multiline' => ['elements' => ['arrays']], + 'whitespace_after_comma_in_array' => true, + ]) + ->setFinder($finder); diff --git a/.Build/gitlab-ci/typo3-rector/Project.php b/.Build/gitlab-ci/typo3-rector/Project.php deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/.Build/gitlab-ci/typoscript-lint/Project.yml b/.Build/gitlab-ci/typoscript-lint/Project.yml deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000