feat: restore CI/release, prompt contracts, faster install (0.9.33)
Bring back Gitea CI + auto-publish; share release helpers; strengthen multi-turn tool/job prompts with a unit contract; ccache/make help and --release bootstrap. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Executable
+77
@@ -0,0 +1,77 @@
|
||||
#!/usr/bin/env bash
|
||||
# Shared helpers for packaging and publishing. Source from other scripts:
|
||||
# ROOT=...; . "$ROOT/scripts/lib_release.sh"
|
||||
# Safe to source multiple times.
|
||||
[[ -n "${_CST_LIB_RELEASE:-}" ]] && return 0
|
||||
_CST_LIB_RELEASE=1
|
||||
|
||||
: "${ROOT:=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)}"
|
||||
|
||||
# Print MAJOR.MINOR.PATCH from include/cst_version.h
|
||||
cst_version() {
|
||||
sed -n 's/^#define CST_VERSION_\(MAJOR\|MINOR\|PATCH\) \([0-9]*\)$/\2/p' \
|
||||
"$ROOT/include/cst_version.h" | paste -sd.
|
||||
}
|
||||
|
||||
# Write FILE.sha256 next to FILE (relative to cwd of FILE's directory).
|
||||
cst_sha256_write() {
|
||||
local f="$1" dir base
|
||||
dir="$(cd "$(dirname "$f")" && pwd)"
|
||||
base="$(basename "$f")"
|
||||
(cd "$dir" && sha256sum "$base" >"$base.sha256")
|
||||
}
|
||||
|
||||
# Pack DIR (relative to PARENT) as PARENT/NAME.tar.gz + .sha256
|
||||
# cst_pack_tgz dist cst-agent-0.9.33-linux-x86_64
|
||||
cst_pack_tgz() {
|
||||
local parent="$1" name="$2"
|
||||
mkdir -p "$parent"
|
||||
tar -C "$parent" -czf "$parent/$name.tar.gz" "$name"
|
||||
cst_sha256_write "$parent/$name.tar.gz"
|
||||
echo "$parent/$name.tar.gz"
|
||||
}
|
||||
|
||||
# Host arch for release asset names (x86_64|x86|aarch64) or empty.
|
||||
cst_host_release_arch() {
|
||||
case "$(uname -m)" in
|
||||
x86_64 | amd64) echo x86_64 ;;
|
||||
aarch64 | arm64) echo aarch64 ;;
|
||||
i686 | i386 | x86) echo x86 ;;
|
||||
*) return 1 ;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Download URL candidates for a Gitea/GitHub release asset.
|
||||
# cst_release_asset_urls VER NAME -> prints urls
|
||||
cst_release_asset_urls() {
|
||||
local ver="$1" name="$2"
|
||||
local server="${CST_GITEA:-${GITHUB_SERVER_URL:-https://git.whcself.xyz}}"
|
||||
local repo="${CST_REPO:-${GITHUB_REPOSITORY:-WHC/CST-agent}}"
|
||||
printf '%s\n' \
|
||||
"$server/$repo/releases/download/v$ver/$name" \
|
||||
"https://ghfast.top/$server/$repo/releases/download/v$ver/$name"
|
||||
}
|
||||
|
||||
# Fetch URL list to OUT; first success wins. Returns 0 on success.
|
||||
cst_fetch() {
|
||||
local out="$1"
|
||||
shift
|
||||
local u
|
||||
for u in "$@"; do
|
||||
echo " try $u" >&2
|
||||
if curl -fsSL --retry 2 --connect-timeout 15 --max-time 600 -o "$out.part" "$u"; then
|
||||
mv "$out.part" "$out"
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
rm -f "$out.part"
|
||||
return 1
|
||||
}
|
||||
|
||||
# Fingerprint for incremental release rebuilds (compiler + version).
|
||||
cst_build_stamp() {
|
||||
local cc="${1:?}"
|
||||
local machine
|
||||
machine="$("$cc" -dumpmachine 2>/dev/null || echo unknown)"
|
||||
printf '%s %s\n' "$machine" "$(cst_version)"
|
||||
}
|
||||
Reference in New Issue
Block a user