diff --git a/.github/workflows/build-plugin-archive.yml b/.github/workflows/build-plugin-archive.yml index 92307cdc..72f4f3ef 100644 --- a/.github/workflows/build-plugin-archive.yml +++ b/.github/workflows/build-plugin-archive.yml @@ -135,7 +135,7 @@ jobs: !./.github run-build-tools: name: Process build steps - timeout-minutes: 5 + timeout-minutes: 10 runs-on: ubuntu-latest needs: checkout-dependencies env: @@ -153,7 +153,7 @@ jobs: uses: shivammathur/setup-php@v2 with: php-version: ${{ inputs.PHP_VERSION_BUILD }} - tools: humbug/php-scoper:dev-main + tools: humbug/php-scoper:dev-main, rector - name: Check optional Composer build tools id: composer-tools run: | @@ -164,12 +164,12 @@ jobs: echo "$EXIT" exit 0 fi - jq '.extra | has("composer-asset-compiler")' < composer.json >/dev/null 2>&1 + jq '.extra | has("composer-asset-compiler")' --exit-status < composer.json >/dev/null 2>&1 local EXIT=$? echo "$EXIT" } hasTranslateConfig(){ - jq '.extra | has("wp-translation-downloader")' < composer.json >/dev/null 2>&1 + jq '.extra | has("wp-translation-downloader")' --exit-status < composer.json >/dev/null 2>&1 local EXIT=$? echo "$EXIT" } @@ -178,9 +178,15 @@ jobs: local EXIT=$? echo "$EXIT" } + hasRectorConfig(){ + test -f rector.php + local EXIT=$? + echo "$EXIT" + } echo "assets-compiler=$( hasAssetConfig )" >> $GITHUB_OUTPUT echo "translation-downloader=$( hasTranslateConfig )" >> $GITHUB_OUTPUT echo "php-scoper=$( hasScoperConfig )" >> $GITHUB_OUTPUT + echo "rector=$( hasRectorConfig )" >> $GITHUB_OUTPUT - name: Set up node cache mode run: | @@ -215,6 +221,11 @@ jobs: composer global require inpsyde/wp-translation-downloader composer wp-translation-downloader:download + - name: Run Rector + if: steps.composer-tools.outputs.rector == '0' + run: | + rector + - name: Run PHP Scoper if: steps.composer-tools.outputs.php-scoper == '0' run: | @@ -223,7 +234,10 @@ jobs: sed -i "s/'__composer_autoload_files'/\'__composer_autoload_files_${{ github.sha }}'/g" "build/vendor/composer/autoload_real.php" - name: Move unchanged code to build directory if: steps.composer-tools.outputs.php-scoper != '0' - run: mv * build 2>/dev/null + run: | + shopt -s extglob dotglob + mkdir build + mv !(build) build - name: Set artifact name id: set-artifact-name diff --git a/docs/archive-creation.md b/docs/archive-creation.md index 2658c2e3..7a30ca3c 100644 --- a/docs/archive-creation.md +++ b/docs/archive-creation.md @@ -7,10 +7,12 @@ To achieve that, the reusable workflow: 1. Installs dependencies (including dev-dependencies) defined in `composer.json` 2. Executes `inpsyde/composer-assets-compiler` if required & configured by the package 3. Executes `inpsyde/wp-translation-downloader` if required & configured by the package -4. Re-installs dependencies without dev-dependencies -5. Sets current commit hash and plugin version in the plugin's main file -6. Runs `wp dist-archive` to create the final archive (with builtin support for a `.distignore` file) -7. Uploads it as an artifact for download or further processing +4. Executes PHP-Scoper if configured by the package +5. Executes Rector if configured by the package +6. Re-installs dependencies without dev-dependencies +7. Sets current commit hash and plugin version in the plugin's main file +8. Runs `wp dist-archive` to create the final archive (with builtin support for a `.distignore` file) +9. Uploads it as an artifact for download or further processing ## Simple usage example: