diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index aa8627c3..8992ecca 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -134,7 +134,7 @@ jobs: if: startsWith(matrix.os, 'windows') - name: Test cmd run: just --version & shfmt --version & protoc --version - shell: cmd + shell: cmd # zizmor: ignore[misfeature] used for compatibility testing if: startsWith(matrix.os, 'windows') # We use the version output to check the version of cargo-binstall, but they # several times change the version output format in the past so we need to diff --git a/.github/zizmor.yml b/.github/zizmor.yml index 00ea4ee0..8a361831 100644 --- a/.github/zizmor.yml +++ b/.github/zizmor.yml @@ -10,7 +10,3 @@ rules: policies: taiki-e/*: any '*': ref-pin - misfeature: - ignore: - # We use `shell: cmd` to test compatibility. - - ci.yml diff --git a/.gitignore b/.gitignore index 2c324bff..1a75babe 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ target Cargo.lock +mutants.out* tmp # For platform and editor specific settings, it is recommended to add to diff --git a/tools/tidy.sh b/tools/tidy.sh index 0aa9562a..2f824f10 100755 --- a/tools/tidy.sh +++ b/tools/tidy.sh @@ -909,8 +909,21 @@ EOF JOB_DEFAULT_SHELL="${default_shell}" fi for step in $(jq -c '.steps[]' <<<"${job}"); do + uses='' + # https://github.com/vmactions: prepare, run + # https://github.com/cross-platform-actions/action: run, shell + # https://github.com/uraimo/run-on-arch-action: setup, install, run, shell prepare='' - eval "$(jq -r 'if .run then @sh "RUN=\(.run) shell=\(.shell)" else @sh "RUN=\(.with.run) prepare=\(.with.prepare) shell=\(.with.shell)" end' <<<"${step}")" + setup='' + install='' + eval "$(jq -r 'if .run then @sh "RUN=\(.run) shell=\(.shell)" else @sh "uses=\(.uses) FALLBACK=\(.with.fallback) RUN=\(.with.run) prepare=\(.with.prepare) setup=\(.with.setup) install=\(.with.install) shell=\(.with.shell)" end' <<<"${step}")" + if [[ "${uses}" == */install-action@* ]]; then + if [[ "${FALLBACK}" != 'none' ]]; then + error "'fallback: none' must be set for install-action (${name}.steps[${n}])" + fi + _=$((n++)) + continue + fi if [[ "${RUN}" == 'null' ]]; then _=$((n++)) continue @@ -924,8 +937,14 @@ EOF shell='sh' fi fi - shellcheck_for_gha "${RUN}" "${shell}" "${workflow_path} ${name}.steps[${n}].run" - shellcheck_for_gha "${prepare:-null}" 'sh' "${workflow_path} ${name}.steps[${n}].run" + if [[ -z "${uses}" ]]; then + shellcheck_for_gha "${RUN}" "${shell}" "${workflow_path} ${name}.steps[${n}].run" + else + shellcheck_for_gha "${RUN}" "${shell}" "${workflow_path} ${name}.steps[${n}].with.run" + fi + shellcheck_for_gha "${prepare:-null}" 'sh' "${workflow_path} ${name}.steps[${n}].with.prepare" + shellcheck_for_gha "${setup:-null}" "${shell}" "${workflow_path} ${name}.steps[${n}].with.setup" + shellcheck_for_gha "${install:-null}" "${shell}" "${workflow_path} ${name}.steps[${n}].with.install" _=$((n++)) done done