diff --git a/.github/workflows/static-code-analysis.yml b/.github/workflows/static-code-analysis.yml index 8b43819..c4a571b 100644 --- a/.github/workflows/static-code-analysis.yml +++ b/.github/workflows/static-code-analysis.yml @@ -42,6 +42,11 @@ jobs: run: | echo "COMPOSER_CACHE_DIR=$(composer config cache-dir)" >> $GITHUB_OUTPUT + - name: Get packages' directories + id: components + run: | + echo COMPONENTS=$(find src/Nexus -mindepth 2 -type f -name composer.json | cut -d '/' -f 1-3 | sort -fh) >> $GITHUB_OUTPUT + - name: Cache Composer dependencies uses: actions/cache@v4 with: @@ -51,7 +56,45 @@ jobs: ${{ github.workflow }}-PHP_${{ matrix.php-version }}- - name: Install dependencies - run: composer update --ansi + run: | + composer update --ansi + composer global require ergebnis/composer-normalize + + - name: Check - Composer validate + run: | + COMPONENTS=${{ steps.components.outputs.COMPONENTS }} + COMPONENTS+=('.') + + validate() { + local exit=0 + OUTPUT=$(bash -xc "composer validate --strict --ansi --working-dir $1 2>&1") || exit=$? + + printf "::group::$1" + echo $OUTPUT + printf "::endgroup::" + } + export -f validate + + echo "$COMPONENTS" | xargs -n1 validate {} + + - name: Check - Composer normalize + run: | + COMPONENTS=${{ steps.components.outputs.COMPONENTS }} + COMPONENTS+=('.') + + normalize() { + local exit=0 + OUTPUT=$(bash -xc "composer normalize --dry-run --diff --ansi --working-dir $1 2>&1") || exit=$? + + printf "::group::$1" + echo $OUTPUT + printf "::endgroup::" + + exit $? + } + export -f normalize + + echo "$COMPONENTS" | xargs -n1 normalize {} - name: Check - file permissions run: bin/check-file-permissions