diff --git a/scripts/build_switch.sh b/scripts/build_switch.sh new file mode 100755 index 00000000..7f959bd8 --- /dev/null +++ b/scripts/build_switch.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash +# Nintendo Switch packaging entry point. +# +# Usage: +# scripts/build_switch.sh --loose [path/to/game.love] +# +# Additional modes (fused NRO) are added in later tasks. + +set -euo pipefail + +ROOT="$(cd "$(dirname "$0")/.." && pwd)" +LOOSE=0 +GAME_LOVE="" + +while [ $# -gt 0 ]; do + case "$1" in + --loose) LOOSE=1; shift ;; + -h|--help) + sed -n '2,8p' "$0" | sed 's/^# \{0,1\}//' + exit 0 + ;; + *) + if [ -z "$GAME_LOVE" ]; then + GAME_LOVE="$1" + else + echo "unknown argument: $1" >&2 + exit 2 + fi + shift + ;; + esac +done + +if [ "$LOOSE" -eq 1 ]; then + if [ -n "$GAME_LOVE" ]; then + exec "$ROOT/scripts/switch/assemble_loose.sh" "$GAME_LOVE" + else + exec "$ROOT/scripts/switch/assemble_loose.sh" + fi +fi + +echo "error: specify --loose (fused build not implemented yet)" >&2 +exit 2 diff --git a/scripts/switch/assemble_loose.sh b/scripts/switch/assemble_loose.sh new file mode 100755 index 00000000..97695422 --- /dev/null +++ b/scripts/switch/assemble_loose.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env bash +# Assemble loose-mode Switch dist: gen1recomp.nro + game.love side by side. +# +# Usage: +# scripts/switch/assemble_loose.sh [path/to/game.love] +# +# Defaults game.love to .bazinga/work/game.love. Copies pinned love.nro from +# .bazinga/love-nx/11.5-nx1/love.nro → dist/switch/loose/gen1recomp.nro. +# Prints SHA-256 for both outputs. Exits non-zero if love.nro is missing. + +set -euo pipefail + +ROOT="$(cd "$(dirname "$0")/../.." && pwd)" +LOVE_NRO="$ROOT/.bazinga/love-nx/11.5-nx1/love.nro" +GAME_LOVE="${1:-$ROOT/.bazinga/work/game.love}" +OUT_DIR="$ROOT/dist/switch/loose" +OUT_NRO="$OUT_DIR/gen1recomp.nro" +OUT_LOVE="$OUT_DIR/game.love" + +fail() { printf 'error: %s\n' "$*" >&2; exit 1; } + +if [ ! -f "$LOVE_NRO" ]; then + fail "missing pinned love.nro at $LOVE_NRO — fetch per docs/switch-development.md" +fi + +if [ ! -f "$GAME_LOVE" ]; then + fail "missing game.love at $GAME_LOVE (build with scripts/build.sh first)" +fi + +mkdir -p "$OUT_DIR" +cp "$LOVE_NRO" "$OUT_NRO" +cp "$GAME_LOVE" "$OUT_LOVE" + +echo "assembled loose Switch dist:" +echo " $OUT_NRO" +echo " $OUT_LOVE" +echo "" +shasum -a 256 "$OUT_NRO" "$OUT_LOVE"