From c93b8df483ade63fc31441603732d38d18d78d21 Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Wed, 26 Nov 2025 06:49:18 +0100 Subject: [PATCH] chore: consolidate lint workflows --- .github/workflows/lint.yml | 173 +++++++++++++++++++++++ .github/workflows/onpush_superlinter.yml | 84 ----------- .github/workflows/weekly-supelinter.yaml | 95 ------------- 3 files changed, 173 insertions(+), 179 deletions(-) create mode 100644 .github/workflows/lint.yml delete mode 100644 .github/workflows/onpush_superlinter.yml delete mode 100644 .github/workflows/weekly-supelinter.yaml diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 000000000..04eff9ebe --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,173 @@ +name: Lint workflows + +on: + push: + branches: [ master ] + paths-ignore: + - "**/config.*" + pull_request: + branches: [ master ] + schedule: + - cron: "0 0 * * 0" + workflow_dispatch: + +permissions: + contents: write + pull-requests: write + +jobs: + lint-changes: + if: github.event_name == 'push' || github.event_name == 'pull_request' + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v6 + with: + fetch-depth: 0 + + - name: Set diff range + run: | + if [ "${{ github.event_name }}" = "pull_request" ]; then + echo "DIFF_RANGE=${{ github.event.pull_request.base.sha }}...${{ github.sha }}" >> $GITHUB_ENV + else + echo "DIFF_RANGE=${{ github.event.before }}...${{ github.sha }}" >> $GITHUB_ENV + fi + + - name: Fix non-printable Unicode spaces in changed text files + run: | + set -euo pipefail + CHANGED_FILES=$(git diff --name-only "$DIFF_RANGE") + UNICODE_SPACES_REGEX=$'[\\u00A0\\u2002\\u2003\\u2007\\u2008\\u2009\\u202F\\u205F\\u3000\\u200B]' + for file in $CHANGED_FILES; do + if [ -f "$file" ]; then + MIME_TYPE=$(file --mime-type -b "$file") + if [[ "$MIME_TYPE" == text/* ]]; then + perl -CSD -pe "s/$UNICODE_SPACES_REGEX/ /g" "$file" > "$file.tmp" && mv "$file.tmp" "$file" + fi + fi + done + + - name: Run Super Linter + uses: super-linter/super-linter/slim@main + continue-on-error: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + VALIDATE_ALL_CODEBASE: false + VALIDATE_CHECKOV: false + VALIDATE_PYTHON_PYLINT: false + VALIDATE_JSCPD: false + VALIDATE_NATURAL_LANGUAGE: false + FILTER_REGEX_EXCLUDE: .github/workflows/.* + FIX_ENV: false + FIX_HTML_PRETTIER: false + FIX_SHELL_SHFMT: true + FIX_YAML_PRETTIER: false + FIX_JSON: false + FIX_MARKDOWN: false + FIX_PYTHON_BLACK: false + FIX_PYTHON_ISORT: false + FIX_PYTHON_RUFF: false + + - name: Restore executable permissions + run: | + find . -type f \( -name "*.sh" -o -name "run" \) -exec chmod +x {} \; + + - name: Sort changed JSON files + run: | + set -euo pipefail + mapfile -t changed < <(git diff --name-only "$DIFF_RANGE" -- '*/*.json') + if [ "${#changed[@]}" -eq 0 ]; then + echo "No changed JSON files to sort." + exit 0 + fi + for file in "${changed[@]}"; do + if [ -f "$file" ]; then + tmp="$file.tmp" + jq --sort-keys . "$file" > "$tmp" && mv "$tmp" "$file" + fi + done + + - name: Remove Super-Linter output (prevent checkout conflict) + run: sudo rm -rf super-linter-output/ + + lint-autofix: + if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v6 + with: + fetch-depth: 0 + + - name: Fix non-printable Unicode spaces in all text files + run: | + set -euo pipefail + UNICODE_SPACES_REGEX=$'[\\u00A0\\u2002\\u2003\\u2007\\u2008\\u2009\\u202F\\u205F\\u3000\\u200B]' + find . -type f ! -path "./.git/*" | while read -r file; do + MIME_TYPE=$(file --mime-type -b "$file") + if [[ "$MIME_TYPE" == text/* ]]; then + perl -CSD -pe "s/$UNICODE_SPACES_REGEX/ /g" "$file" > "$file.tmp" && mv "$file.tmp" "$file" + fi + done + + - name: Run Super Linter + uses: super-linter/super-linter/slim@main + continue-on-error: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + VALIDATE_ALL_CODEBASE: true + VALIDATE_CHECKOV: false + VALIDATE_PYTHON_PYLINT: false + VALIDATE_JSCPD: false + VALIDATE_NATURAL_LANGUAGE: false + FILTER_REGEX_EXCLUDE: .github/workflows/.* + FIX_ENV: true + FIX_HTML_PRETTIER: true + FIX_SHELL_SHFMT: true + FIX_YAML_PRETTIER: true + FIX_JSON: false + FIX_MARKDOWN: true + FIX_PYTHON_BLACK: true + FIX_PYTHON_ISORT: true + FIX_PYTHON_RUFF: true + + - name: Use 4 spaces in shell scripts + run: | + curl -sSLo /usr/local/bin/shfmt https://github.com/mvdan/sh/releases/download/v3.12.0/shfmt_v3.12.0_linux_amd64 + chmod +x /usr/local/bin/shfmt + find . -type f \( -name "*.sh" -o -name "run" \) -exec shfmt -w -i 4 -ci -bn -sr {} + + + - name: Sort json files + run: | + set -euo pipefail + shopt -s nullglob + for file in */*.json; do + tmp="$file.tmp" + jq --sort-keys . "$file" > "$tmp" && mv "$tmp" "$file" + done + + - name: Restore executable permissions + run: | + find . -type f \( -name "*.sh" -o -name "run" \) -exec chmod +x {} \; + + - name: Remove Super-Linter output (prevent checkout conflict) + run: sudo rm -rf super-linter-output/ + + - name: Check for linting changes + id: changed + run: | + if ! git diff --quiet; then + echo "changed=true" >> "$GITHUB_OUTPUT" + else + echo "changed=false" >> "$GITHUB_OUTPUT" + fi + + - name: Create New Pull Request If Needed + if: steps.changed.outputs.changed == 'true' + uses: peter-evans/create-pull-request@v7 + with: + title: "Github bot: fix linting issues nobuild" + commit-message: "fix: auto-fix linting issues" + branch-suffix: timestamp diff --git a/.github/workflows/onpush_superlinter.yml b/.github/workflows/onpush_superlinter.yml deleted file mode 100644 index 8b5b8d06c..000000000 --- a/.github/workflows/onpush_superlinter.yml +++ /dev/null @@ -1,84 +0,0 @@ -name: Lint On Change - -on: - push: - branches: [ master ] - paths-ignore: - - "**/config.*" - pull_request: - branches: [ master ] - -jobs: - run-lint: - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v6 - with: - fetch-depth: 0 - - - name: Set diff range - id: diff - run: | - if [ "${{ github.event_name }}" = "pull_request" ]; then - echo "DIFF_RANGE=${{ github.event.pull_request.base.sha }}...${{ github.sha }}" >> $GITHUB_ENV - else - echo "DIFF_RANGE=${{ github.event.before }}...${{ github.sha }}" >> $GITHUB_ENV - fi - - - name: Fix non-printable Unicode spaces in changed text files - run: | - echo "Finding changed files in $DIFF_RANGE..." - CHANGED_FILES=$(git diff --name-only $DIFF_RANGE) - UNICODE_SPACES_REGEX=$'[\u00A0\u2002\u2003\u2007\u2008\u2009\u202F\u205F\u3000\u200B]' - for file in $CHANGED_FILES; do - if [ -f "$file" ]; then - MIME_TYPE=$(file --mime-type -b "$file") - if [[ "$MIME_TYPE" == text/* ]]; then - echo "Fixing: $file" - perl -CSD -pe "s/$UNICODE_SPACES_REGEX/ /g" "$file" > "$file.tmp" && mv "$file.tmp" "$file" - else - echo "Skipping non-text file: $file ($MIME_TYPE)" - fi - fi - done - - - name: Run Super Linter - uses: super-linter/super-linter/slim@main - continue-on-error: true - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - VALIDATE_ALL_CODEBASE: false - VALIDATE_CHECKOV: false - VALIDATE_PYTHON_PYLINT: false - VALIDATE_JSCPD: false - VALIDATE_NATURAL_LANGUAGE: false - FILTER_REGEX_EXCLUDE: .github/workflows/.* - FIX_ENV: false - FIX_HTML_PRETTIER: false - FIX_SHELL_SHFMT: true - FIX_YAML_PRETTIER: false - FIX_JSON: false - #FIX_JSON_PRETTIER: true - FIX_MARKDOWN: false - #FIX_MARKDOWN_PRETTIER: true - FIX_PYTHON_BLACK: false - FIX_PYTHON_ISORT: false - FIX_PYTHON_RUFF: false - - - name: Restore executable permissions - run: | - find . -type f \( -name "*.sh" -o -name "run" \) -exec chmod +x {} \; - - - name: Sort json files - id: sort - run: | - for files in */*.json; do - echo "Sorting $files" - jq --sort-keys . "$files" > config2.json && cat config2.json > "$files" && rm config2.json - echo "changed=1" >> "$GITHUB_OUTPUT" - done - shell: bash - - - name: Remove Super-Linter output (prevent checkout conflict) - run: sudo rm -rf super-linter-output/ diff --git a/.github/workflows/weekly-supelinter.yaml b/.github/workflows/weekly-supelinter.yaml deleted file mode 100644 index f094453d5..000000000 --- a/.github/workflows/weekly-supelinter.yaml +++ /dev/null @@ -1,95 +0,0 @@ -name: Lint Codebase - -on: - workflow_dispatch: - schedule: - - cron: "0 0 * * 0" - -jobs: - super-lint: - name: Lint and Autofix - runs-on: ubuntu-latest - - steps: - - name: Checkout repository - uses: actions/checkout@v6 - with: - fetch-depth: 0 - - - name: Fix non-printable Unicode spaces in all text files - run: | - echo "Searching for all files in the repository..." - UNICODE_SPACES_REGEX=$'[\u00A0\u2002\u2003\u2007\u2008\u2009\u202F\u205F\u3000\u200B]' - # Find all regular files, excluding .git directory - find . -type f ! -path "./.git/*" | while read -r file; do - MIME_TYPE=$(file --mime-type -b "$file") - if [[ "$MIME_TYPE" == text/* ]]; then - echo "Fixing: $file" - perl -CSD -pe "s/$UNICODE_SPACES_REGEX/ /g" "$file" > "$file.tmp" && mv "$file.tmp" "$file" - else - echo "Skipping non-text file: $file ($MIME_TYPE)" - fi - done - - - name: Run Super Linter - uses: super-linter/super-linter/slim@main - continue-on-error: true - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - VALIDATE_ALL_CODEBASE: true - VALIDATE_CHECKOV: false - VALIDATE_PYTHON_PYLINT: false - VALIDATE_JSCPD: false - VALIDATE_NATURAL_LANGUAGE: false - FILTER_REGEX_EXCLUDE: .github/workflows/.* - FIX_ENV: true - FIX_HTML_PRETTIER: true - FIX_SHELL_SHFMT: true - FIX_YAML_PRETTIER: true - FIX_JSON: false - #FIX_JSON_PRETTIER: true - FIX_MARKDOWN: true - #FIX_MARKDOWN_PRETTIER: true - FIX_PYTHON_BLACK: true - FIX_PYTHON_ISORT: true - FIX_PYTHON_RUFF: true - - - name: Use 4 spaces in shell scripts - run: | - curl -sSLo /usr/local/bin/shfmt https://github.com/mvdan/sh/releases/download/v3.12.0/shfmt_v3.12.0_linux_amd64 - chmod +x /usr/local/bin/shfmt - find . -type f \( -name "*.sh" -o -name "run" \) -exec shfmt -w -i 4 -ci -bn -sr {} + - - - name: Sort json files - id: sort - run: | - for files in */*.json; do - echo "Sorting $files" - jq --sort-keys . "$files" > config2.json && cat config2.json > "$files" && rm config2.json - echo "changed=1" >> "$GITHUB_OUTPUT" - done - shell: bash - - - name: Restore executable permissions - run: | - find . -type f \( -name "*.sh" -o -name "run" \) -exec chmod +x {} \; - - - name: Remove Super-Linter output (prevent checkout conflict) - run: sudo rm -rf super-linter-output/ - - - name: Check for linting changes - id: changed - run: | - if ! git diff --quiet; then - echo "changed=true" >> "$GITHUB_OUTPUT" - else - echo "changed=false" >> "$GITHUB_OUTPUT" - fi - - - name: Create New Pull Request If Needed - if: steps.changed.outputs.changed == 'true' - uses: peter-evans/create-pull-request@v7 - with: - title: "Github bot: fix linting issues nobuild" - commit-message: "fix: auto-fix linting issues" - branch-suffix: timestamp