35 lines
1.8 KiB
Bash
Executable File
35 lines
1.8 KiB
Bash
Executable File
#!/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"
|