#!/usr/bin/env bash set_output() { local name=$1 value=$2 if [[ -n "${GITHUB_OUTPUT:-}" ]]; then printf '%s=%s\n' "$name" "$value" >>"$GITHUB_OUTPUT" fi } extract_sri_hash() { sed -nE 's/.*got:[[:space:]]*(sha256-[A-Za-z0-9+\/=]+).*/\1/p' "$1" | head -1 } # Echo the ``[project]`` version from upstream's pyproject.toml at a git ref # (branch, tag or commit sha). upstream_pyproject_version() { gh api -H "Accept: application/vnd.github.raw+json" \ "/repos/NousResearch/hermes-agent/contents/pyproject.toml?ref=${1}" | python3 -c 'import sys, tomllib; print(tomllib.load(sys.stdin.buffer)["project"]["version"])' } realize_flake_source() { nix build "$1.src" --no-link --print-out-paths 2>/dev/null | tail -1 || true } current_nix_system() { nix eval --impure --raw --expr builtins.currentSystem } publish_summary() { local report=$1 if [[ -n "${GITHUB_STEP_SUMMARY:-}" && -f "$report" ]]; then cat "$report" >>"$GITHUB_STEP_SUMMARY" fi } # Validation failure is data for the candidate PR, not a reason to discard it. run_validation() { local log_file=$1 shift if "$@" >"$log_file" 2>&1; then printf 'passed\n' else printf 'failed\n' fi }