#!/usr/bin/env bash # Builds and runs modding/src/animgallery/ (see README.md section 4) inside # the mdlp-image's Go toolchain - animgallery has no cgo dependencies of its # own, so it reuses that image rather than needing one of its own. # # Every argument is forwarded verbatim to animgallery itself. -data is # repeatable and layers directories in the order given, later wins - the # whole repository is mounted at /workspace here, so paths are relative to # the repository root, for example: # # ./gen_animgallery.sh -data res/assets/ss_ee/data -out modding/build/gallery # ./gen_animgallery.sh -data res/assets/ss_ee/data \ # -data modding/dist/mods/mymod/mod -out modding/build/gallery-mymod set -euo pipefail cd "$(dirname "${BASH_SOURCE[0]}")" MODDING_ROOT="$(pwd)" REPO_ROOT="$(cd .. && pwd)" fail() { echo "PREFLIGHT FAIL: $*" >&2; exit 1; } command -v docker >/dev/null 2>&1 \ || fail "docker not found in PATH" IMAGE="${MDLP_REGISTRY_IMAGE:-questshock/mdlp}" if [ -f "$MODDING_ROOT/../registry.env" ]; then # shellcheck disable=SC1091 source "$MODDING_ROOT/../registry.env" IMAGE="${MDLP_REGISTRY_IMAGE:-$IMAGE}" fi IMAGE_TAG="$(<"$MODDING_ROOT/mdlp-image/VERSION")" [ -n "$IMAGE_TAG" ] || fail "mdlp-image/VERSION is empty" IMAGE="$IMAGE:$IMAGE_TAG" docker image inspect "$IMAGE" >/dev/null 2>&1 \ || fail "$IMAGE not found locally - run ./mdlp-image.sh first" TTY_FLAGS="-i" [ -t 1 ] && TTY_FLAGS="-it" # shellcheck disable=SC2086 docker run --rm $TTY_FLAGS \ -v "$REPO_ROOT:/workspace" \ -w /workspace \ -e HOST_UID="$(id -u)" \ -e HOST_GID="$(id -g)" \ "$IMAGE" \ bash -c ' set -euo pipefail # animgallery, like mdlp, builds against ../hacked via its own # go.mod replace - stage a patched copy (see src/hacked-patches/) # rather than building against the unpatched vendored source. SCRATCH_DIR="modding/build/animgallery-src" rm -rf "$SCRATCH_DIR" mkdir -p "$SCRATCH_DIR" bash modding/mdlp-image/stage-hacked.sh modding "$SCRATCH_DIR/hacked" cp -a modding/src/animgallery "$SCRATCH_DIR/animgallery" (cd "$SCRATCH_DIR/animgallery" && go build -o /tmp/animgallery .) exec /tmp/animgallery "$@" ' _ "$@"