#!/usr/bin/env bash # Integration spike only: no release CLI or deployment state machine. set -euo pipefail task_root=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd) task_source=${1:-"$task_root/pack"} task_source=$(cd -- "$task_source" && pwd) source "$task_root/toolchain.lock.env" printf '%s %s\n' "$PACKWIZ_BINARY_SHA256" "$task_root/.tools/packwiz/packwiz" | sha256sum -c - task_name=$(sed -n 's/^name = "\([a-zA-Z0-9._-]*\)"$/\1/p' "$task_source/pack.toml") task_version=$(sed -n 's/^version = "\([a-zA-Z0-9._-]*\)"$/\1/p' "$task_source/pack.toml") [[ -n "$task_name" && -n "$task_version" ]] || { echo 'Invalid pack name/version.' >&2; exit 1; } task_release="$task_root/dist/$task_name-$task_version" [[ ! -e "$task_release" ]] || { echo "Release already exists: $task_release; use a new pack version." >&2; exit 1; } mkdir -p "$task_root/dist" task_tmp=$(mktemp -d "$task_root/.tools/spike-build.XXXXXX") trap 'rm -rf -- "$task_tmp"' EXIT cp -a "$task_source" "$task_tmp/source" mkdir "$task_tmp/release" cd "$task_tmp/source" task_packwiz=("$task_root/.tools/packwiz/packwiz" --cache "$task_root/.tools/packwiz/cache" --config "$task_root/.tools/packwiz/config.toml") "${task_packwiz[@]}" refresh for task_file in index.toml pack.toml; do task_original=$(sha256sum "$task_source/$task_file") task_refreshed=$(sha256sum "$task_file") [[ ${task_original%% *} == "${task_refreshed%% *}" ]] || { echo "Stale source $task_file: run packwiz refresh explicitly before building." >&2 exit 1 } done "${task_packwiz[@]}" modrinth export --output "$task_tmp/release/$task_name-$task_version.mrpack" cd "$task_tmp/release" sha256sum "$task_name-$task_version.mrpack" > SHA256SUMS mv -- "$task_tmp/release" "$task_release" printf 'Artifact: %s/%s-%s.mrpack\n' "$task_release" "$task_name" "$task_version"