diff --git a/.github/actions/install-mise/action.yaml b/.github/actions/install-mise/action.yaml new file mode 100644 index 0000000..f8a10a6 --- /dev/null +++ b/.github/actions/install-mise/action.yaml @@ -0,0 +1,165 @@ +--- +name: "Install mise" +description: "Install mise and repo dependencies" +inputs: + working_directory: + description: "Directory which will be used for mise installation" + required: false + default: "." + github_token: + description: "GitHub token for API rate limits (use a PAT for higher limits)" + required: false + default: "" + remove_android_sdk: + description: "Remove the Android SDK during cleanup (frees ~9GB but is slow takes around 1m15s)" + required: false + default: "false" + +runs: + using: "composite" + steps: + - name: Configure git + shell: bash + run: | + echo "::group::Configure git" + git config --global --add safe.directory '*' + echo "::endgroup::" + + echo "::group::GitHub API rate limit info" + if [[ -n "${GITHUB_TOKEN}" ]]; then + echo "Using provided GitHub token for API requests" + curl -s -H "Authorization: token ${GITHUB_TOKEN}" https://api.github.com/rate_limit | jq '.rate' + else + echo "No GitHub token provided, using unauthenticated requests with lower rate limits" + curl -s https://api.github.com/rate_limit | jq '.rate' + fi + echo "::endgroup::" + + echo "::group:: PWD and directory contents" + pwd + ls -la + echo "::endgroup::" + + # - name: "Analyze disk usage" + # shell: bash + # run: | + # echo "::group::Filesystem usage" + # df -h + # echo "::endgroup::" + + # # 11G /usr/local/lib/android + # # 5.6G /usr/share/dotnet + # # 4.3G /usr/share/dotnet/sdk + # # 3.7G /usr/local/.ghcup + # # 3.3G /usr/share/swift + # # 1.8G /opt/hostedtoolcache/CodeQL + # # 1.6G /opt/hostedtoolcache/Python + # # 1.5G /usr/lib/jvm + # # 1.3G /usr/local/share/powershell + # # 1.1G /usr/local/julia1.12.7 + + # echo "::group::Top 30 largest directories" + # # Depth-limited scan of common large roots; sorted biggest-first for cleanup decisions. + # sudo du -h -d 3 /opt /usr/share /usr/local /usr/lib /home 2>/dev/null \ + # | sort -rh | head -n 30 + # echo "::endgroup::" + + + - name: "Free up disk space" + shell: bash + env: + REMOVE_ANDROID_SDK: ${{ inputs.remove_android_sdk }} + run: | + echo "::group::Disk usage before cleanup" + df -h + echo "::endgroup::" + + echo "::group::Free up disk space" + if [[ "${REMOVE_ANDROID_SDK}" == "true" ]]; then + echo "Removing android sdk..." + sudo rm -rf /usr/local/lib/android + else + echo "Skipping android sdk removal (remove_android_sdk != true)" + fi + echo "Removing dotnet..." + sudo rm -rf /usr/share/dotnet + echo "Removing swift..." + sudo rm -rf /usr/share/swift + echo "Removing CodeQL..." + sudo rm -rf /opt/hostedtoolcache/CodeQL + echo "Removing go..." + sudo rm -rf /opt/hostedtoolcache/go + echo "::endgroup::" + + echo "::group::Disk usage after cleanup" + df -h + echo "::endgroup::" + + - name: "Determine repo root" + id: repo-root + shell: bash + env: + WORKING_DIR: ${{ inputs.working_directory }} + run: | + echo "::group::Configure repo root for mise installation" + REPO_ROOT=$(git -C "$WORKING_DIR" rev-parse --show-toplevel) + echo "path=${REPO_ROOT}" >> "$GITHUB_OUTPUT" + + ACTION_REPO_ROOT="${GITHUB_ACTION_PATH%%/.github/*}" + echo "action_repo_root=${ACTION_REPO_ROOT}" >> "$GITHUB_OUTPUT" + echo "::endgroup::" + + echo "::group::Print repo root, PWD, and GITHUB_ACTION_PATH" + echo "Repo root: ${REPO_ROOT}" + echo "Current directory: $(pwd)" + echo "GITHUB_ACTION_PATH: ${GITHUB_ACTION_PATH}" + echo " Action repo root: ${ACTION_REPO_ROOT}" + echo "::endgroup::" + + - name: Restore cache mise + id: cache-mise + uses: actions/cache/restore@v6 + with: + path: | + ~/.local/share/mise + ${{ steps.repo-root.outputs.path }}/.mise-cache + key: mise-${{ runner.os }}-${{ runner.arch }}-mgmt-${{ hashFiles(format('{0}/mise.lock', steps.repo-root.outputs.path)) }} + restore-keys: | + mise-${{ runner.os }}-${{ runner.arch }}-mgmt- + mise-${{ runner.os }}-${{ runner.arch }}- + + - name: Install mise + shell: bash + working-directory: ${{ steps.repo-root.outputs.path }} + env: + GITHUB_TOKEN: ${{ inputs.github_token || github.token }} + MISE_GITHUB_TOKEN: ${{ inputs.github_token || github.token }} + run: | + curl https://mise.run | sh + echo "$HOME/.local/share/mise/bin" >> $GITHUB_PATH + echo "$HOME/.local/share/mise/shims" >> $GITHUB_PATH + + - name: Mise install + shell: bash + working-directory: ${{ steps.repo-root.outputs.path }} + env: + GITHUB_TOKEN: ${{ inputs.github_token || github.token }} + MISE_GITHUB_TOKEN: ${{ inputs.github_token || github.token }} + run: | + mise install + echo "::group::mise doctor" + mise doctor || true + echo "::endgroup::" + echo "::group::Disk usage after mise install" + df -h + echo "::endgroup::" + + - name: "Save cache mise" + if: always() + continue-on-error: true + uses: actions/cache/save@v6 + with: + path: | + ~/.local/share/mise + ${{ steps.repo-root.outputs.path }}/.mise-cache + key: mise-${{ runner.os }}-${{ runner.arch }}-mgmt-${{ hashFiles(format('{0}/mise.lock', steps.repo-root.outputs.path)) }} diff --git a/.github/actions/perform-pre-commit/action.yaml b/.github/actions/perform-pre-commit/action.yaml new file mode 100644 index 0000000..eb39a93 --- /dev/null +++ b/.github/actions/perform-pre-commit/action.yaml @@ -0,0 +1,58 @@ +--- +name: "Perform pre-commit checks" +description: "Perform pre-commit checks" +inputs: + base_sha: + description: "Base commit SHA used to determine pre-commit diff range" + required: false + default: "" + all_files: + description: "Run pre-commit against all files instead of a diff range" + required: false + default: "true" +runs: + using: "composite" + steps: + - name: Restore cache pre-commit hooks + id: cache-pre-commit + uses: actions/cache/restore@v6 + with: + path: ~/.cache/pre-commit + key: pre-commit-${{ runner.os }}-${{ hashFiles('.pre-commit-config.yaml') }} + restore-keys: | + pre-commit-${{ runner.os }}- + + - name: Install pre-commit + shell: bash + run: | + echo "::group::Install pre-commit hooks" + mise exec -- pre-commit install --install-hooks + echo "::endgroup::" + + - name: Run pre-commit + shell: bash + run: | + echo "::group::Run pre-commit checks" + if [[ "${ALL_FILES}" == "true" ]]; then + SKIP=no-commit-to-branch mise exec -- pre-commit run --all-files --show-diff-on-failure --color=always + else + if [[ -n "${BASE_SHA}" ]]; then + FROM_REF="${BASE_SHA}" + else + FROM_REF="origin/main" + fi + SKIP=no-commit-to-branch mise exec -- pre-commit run --from-ref "${FROM_REF}" --to-ref HEAD --show-diff-on-failure --color=always + fi + echo "::endgroup::" + env: + ALL_FILES: ${{ inputs.all_files }} + BASE_SHA: ${{ inputs.base_sha }} + PRE_COMMIT_COLOR: always + + - name: "Save cache pre-commit hooks" + if: always() + continue-on-error: true + uses: actions/cache/save@v6 + with: + path: ~/.cache/pre-commit + key: pre-commit-${{ runner.os }}-${{ hashFiles('.pre-commit-config.yaml') }} diff --git a/.github/scripts/generate-validation-comment.js b/.github/scripts/generate-validation-comment.js index 55eba88..09f7bae 100644 --- a/.github/scripts/generate-validation-comment.js +++ b/.github/scripts/generate-validation-comment.js @@ -2,6 +2,7 @@ // Environment variables: // - RESULTS_PATH : path to the results.json file (optional, defaults to '.local/results/results.json') // - VALIDATION_OUTCOME : result of the validation job ('success' | 'failure' | 'cancelled'), optional +// - VALIDATION_TYPE : type of FHIR examples being reported // - RUN_URL : URL to the workflow run, for linking to artifacts // - OUTPUT_PATH : path for the generated comment body (optional, defaults to 'comment-body.md') // - GITHUB_SERVER_URL : GitHub server URL (set automatically by Actions) @@ -14,8 +15,11 @@ const path = require("node:path"); const resultsPath = process.env.RESULTS_PATH ?? ".local/results/results.json"; const validationOutcome = process.env.VALIDATION_OUTCOME; +const validationType = process.env.VALIDATION_TYPE; const runUrl = process.env.RUN_URL; const outputPath = process.env.OUTPUT_PATH ?? "comment-body.md"; +const heading = `## ๐Ÿ”ฌ FHIR Validation Results - ${validationType.toUpperCase()}`; +const commentMarker = ``; const serverUrl = process.env.GITHUB_SERVER_URL; const repository = process.env.GITHUB_REPOSITORY; @@ -47,7 +51,7 @@ let body; if (!fs.existsSync(resultsPath)) { body = - `## ๐Ÿ”ฌ FHIR Validation Results\n\n` + + `${heading}\n\n` + `โŒ Validation did not produce a results file. ` + `Check the [workflow run](${runUrl}) for details.`; } else { @@ -95,8 +99,14 @@ if (!fs.existsSync(resultsPath)) { } } - const overall = - errors > 0 ? "โŒ Validation failed" : warnings > 0 ? "โš ๏ธ Validation passed with warnings" : "โœ… Validation passed"; + let overall; + if (errors > 0) { + overall = "โŒ Validation failed"; + } else if (warnings > 0) { + overall = "โš ๏ธ Validation passed with warnings"; + } else { + overall = "โœ… Validation passed"; + } const summary = `**${errors}** error(s) ยท **${warnings}** warning(s) ยท **${info}** info`; @@ -115,7 +125,7 @@ if (!fs.existsSync(resultsPath)) { } body = - `## ๐Ÿ”ฌ FHIR Validation Results\n\n` + + `${heading}\n\n` + `${overall} โ€” ${summary}\n` + details + `\n> Full HTML report available in the [workflow run artifacts](${runUrl}).`; @@ -126,5 +136,5 @@ const warning = ? `> [!WARNING]\n> The FHIR validator exited with errors. This should be reviewed before merging.\n\n` : ""; -fs.writeFileSync(outputPath, `\n${warning}${body}`); +fs.writeFileSync(outputPath, `${commentMarker}\n${warning}${body}`); console.log(`Comment body written to ${outputPath}`); diff --git a/.github/workflows/cicd-1-pull-request.yaml b/.github/workflows/cicd-1-pull-request.yaml index e6a668c..8670732 100644 --- a/.github/workflows/cicd-1-pull-request.yaml +++ b/.github/workflows/cicd-1-pull-request.yaml @@ -14,48 +14,7 @@ jobs: steps: - name: Checkout uses: actions/checkout@v7 - - - name: Restore cache pre-commit hooks - id: cache-pre-commit - uses: actions/cache/restore@v6 - with: - path: ~/.cache/pre-commit - key: pre-commit-${{ runner.os }}-${{ hashFiles('.pre-commit-config.yaml') }} - restore-keys: | - pre-commit-${{ runner.os }}- - - - name: Install mise - shell: bash - run: | - echo "::group::Configure git" - git config --global --add safe.directory '*' - echo "::endgroup::" - - echo "::group::Install pre-commit hooks" - curl https://mise.run | sh - echo "$HOME/.local/share/mise/bin" >> "$GITHUB_PATH" - echo "$HOME/.local/share/mise/shims" >> "$GITHUB_PATH" - echo "::endgroup::" - - - name: Install pre-commit - shell: bash - run: | - echo "::group::Install pre-commit hooks" - mise exec -- pre-commit install --install-hooks - echo "::endgroup::" - - - name: Run pre-commit - shell: bash - run: | - echo "::group::Run pre-commit checks" - SKIP=no-commit-to-branch mise exec -- pre-commit run --all-files --show-diff-on-failure --color=always - env: - PRE_COMMIT_COLOR: always - - - name: "Save cache pre-commit hooks" - if: always() - continue-on-error: true - uses: actions/cache/save@v6 - with: - path: ~/.cache/pre-commit - key: pre-commit-${{ runner.os }}-${{ hashFiles('.pre-commit-config.yaml') }} + - name: Initialize mise + uses: ./.github/actions/install-mise + - name: Run pre-commit checks + uses: ./.github/actions/perform-pre-commit diff --git a/.github/workflows/report-fhir-validation.yaml b/.github/workflows/report-fhir-validation.yaml index 27b5b41..9fcbb33 100644 --- a/.github/workflows/report-fhir-validation.yaml +++ b/.github/workflows/report-fhir-validation.yaml @@ -12,6 +12,9 @@ jobs: name: Generate validation comment runs-on: ubuntu-latest if: github.event.workflow_run.event == 'pull_request' + strategy: + matrix: + example_type: ["hiv", "psa"] permissions: contents: read outputs: @@ -27,7 +30,7 @@ jobs: uses: actions/download-artifact@v8.0.1 continue-on-error: true with: - name: fhir-validation-results + name: fhir-validation-results-${{ matrix.example_type }} path: .local/results/ github-token: ${{ github.token }} run-id: ${{ github.event.workflow_run.id }} @@ -45,6 +48,7 @@ jobs: env: RESULTS_PATH: .local/results/results.json VALIDATION_OUTCOME: ${{ github.event.workflow_run.conclusion }} + VALIDATION_TYPE: ${{ matrix.example_type }} RUN_URL: ${{ github.event.workflow_run.html_url }} OUTPUT_PATH: .local/comment-body.md run: node .github/scripts/generate-validation-comment.js @@ -52,13 +56,16 @@ jobs: - name: Upload comment body uses: actions/upload-artifact@v7.0.1 with: - name: fhir-validation-comment + name: fhir-validation-comment-${{ matrix.example_type }} path: .local/comment-body.md report: name: Post validation report runs-on: ubuntu-latest needs: generate + strategy: + matrix: + example_type: ["hiv", "psa"] permissions: pull-requests: write issues: write @@ -67,7 +74,7 @@ jobs: - name: Download comment body uses: actions/download-artifact@v8.0.1 with: - name: fhir-validation-comment + name: fhir-validation-comment-${{ matrix.example_type }} path: .local/ github-token: ${{ github.token }} @@ -80,7 +87,7 @@ jobs: with: issue-number: ${{ needs.generate.outputs.pr-number }} comment-author: github-actions[bot] - body-includes: '' + body-includes: "" - name: Post or update PR comment uses: peter-evans/create-or-update-comment@e8674b075228eee787fea43ef493e45ece1004c9 diff --git a/.github/workflows/validate-fhir-examples.yaml b/.github/workflows/validate-fhir-examples.yaml index 247dc90..5d532b0 100644 --- a/.github/workflows/validate-fhir-examples.yaml +++ b/.github/workflows/validate-fhir-examples.yaml @@ -23,13 +23,16 @@ on: validator_version: description: 'FHIR validator version to use' required: false - default: '6.10.3' + default: '6.10.4' jobs: validate: name: Validate FHIR examples runs-on: ubuntu-latest permissions: contents: read + strategy: + matrix: + example_type: ["hiv", "psa"] steps: - name: Checkout repository uses: actions/checkout@v7 @@ -51,7 +54,7 @@ jobs: mkdir -p .local/results echo "$PR_NUMBER" > .local/results/pr-number.txt - name: Set up Java - uses: actions/setup-java@v6.0.0 + uses: actions/setup-java@v6.0.1 with: distribution: temurin java-version: '25' @@ -82,7 +85,7 @@ jobs: restore-keys: | fhir-validator-cache-${{ steps.vars.outputs.fhir_version }}- fhir-validator-cache- - - name: Run FHIR validation (FHIR R${{ steps.vars.outputs.fhir_version }}) + - name: Run FHIR validation on ${{ matrix.example_type }} (FHIR R${{ steps.vars.outputs.fhir_version }}) id: validate continue-on-error: true env: @@ -90,13 +93,13 @@ jobs: run: | tests/fhir-examples/fhir-validator.sh \ -j "$JAR" \ - -i examples/fhir \ + -i examples/fhir/${{ matrix.example_type }} \ -o .local/results \ -v "$FHIR_VERSION" \ -c .local/cache - name: Upload validation results uses: actions/upload-artifact@v7.0.1 with: - name: fhir-validation-results + name: fhir-validation-results-${{ matrix.example_type }} path: .local/results/ if-no-files-found: warn diff --git a/tests/config/gitleaks.toml b/.gitleaks.toml similarity index 91% rename from tests/config/gitleaks.toml rename to .gitleaks.toml index db1361c..3501e79 100644 --- a/tests/config/gitleaks.toml +++ b/.gitleaks.toml @@ -16,4 +16,4 @@ regexes = [ ] [allowlist] -paths = ['''.terraform.lock.hcl''', '''poetry.lock''', '''yarn.lock''', '''.pre-commit-config.yaml''', '''\.local'''] +paths = ['''.terraform.lock.hcl''', '''poetry.lock''', '''yarn.lock''', '''mise\.lock''', '''.pre-commit-config.yaml''', '''\.local'''] diff --git a/.mise.toml b/.mise.toml index c435170..398fa88 100644 --- a/.mise.toml +++ b/.mise.toml @@ -1,5 +1,7 @@ [settings] install_before = "7d" +lockfile = true +locked = true [settings.python] compile = false @@ -14,16 +16,19 @@ cosign = false # https://devguide.python.org/versions/ # Required by: pre-commit, yamllint, shellcheck-py, check-jsonschema, # conventional-pre-commit, sqlfluff -"core:python" = "3.14.5" +python = "3.14.6" # https://nodejs.org/en/about/previous-releases # Required by: markdownlint-cli, prettier, spectral, newman -"core:node" = "22.22.3" +node = "24.21.0" + +# Required by: local runs of validator +java = "temurin-25.0.4+101.0.LTS" # โ”€โ”€โ”€ Pre-commit โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ # https://github.com/pre-commit/pre-commit/releases -pre-commit = "4.6.0" +pre-commit = "4.6.2" # โ”€โ”€โ”€ Linting & formatting โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ @@ -31,16 +36,19 @@ pre-commit = "4.6.0" # Required by: pre-commit actionlint hook (system fallback) actionlint = "1.7.12" +# Required by: pre-commit shellcheck hook (system fallback) +shellcheck = "0.11.0" + # https://github.com/crate-ci/typos/releases # Required by: pre-commit typos hook (system fallback) -typos = "1.47.0" +typos = "1.50.2" # https://github.com/mikefarah/yq/releases # Required by: .github/workflows/ (yq to read/update YAML values) -yq = "4.53.2" +yq = "4.53.6" # https://github.com/biomejs/biome -biome = "2.5.2" +biome = "2.5.14" # โ”€โ”€โ”€ Security scanning โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 1eb278f..bd834fe 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -70,6 +70,6 @@ repos: hooks: - id: gitleaks name: gitleaks - entry: gitleaks detect --no-git --redact --verbose --config=tests/config/gitleaks.toml + entry: gitleaks detect --no-git --redact --verbose --config=.gitleaks.toml language: system pass_filenames: false diff --git a/examples/fhir/order_servicerequest_no_email.json b/examples/fhir/hiv/order_servicerequest_no_email.json similarity index 100% rename from examples/fhir/order_servicerequest_no_email.json rename to examples/fhir/hiv/order_servicerequest_no_email.json diff --git a/mise.lock b/mise.lock new file mode 100644 index 0000000..ad46b00 --- /dev/null +++ b/mise.lock @@ -0,0 +1,401 @@ +# @generated - this file is auto-generated by `mise lock` https://mise.jdx.dev/dev-tools/mise-lock.html + +lockfile_version = 2 + +[[tools.actionlint]] +version = "1.7.12" +backend = "aqua:rhysd/actionlint" +specifiers = ["1.7.12"] + +[tools.actionlint."platforms.linux-arm64"] +checksum = "sha256:325e971b6ba9bfa504672e29be93c24981eeb1c07576d730e9f7c8805afff0c6" +url = "https://github.com/rhysd/actionlint/releases/download/v1.7.12/actionlint_1.7.12_linux_arm64.tar.gz" +url_api = "https://api.github.com/repos/rhysd/actionlint/releases/assets/384924897" +provenance = "github-attestations" + +[tools.actionlint."platforms.linux-arm64-musl"] +checksum = "sha256:325e971b6ba9bfa504672e29be93c24981eeb1c07576d730e9f7c8805afff0c6" +url = "https://github.com/rhysd/actionlint/releases/download/v1.7.12/actionlint_1.7.12_linux_arm64.tar.gz" +url_api = "https://api.github.com/repos/rhysd/actionlint/releases/assets/384924897" +provenance = "github-attestations" + +[tools.actionlint."platforms.linux-x64"] +checksum = "sha256:8aca8db96f1b94770f1b0d72b6dddcb1ebb8123cb3712530b08cc387b349a3d8" +url = "https://github.com/rhysd/actionlint/releases/download/v1.7.12/actionlint_1.7.12_linux_amd64.tar.gz" +url_api = "https://api.github.com/repos/rhysd/actionlint/releases/assets/384924896" +provenance = "github-attestations" + +[tools.actionlint."platforms.linux-x64-musl"] +checksum = "sha256:8aca8db96f1b94770f1b0d72b6dddcb1ebb8123cb3712530b08cc387b349a3d8" +url = "https://github.com/rhysd/actionlint/releases/download/v1.7.12/actionlint_1.7.12_linux_amd64.tar.gz" +url_api = "https://api.github.com/repos/rhysd/actionlint/releases/assets/384924896" +provenance = "github-attestations" + +[tools.actionlint."platforms.macos-arm64"] +checksum = "sha256:aba9ced2dee8d27fecca3dc7feb1a7f9a52caefa1eb46f3271ea66b6e0e6953f" +url = "https://github.com/rhysd/actionlint/releases/download/v1.7.12/actionlint_1.7.12_darwin_arm64.tar.gz" +url_api = "https://api.github.com/repos/rhysd/actionlint/releases/assets/384924893" +provenance = "github-attestations" + +[tools.actionlint."platforms.macos-x64"] +checksum = "sha256:5b44c3bc2255115c9b69e30efc0fecdf498fdb63c5d58e17084fd5f16324c644" +url = "https://github.com/rhysd/actionlint/releases/download/v1.7.12/actionlint_1.7.12_darwin_amd64.tar.gz" +url_api = "https://api.github.com/repos/rhysd/actionlint/releases/assets/384924880" +provenance = "github-attestations" + +[tools.actionlint."platforms.windows-x64"] +checksum = "sha256:6e7241b51e6817ea6a047693d8e6fed13b31819c9a0dd6c5a726e1592d22f6e9" +url = "https://github.com/rhysd/actionlint/releases/download/v1.7.12/actionlint_1.7.12_windows_amd64.zip" +url_api = "https://api.github.com/repos/rhysd/actionlint/releases/assets/384924919" +provenance = "github-attestations" + +[[tools.biome]] +version = "2.5.14" +backend = "aqua:biomejs/biome" +specifiers = ["2.5.14"] + +[tools.biome."platforms.linux-arm64"] +checksum = "sha256:50ac7f598985e21b15da57e5d87da0f7ab0c163e6f78eb6d4690309827d77ef8" +url = "https://github.com/biomejs/biome/releases/download/%40biomejs/biome%402.5.14/biome-linux-arm64" +url_api = "https://api.github.com/repos/biomejs/biome/releases/assets/567471272" +provenance = "github-attestations" + +[tools.biome."platforms.linux-arm64-musl"] +checksum = "sha256:e97669c6e998e4a160c71bd97757eae21fe8c8cb58a044311096779cd1d00454" +url = "https://github.com/biomejs/biome/releases/download/%40biomejs/biome%402.5.14/biome-linux-arm64-musl" +url_api = "https://api.github.com/repos/biomejs/biome/releases/assets/567471270" +provenance = "github-attestations" + +[tools.biome."platforms.linux-x64"] +checksum = "sha256:290c1c85deeaf01310d9187306060b53961574856a7e34f59d9662562e6f19fe" +url = "https://github.com/biomejs/biome/releases/download/%40biomejs/biome%402.5.14/biome-linux-x64" +url_api = "https://api.github.com/repos/biomejs/biome/releases/assets/567471264" +provenance = "github-attestations" + +[tools.biome."platforms.linux-x64-musl"] +checksum = "sha256:d15a39b256ca1294fe8f8817f9162f7c26229ca0cb8bd19d0369540c1a01d781" +url = "https://github.com/biomejs/biome/releases/download/%40biomejs/biome%402.5.14/biome-linux-x64-musl" +url_api = "https://api.github.com/repos/biomejs/biome/releases/assets/567471265" +provenance = "github-attestations" + +[tools.biome."platforms.macos-arm64"] +checksum = "sha256:3d1194d0a7b720315fb6f8cbafeb5b18ca7100c3e635e8ce82ef46b315de9c0e" +url = "https://github.com/biomejs/biome/releases/download/%40biomejs/biome%402.5.14/biome-darwin-arm64" +url_api = "https://api.github.com/repos/biomejs/biome/releases/assets/567471268" +provenance = "github-attestations" + +[tools.biome."platforms.macos-x64"] +checksum = "sha256:b331448d7afb592cc4674e9bd6905eae5e79f5dd9b34b61b44803a6b7a91b801" +url = "https://github.com/biomejs/biome/releases/download/%40biomejs/biome%402.5.14/biome-darwin-x64" +url_api = "https://api.github.com/repos/biomejs/biome/releases/assets/567471271" +provenance = "github-attestations" + +[tools.biome."platforms.windows-x64"] +checksum = "sha256:bef8f088617c8364314f55dffdc7b8ddabe12fee9e1e71f45f708a7027579280" +url = "https://github.com/biomejs/biome/releases/download/%40biomejs/biome%402.5.14/biome-win32-x64.exe" +url_api = "https://api.github.com/repos/biomejs/biome/releases/assets/567471269" +provenance = "github-attestations" + +[[tools.gitleaks]] +version = "8.30.1" +backend = "aqua:gitleaks/gitleaks" +specifiers = ["8.30.1"] + +[tools.gitleaks."platforms.linux-arm64"] +checksum = "sha256:e4a487ee7ccd7d3a7f7ec08657610aa3606637dab924210b3aee62570fb4b080" +url = "https://github.com/gitleaks/gitleaks/releases/download/v8.30.1/gitleaks_8.30.1_linux_arm64.tar.gz" +url_api = "https://api.github.com/repos/gitleaks/gitleaks/releases/assets/378332057" + +[tools.gitleaks."platforms.linux-arm64-musl"] +checksum = "sha256:e4a487ee7ccd7d3a7f7ec08657610aa3606637dab924210b3aee62570fb4b080" +url = "https://github.com/gitleaks/gitleaks/releases/download/v8.30.1/gitleaks_8.30.1_linux_arm64.tar.gz" +url_api = "https://api.github.com/repos/gitleaks/gitleaks/releases/assets/378332057" + +[tools.gitleaks."platforms.linux-x64"] +checksum = "sha256:551f6fc83ea457d62a0d98237cbad105af8d557003051f41f3e7ca7b3f2470eb" +url = "https://github.com/gitleaks/gitleaks/releases/download/v8.30.1/gitleaks_8.30.1_linux_x64.tar.gz" +url_api = "https://api.github.com/repos/gitleaks/gitleaks/releases/assets/378332058" + +[tools.gitleaks."platforms.linux-x64-musl"] +checksum = "sha256:551f6fc83ea457d62a0d98237cbad105af8d557003051f41f3e7ca7b3f2470eb" +url = "https://github.com/gitleaks/gitleaks/releases/download/v8.30.1/gitleaks_8.30.1_linux_x64.tar.gz" +url_api = "https://api.github.com/repos/gitleaks/gitleaks/releases/assets/378332058" + +[tools.gitleaks."platforms.macos-arm64"] +checksum = "sha256:b40ab0ae55c505963e365f271a8d3846efbc170aa17f2607f13df610a9aeb6a5" +url = "https://github.com/gitleaks/gitleaks/releases/download/v8.30.1/gitleaks_8.30.1_darwin_arm64.tar.gz" +url_api = "https://api.github.com/repos/gitleaks/gitleaks/releases/assets/378332059" + +[tools.gitleaks."platforms.macos-x64"] +checksum = "sha256:dfe101a4db2255fc85120ac7f3d25e4342c3c20cf749f2c20a18081af1952709" +url = "https://github.com/gitleaks/gitleaks/releases/download/v8.30.1/gitleaks_8.30.1_darwin_x64.tar.gz" +url_api = "https://api.github.com/repos/gitleaks/gitleaks/releases/assets/378332053" + +[tools.gitleaks."platforms.windows-x64"] +checksum = "sha256:d29144deff3a68aa93ced33dddf84b7fdc26070add4aa0f4513094c8332afc4e" +url = "https://github.com/gitleaks/gitleaks/releases/download/v8.30.1/gitleaks_8.30.1_windows_x64.zip" +url_api = "https://api.github.com/repos/gitleaks/gitleaks/releases/assets/378333178" + +[[tools.java]] +version = "temurin-25.0.4+101.0.LTS" +backend = "core:java" +specifiers = ["temurin-25.0.4+101.0.LTS"] + +[tools.java."platforms.linux-arm64"] +checksum = "sha256:69df11a02cfa3ef7d7ca645e03edce6778ec090e100f6ae2b42097865730ac52" +url = "https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.4.1%2B1/OpenJDK25U-jdk_aarch64_linux_hotspot_25.0.4.1_1.tar.gz" + +[tools.java."platforms.linux-arm64-musl"] +checksum = "sha256:8d19373d427017d86ac87cf6a47ba49746be864832f60b52b7e3b1531c6b2cb8" +url = "https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.4.1%2B1/OpenJDK25U-jdk_aarch64_alpine-linux_hotspot_25.0.4.1_1.tar.gz" + +[tools.java."platforms.linux-x64"] +checksum = "sha256:dbb698396d478e7fa2b1e50f4103324b2a99b90569ee27c33f2261f9215cf41e" +url = "https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.4.1%2B1/OpenJDK25U-jdk_x64_linux_hotspot_25.0.4.1_1.tar.gz" + +[tools.java."platforms.linux-x64-musl"] +checksum = "sha256:f18648ee5ce45261f50dc9493fdae7ddebaa2a7a857cafda3e2a448a79c03dee" +url = "https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.4.1%2B1/OpenJDK25U-jdk_x64_alpine-linux_hotspot_25.0.4.1_1.tar.gz" + +[tools.java."platforms.macos-arm64"] +checksum = "sha256:61979887f7506a24a57439ff99adb8b3a7fc89977d9cfe3b8984f58a981b7b9d" +url = "https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.4.1%2B1/OpenJDK25U-jdk_aarch64_mac_hotspot_25.0.4.1_1.tar.gz" + +[tools.java."platforms.macos-x64"] +checksum = "sha256:e6229d9504f7922053ab31821b9e6bee8761daf7b026a3476d1a027563009880" +url = "https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.4.1%2B1/OpenJDK25U-jdk_x64_mac_hotspot_25.0.4.1_1.tar.gz" + +[tools.java."platforms.windows-x64"] +checksum = "sha256:00c847d804f4a78e9f04f2683faf14fed898535b177b7fc704486cb0284e9283" +url = "https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.4.1%2B1/OpenJDK25U-jdk_x64_windows_hotspot_25.0.4.1_1.zip" + +[[tools.node]] +version = "24.21.0" +backend = "core:node" +specifiers = ["24.21.0"] + +[tools.node."platforms.linux-arm64"] +checksum = "sha256:724282c3b43aec998aa9527380465b45d229e021b58035f5f4f63095eabfe5d5" +url = "https://nodejs.org/dist/v24.21.0/node-v24.21.0-linux-arm64.tar.gz" + +[tools.node."platforms.linux-arm64-musl"] +checksum = "sha256:3048b0811e158ca0d8672b59c839861763e144492980d8d29b369dfee45747e4" +url = "https://unofficial-builds.nodejs.org/download/release/v24.21.0/node-v24.21.0-linux-arm64-musl.tar.gz" + +[tools.node."platforms.linux-x64"] +checksum = "sha256:6e1db87ef58b8819e5d5402eff1536491b18edd8eb7bee5ef7897876e88dc5ff" +url = "https://nodejs.org/dist/v24.21.0/node-v24.21.0-linux-x64.tar.gz" + +[tools.node."platforms.linux-x64-musl"] +checksum = "sha256:01a713e34da98e7b4d2a3191ee7ca3f93dd0384d1a2ef23c379b2161ee6e133a" +url = "https://unofficial-builds.nodejs.org/download/release/v24.21.0/node-v24.21.0-linux-x64-musl.tar.gz" + +[tools.node."platforms.macos-arm64"] +checksum = "sha256:bed7eea5325e1108f32ce5228ddd6a5f0f08a499ee42aa7442aea583702f6057" +url = "https://nodejs.org/dist/v24.21.0/node-v24.21.0-darwin-arm64.tar.gz" + +[tools.node."platforms.macos-x64"] +checksum = "sha256:1462cb3b3046b815cf8ea436d3da450ec1a9f11dac7e5a46b0ada5305d7e8097" +url = "https://nodejs.org/dist/v24.21.0/node-v24.21.0-darwin-x64.tar.gz" + +[tools.node."platforms.windows-x64"] +checksum = "sha256:158f7685b44de51f6c0df1d153526cbcd3e1bc739a8dfc607721cef75de9e541" +url = "https://nodejs.org/dist/v24.21.0/node-v24.21.0-win-x64.zip" + +[[tools.pre-commit]] +version = "4.6.2" +backend = "aqua:pre-commit/pre-commit" +specifiers = ["4.6.2"] + +[tools.pre-commit."platforms.linux-arm64"] +checksum = "sha256:43c09a73d82af8efff09900e60d76d67a2c3d990613c3c770b2b5c4418a16c4b" +url = "https://github.com/pre-commit/pre-commit/releases/download/v4.6.2/pre-commit-4.6.2.pyz" +url_api = "https://api.github.com/repos/pre-commit/pre-commit/releases/assets/509317714" + +[tools.pre-commit."platforms.linux-arm64-musl"] +checksum = "sha256:43c09a73d82af8efff09900e60d76d67a2c3d990613c3c770b2b5c4418a16c4b" +url = "https://github.com/pre-commit/pre-commit/releases/download/v4.6.2/pre-commit-4.6.2.pyz" +url_api = "https://api.github.com/repos/pre-commit/pre-commit/releases/assets/509317714" + +[tools.pre-commit."platforms.linux-x64"] +checksum = "sha256:43c09a73d82af8efff09900e60d76d67a2c3d990613c3c770b2b5c4418a16c4b" +url = "https://github.com/pre-commit/pre-commit/releases/download/v4.6.2/pre-commit-4.6.2.pyz" +url_api = "https://api.github.com/repos/pre-commit/pre-commit/releases/assets/509317714" + +[tools.pre-commit."platforms.linux-x64-musl"] +checksum = "sha256:43c09a73d82af8efff09900e60d76d67a2c3d990613c3c770b2b5c4418a16c4b" +url = "https://github.com/pre-commit/pre-commit/releases/download/v4.6.2/pre-commit-4.6.2.pyz" +url_api = "https://api.github.com/repos/pre-commit/pre-commit/releases/assets/509317714" + +[tools.pre-commit."platforms.macos-arm64"] +checksum = "sha256:43c09a73d82af8efff09900e60d76d67a2c3d990613c3c770b2b5c4418a16c4b" +url = "https://github.com/pre-commit/pre-commit/releases/download/v4.6.2/pre-commit-4.6.2.pyz" +url_api = "https://api.github.com/repos/pre-commit/pre-commit/releases/assets/509317714" + +[tools.pre-commit."platforms.macos-x64"] +checksum = "sha256:43c09a73d82af8efff09900e60d76d67a2c3d990613c3c770b2b5c4418a16c4b" +url = "https://github.com/pre-commit/pre-commit/releases/download/v4.6.2/pre-commit-4.6.2.pyz" +url_api = "https://api.github.com/repos/pre-commit/pre-commit/releases/assets/509317714" + +[[tools.python]] +version = "3.14.6" +backend = "core:python" +specifiers = ["3.14.6"] + +[tools.python."platforms.linux-arm64"] +checksum = "sha256:8ad1ec529cd1708245e8661a463245fc1479c43cbfd66e58b095456ebf77180a" +url = "https://github.com/astral-sh/python-build-standalone/releases/download/20260804/cpython-3.14.6+20260804-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz" +provenance = "github-attestations" + +[tools.python."platforms.linux-arm64-musl"] +checksum = "sha256:85dbb537dc5d6679edabfb61cefdf2511d26cb8669662c4563202b0990e79b4a" +url = "https://github.com/astral-sh/python-build-standalone/releases/download/20260804/cpython-3.14.6+20260804-aarch64-unknown-linux-musl-install_only_stripped.tar.gz" +provenance = "github-attestations" + +[tools.python."platforms.linux-x64"] +checksum = "sha256:ba960817e542642021135db330d875f410f4e14c64a62e2ae5faf3697ada08b2" +url = "https://github.com/astral-sh/python-build-standalone/releases/download/20260804/cpython-3.14.6+20260804-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz" +provenance = "github-attestations" + +[tools.python."platforms.linux-x64-musl"] +checksum = "sha256:cbedbddcc6b2de99310015e629df67aeb732f622bbf258ec5d310757f85ab7ac" +url = "https://github.com/astral-sh/python-build-standalone/releases/download/20260804/cpython-3.14.6+20260804-x86_64-unknown-linux-musl-install_only_stripped.tar.gz" +provenance = "github-attestations" + +[tools.python."platforms.macos-arm64"] +checksum = "blake3:e9164d7cebd580fa2d74b4fa9217ac4ec3e7579b905cd9202afd0b90d691ee54" +url = "https://github.com/astral-sh/python-build-standalone/releases/download/20260804/cpython-3.14.6+20260804-aarch64-apple-darwin-install_only_stripped.tar.gz" +provenance = "github-attestations" + +[tools.python."platforms.macos-x64"] +checksum = "sha256:78ded4c4f0b6a931240f09bd20608533bb40dd71c1ff953c7267359075ca8b16" +url = "https://github.com/astral-sh/python-build-standalone/releases/download/20260804/cpython-3.14.6+20260804-x86_64-apple-darwin-install_only_stripped.tar.gz" +provenance = "github-attestations" + +[tools.python."platforms.windows-x64"] +checksum = "sha256:ada613a2af32c04cf7c54726243c56d76f0e59f5f61d2f28371d3b9d8efad566" +url = "https://github.com/astral-sh/python-build-standalone/releases/download/20260804/cpython-3.14.6+20260804-x86_64-pc-windows-msvc-install_only_stripped.tar.gz" +provenance = "github-attestations" + +[[tools.shellcheck]] +version = "0.11.0" +backend = "aqua:koalaman/shellcheck" +specifiers = [ + "0.11.0", + "latest", +] + +[tools.shellcheck."platforms.linux-arm64"] +checksum = "sha256:12b331c1d2db6b9eb13cfca64306b1b157a86eb69db83023e261eaa7e7c14588" +url = "https://github.com/koalaman/shellcheck/releases/download/v0.11.0/shellcheck-v0.11.0.linux.aarch64.tar.xz" +url_api = "https://api.github.com/repos/koalaman/shellcheck/releases/assets/279056934" + +[tools.shellcheck."platforms.linux-arm64-musl"] +checksum = "sha256:12b331c1d2db6b9eb13cfca64306b1b157a86eb69db83023e261eaa7e7c14588" +url = "https://github.com/koalaman/shellcheck/releases/download/v0.11.0/shellcheck-v0.11.0.linux.aarch64.tar.xz" +url_api = "https://api.github.com/repos/koalaman/shellcheck/releases/assets/279056934" + +[tools.shellcheck."platforms.linux-x64"] +checksum = "sha256:8c3be12b05d5c177a04c29e3c78ce89ac86f1595681cab149b65b97c4e227198" +url = "https://github.com/koalaman/shellcheck/releases/download/v0.11.0/shellcheck-v0.11.0.linux.x86_64.tar.xz" +url_api = "https://api.github.com/repos/koalaman/shellcheck/releases/assets/279056942" + +[tools.shellcheck."platforms.linux-x64-musl"] +checksum = "sha256:8c3be12b05d5c177a04c29e3c78ce89ac86f1595681cab149b65b97c4e227198" +url = "https://github.com/koalaman/shellcheck/releases/download/v0.11.0/shellcheck-v0.11.0.linux.x86_64.tar.xz" +url_api = "https://api.github.com/repos/koalaman/shellcheck/releases/assets/279056942" + +[tools.shellcheck."platforms.macos-arm64"] +checksum = "sha256:56affdd8de5527894dca6dc3d7e0a99a873b0f004d7aabc30ae407d3f48b0a79" +url = "https://github.com/koalaman/shellcheck/releases/download/v0.11.0/shellcheck-v0.11.0.darwin.aarch64.tar.xz" +url_api = "https://api.github.com/repos/koalaman/shellcheck/releases/assets/279056932" + +[tools.shellcheck."platforms.macos-x64"] +checksum = "sha256:3c89db4edcab7cf1c27bff178882e0f6f27f7afdf54e859fa041fca10febe4c6" +url = "https://github.com/koalaman/shellcheck/releases/download/v0.11.0/shellcheck-v0.11.0.darwin.x86_64.tar.xz" +url_api = "https://api.github.com/repos/koalaman/shellcheck/releases/assets/279056930" + +[tools.shellcheck."platforms.windows-x64"] +checksum = "sha256:8a4e35ab0b331c85d73567b12f2a444df187f483e5079ceffa6bda1faa2e740e" +url = "https://github.com/koalaman/shellcheck/releases/download/v0.11.0/shellcheck-v0.11.0.zip" +url_api = "https://api.github.com/repos/koalaman/shellcheck/releases/assets/279056944" + +[[tools.typos]] +version = "1.50.2" +backend = "aqua:crate-ci/typos" +specifiers = ["1.50.2"] + +[tools.typos."platforms.linux-arm64"] +checksum = "sha256:27c4b6d0ba6f37d120ce32117777d703fc9d57ba71f16e8bcde5b35c987cf9b8" +url = "https://github.com/crate-ci/typos/releases/download/v1.50.2/typos-v1.50.2-aarch64-unknown-linux-musl.tar.gz" +url_api = "https://api.github.com/repos/crate-ci/typos/releases/assets/565799446" + +[tools.typos."platforms.linux-arm64-musl"] +checksum = "sha256:27c4b6d0ba6f37d120ce32117777d703fc9d57ba71f16e8bcde5b35c987cf9b8" +url = "https://github.com/crate-ci/typos/releases/download/v1.50.2/typos-v1.50.2-aarch64-unknown-linux-musl.tar.gz" +url_api = "https://api.github.com/repos/crate-ci/typos/releases/assets/565799446" + +[tools.typos."platforms.linux-x64"] +checksum = "sha256:abcb3e257c7c2abeff4d903f7fe68071357637605bdb283ce2251f44bc70dc09" +url = "https://github.com/crate-ci/typos/releases/download/v1.50.2/typos-v1.50.2-x86_64-unknown-linux-musl.tar.gz" +url_api = "https://api.github.com/repos/crate-ci/typos/releases/assets/565795694" + +[tools.typos."platforms.linux-x64-musl"] +checksum = "sha256:abcb3e257c7c2abeff4d903f7fe68071357637605bdb283ce2251f44bc70dc09" +url = "https://github.com/crate-ci/typos/releases/download/v1.50.2/typos-v1.50.2-x86_64-unknown-linux-musl.tar.gz" +url_api = "https://api.github.com/repos/crate-ci/typos/releases/assets/565795694" + +[tools.typos."platforms.macos-arm64"] +checksum = "sha256:70d61e9d682034133f0aa56f5a02bae0de168495f3cce62a87054aa7186c1901" +url = "https://github.com/crate-ci/typos/releases/download/v1.50.2/typos-v1.50.2-aarch64-apple-darwin.tar.gz" +url_api = "https://api.github.com/repos/crate-ci/typos/releases/assets/565802016" + +[tools.typos."platforms.macos-x64"] +checksum = "sha256:7480a081e51d428d94f560ef8b855ae0decb7c35cc686925ed887c5f51b1ecf1" +url = "https://github.com/crate-ci/typos/releases/download/v1.50.2/typos-v1.50.2-x86_64-apple-darwin.tar.gz" +url_api = "https://api.github.com/repos/crate-ci/typos/releases/assets/565800683" + +[tools.typos."platforms.windows-x64"] +checksum = "sha256:8474ca8bd72df497b7dee2272345bdea0d4926b18b708faea492fc9bcfd0b0e9" +url = "https://github.com/crate-ci/typos/releases/download/v1.50.2/typos-v1.50.2-x86_64-pc-windows-msvc.zip" +url_api = "https://api.github.com/repos/crate-ci/typos/releases/assets/565798642" + +[[tools.yq]] +version = "4.53.6" +backend = "aqua:mikefarah/yq" +specifiers = ["4.53.6"] + +[tools.yq."platforms.linux-arm64"] +checksum = "sha256:88a1016bc1d657375a35864e4f44b6f333df8ff97b559f51bba0adcb2169df09" +url = "https://github.com/mikefarah/yq/releases/download/v4.53.6/yq_linux_arm64" +url_api = "https://api.github.com/repos/mikefarah/yq/releases/assets/522028007" + +[tools.yq."platforms.linux-arm64-musl"] +checksum = "sha256:88a1016bc1d657375a35864e4f44b6f333df8ff97b559f51bba0adcb2169df09" +url = "https://github.com/mikefarah/yq/releases/download/v4.53.6/yq_linux_arm64" +url_api = "https://api.github.com/repos/mikefarah/yq/releases/assets/522028007" + +[tools.yq."platforms.linux-x64"] +checksum = "sha256:c5f056448f973ae7d39b5401949648a78f2dc1947d6a8eb65be60d5c504b9385" +url = "https://github.com/mikefarah/yq/releases/download/v4.53.6/yq_linux_amd64" +url_api = "https://api.github.com/repos/mikefarah/yq/releases/assets/522028022" + +[tools.yq."platforms.linux-x64-musl"] +checksum = "sha256:c5f056448f973ae7d39b5401949648a78f2dc1947d6a8eb65be60d5c504b9385" +url = "https://github.com/mikefarah/yq/releases/download/v4.53.6/yq_linux_amd64" +url_api = "https://api.github.com/repos/mikefarah/yq/releases/assets/522028022" + +[tools.yq."platforms.macos-arm64"] +checksum = "sha256:cceb0b8d71ea5294334121f8429f33f92b920e7217d904a2f9f35443968ac424" +url = "https://github.com/mikefarah/yq/releases/download/v4.53.6/yq_darwin_arm64" +url_api = "https://api.github.com/repos/mikefarah/yq/releases/assets/522028033" + +[tools.yq."platforms.macos-x64"] +checksum = "sha256:caa513cb04f3804b34d4752f0e0d7904fecb9e7cf1d34081289f83259319a7f6" +url = "https://github.com/mikefarah/yq/releases/download/v4.53.6/yq_darwin_amd64" +url_api = "https://api.github.com/repos/mikefarah/yq/releases/assets/522028031" + +[tools.yq."platforms.windows-x64"] +checksum = "sha256:ece3dd8bb50d39f93610506273ea262feb91e5c486bbddbb10abf91b2a6c0f14" +url = "https://github.com/mikefarah/yq/releases/download/v4.53.6/yq_windows_amd64.exe" +url_api = "https://api.github.com/repos/mikefarah/yq/releases/assets/522027974"