diff --git a/.github/scripts/verify-zsh-manifest.sh b/.github/scripts/verify-zsh-manifest.sh new file mode 100644 index 0000000000..cb9bab0922 --- /dev/null +++ b/.github/scripts/verify-zsh-manifest.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +set -euo pipefail + +manifest="${1:?missing zsh manifest path}" +expected_sha256="${2:?missing expected zsh manifest SHA-256}" + +if command -v sha256sum >/dev/null 2>&1; then + printf '%s %s\n' "$expected_sha256" "$manifest" | sha256sum --check - +else + printf '%s %s\n' "$expected_sha256" "$manifest" | shasum -a 256 --check - +fi diff --git a/.github/workflows/rust-release.yml b/.github/workflows/rust-release.yml index f6c10f7a09..c154a8aed4 100644 --- a/.github/workflows/rust-release.yml +++ b/.github/workflows/rust-release.yml @@ -16,6 +16,7 @@ on: env: CODEX_ZSH_RELEASE_TAG: codex-zsh-v0.1.0 + CODEX_ZSH_MANIFEST_SHA256: c534eab89dcea7e3d8a5e5b3f49c025c7c64cd4e4d9814ee24871de58a9359a1 concurrency: group: ${{ github.workflow }} @@ -361,6 +362,8 @@ jobs: curl -fsSL \ "https://github.com/${GITHUB_REPOSITORY}/releases/download/${CODEX_ZSH_RELEASE_TAG}/codex-zsh" \ -o "${RUNNER_TEMP}/codex-zsh" + bash "${GITHUB_WORKSPACE}/.github/scripts/verify-zsh-manifest.sh" \ + "${RUNNER_TEMP}/codex-zsh" "$CODEX_ZSH_MANIFEST_SHA256" - name: Build Codex package archive if: ${{ runner.os != 'macOS' }} @@ -599,6 +602,8 @@ jobs: curl -fsSL \ "https://github.com/${GITHUB_REPOSITORY}/releases/download/${CODEX_ZSH_RELEASE_TAG}/codex-zsh" \ -o "$zsh_manifest" + bash "${GITHUB_WORKSPACE}/.github/scripts/verify-zsh-manifest.sh" \ + "$zsh_manifest" "$CODEX_ZSH_MANIFEST_SHA256" PYTHONPATH="${GITHUB_WORKSPACE}/scripts" python3 - "$TARGET" "$signed_root" "$zsh_manifest" <<'PY' import shutil