# Copyright (c) 2024 Jonah Aragon # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS # IN THE SOFTWARE. name: 🤖 Linting permissions: contents: read on: workflow_dispatch: pull_request: branches: - main push: concurrency: group: ${{ github.ref }}-${{ github.workflow }} cancel-in-progress: true env: MAIN_BRANCH: ${{ github.event_name == 'push' }} jobs: megalinter: name: MegaLinter runs-on: ubuntu-latest steps: - if: ${{ env.MAIN_BRANCH }} uses: actions/checkout@v4 - if: ${{ env.MAIN_BRANCH == 0 }} uses: actions/checkout@v4 with: fetch-depth: 0 - name: Configure markdown-link-check run: | cat <> .markdown-link-check.json { "ignorePatterns": [ { "pattern": "^https://twitter.com" }, { "pattern": "^https://reddit.com" }, { "pattern": "^#_" }, { "pattern": ".onion" }, { "pattern": "^https://en.opensuse.org" }, { "pattern": "^https://quad9.net" }, { "pattern": "^https://dnscrypt.info" }, { "pattern": "^https://pipewire.org" } ], "replacementPatterns": [ { "pattern": "^assets/", "replacement": "https://www.privacyguides.org/en/assets/" }, { "pattern": "^(../)*assets/", "replacement": "https://www.privacyguides.org/en/assets/" }, { "pattern": "^/", "replacement": "https://www.privacyguides.org/" } ], "retryOn429": true, "retryCount": 5, "aliveStatusCodes": [200, 206, 403] } EOT - id: ml # You can override MegaLinter flavor used to have faster performances # More info at https://megalinter.io/flavors/ uses: oxsecurity/megalinter/flavors/documentation@v7.12.0 env: # All available variables are described in documentation # https://megalinter.io/configuration/ # Validates all source when push on main, else just the git diff with main. VALIDATE_ALL_CODEBASE: ${{ env.MAIN_BRANCH }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # ADD YOUR CUSTOM ENV VARIABLES HERE OR DEFINE THEM IN A FILE .mega-linter.yml AT THE ROOT OF YOUR REPOSITORY DISABLE: COPYPASTE,SPELL,HTML DISABLE_LINTERS: JSON_JSONLINT,MARKDOWN_MARKDOWN_TABLE_FORMATTER DISABLE_ERRORS_LINTERS: CSS_STYLELINT,MARKDOWN_MARKDOWN_LINK_CHECK,YAML_YAMLLINT,DOCKERFILE_HADOLINT,REPOSITORY_TRIVY,REPOSITORY_CHECKOV,REPOSITORY_GITLEAKS EDITORCONFIG_EDITORCONFIG_CHECKER_ARGUMENTS: -disable-indentation ENV_DOTENV_LINTER_ARGUMENTS: "--skip QuoteCharacter" MARKDOWN_MARKDOWN_LINK_CHECK_FILTER_REGEX_INCLUDE: (docs) MARKDOWN_MARKDOWNLINT_CONFIG_FILE: .markdownlint.yml MARKDOWN_MARKDOWNLINT_FILTER_REGEX_EXCLUDE: (PULL_REQUEST_TEMPLATE\.md) # Upload MegaLinter artifacts - name: Archive production artifacts if: success() || failure() uses: actions/upload-artifact@v4 with: name: MegaLinter reports path: | megalinter-reports mega-linter.log