burrow/Scripts/ci/ensure-spacectl.sh
Conrad Kramer 002bd382e9
Some checks failed
Cache: Publish Nix / Publish Nix Cache (push) Waiting to run
Build Rust / Cargo Test (push) Successful in 4m14s
Build Site / Next.js Build (push) Failing after 6s
Infra: OpenTofu / OpenTofu (grafana) (push) Successful in 5s
Lint Governance / BEP Metadata (push) Successful in 0s
Build: Android / Android Rust Core Stub (push) Failing after 23s
Wire Forge-native release infrastructure
2026-06-07 05:51:12 -07:00

60 lines
1.6 KiB
Bash
Executable file

#!/usr/bin/env bash
set -euo pipefail
if command -v spacectl >/dev/null 2>&1; then
spacectl version || true
exit 0
fi
if ! command -v curl >/dev/null 2>&1; then
echo "::error ::curl is required to install spacectl" >&2
exit 1
fi
if ! command -v tar >/dev/null 2>&1; then
echo "::error ::tar is required to install spacectl" >&2
exit 1
fi
os="$(uname -s | tr '[:upper:]' '[:lower:]')"
arch="$(uname -m)"
case "$arch" in
x86_64|amd64) arch="amd64" ;;
aarch64|arm64) arch="arm64" ;;
*)
echo "::error ::Unsupported arch for spacectl: ${arch}" >&2
exit 1
;;
esac
if [[ "$os" != "linux" && "$os" != "darwin" ]]; then
echo "::error ::Unsupported OS for spacectl: ${os}" >&2
exit 1
fi
version="${SPACECTL_VERSION:-v0.5.0}"
version_num="${version#v}"
asset="spacectl_${version_num}_${os}_${arch}.tar.gz"
url="https://github.com/namespacelabs/spacectl/releases/download/${version}/${asset}"
tmp_dir="${RUNNER_TEMP:-${TMPDIR:-/tmp}}/burrow-spacectl.$$"
install_dir="${RUNNER_TEMP:-${TMPDIR:-/tmp}}/spacectl-bin"
mkdir -p "$tmp_dir" "$install_dir"
trap 'rm -rf "$tmp_dir"' EXIT
curl -fsSL -o "${tmp_dir}/${asset}" "$url"
tar -xzf "${tmp_dir}/${asset}" -C "$tmp_dir"
bin="${tmp_dir}/spacectl"
if [[ ! -x "$bin" ]]; then
bin="$(find "$tmp_dir" -maxdepth 3 -type f -name spacectl -perm -111 | head -n1 || true)"
fi
if [[ -z "${bin}" || ! -x "${bin}" ]]; then
echo "::error ::Failed to locate spacectl binary in ${asset}" >&2
exit 1
fi
install -m 0755 "$bin" "${install_dir}/spacectl"
if [[ -n "${GITHUB_PATH:-}" ]]; then
echo "${install_dir}" >> "${GITHUB_PATH}"
fi
export PATH="${install_dir}:$PATH"
spacectl version || true