Files
2026-07-13 12:20:32 +08:00

60 lines
2.1 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
BASE_IMAGE_DIR="$PROJECT_DIR/master/base_image"
# ── Detect platform / arch ────────────────────────────────────────────────────
ARCH_RAW="${1:-$(uname -m)}"
case "$ARCH_RAW" in
arm64|aarch64) ARCH="arm64" ;;
x86_64|amd64) ARCH="x64" ;;
*) echo "Error: unsupported architecture '$ARCH_RAW' (pass arm64 or x64 as argument)" >&2; exit 1 ;;
esac
TAR_NAME="${ARCH}-base-image.tar"
SHA_NAME="${TAR_NAME}.sha256"
TAR_PATH="$BASE_IMAGE_DIR/$TAR_NAME"
SHA_PATH="$BASE_IMAGE_DIR/$SHA_NAME"
# ── Validate source files ─────────────────────────────────────────────────────
MISSING=()
for f in base.qcow2 efi-vars.fd; do
[ -f "$BASE_IMAGE_DIR/$f" ] || MISSING+=("$f")
done
if [ ${#MISSING[@]} -gt 0 ]; then
echo "Error: missing required files in master/base_image/: ${MISSING[*]}" >&2
exit 1
fi
# ── Bundle ────────────────────────────────────────────────────────────────────
echo "Bundling ${TAR_NAME} ..."
echo " + base.qcow2 ($(du -sh "$BASE_IMAGE_DIR/base.qcow2" | cut -f1))"
echo " + efi-vars.fd ($(du -sh "$BASE_IMAGE_DIR/efi-vars.fd" | cut -f1))"
echo ""
tar -cf "$TAR_PATH" -C "$BASE_IMAGE_DIR" base.qcow2 efi-vars.fd
echo "Computing SHA256 ..."
shasum -a 256 "$TAR_PATH" | awk '{print $1 " '"$TAR_NAME"'"}' > "$SHA_PATH"
TAR_SIZE="$(du -sh "$TAR_PATH" | cut -f1)"
SHA_HASH="$(cut -d' ' -f1 "$SHA_PATH")"
echo ""
echo "Done!"
echo ""
echo " Archive : $TAR_PATH ($TAR_SIZE)"
echo " SHA256 : $SHA_PATH"
echo " Hash : $SHA_HASH"
echo ""
echo "Upload both files to:"
echo " https://cdn.anythingllm.com/support/open-computer/base-images/<DATE>/$TAR_NAME"
echo " https://cdn.anythingllm.com/support/open-computer/base-images/<DATE>/$SHA_NAME"