2.8 KiB
Tooling — config rendering, mod mirror, launcher fetch
Summary
Three scripts in ./tooling/ turn the two env vars + templates into a working,
offline-capable stack. All are cautious: they halt on unset vars or missing
inputs rather than emit half-broken output.
render-config.sh
Renders every *.tmpl into its real config by substituting BASE_DOMAIN /
HOST_LAN_IP. Caddy is excluded (it reads {$BASE_DOMAIN} natively).
Targets:
drasl/config/config.toml.tmpl→drasl/config/config.tomldnsmasq/dnsmasq.conf.tmpl→dnsmasq/dnsmasq.conf
#!/usr/bin/env bash
set -euo pipefail
[ -f .env ] && set -a && . ./.env && set +a
: "${BASE_DOMAIN:?BASE_DOMAIN unset}"
: "${HOST_LAN_IP:?HOST_LAN_IP unset}"
render() { # $1=tmpl $2=out
[ -f "$1" ] || { echo "missing template: $1"; exit 1; }
envsubst '${BASE_DOMAIN} ${HOST_LAN_IP}' < "$1" > "$2"
echo "rendered $2"
}
render drasl/config/config.toml.tmpl drasl/config/config.toml
render dnsmasq/dnsmasq.conf.tmpl dnsmasq/dnsmasq.conf
Note:
envsubstwith an explicit var list avoids clobbering$-syntax that belongs to the target file (e.g. dnsmasq/caddy literals).
mirror-mods.sh
Vendors mod jars for offline install and rewrites packwiz URLs to the LAN host.
See 04-packwiz.md. Outline:
- For each
pack/mods/*.pw.toml, read[download] url+filename. - Download jar →
pack/mods-files/(served by Caddy under packwiz subdomain). - Rewrite
urltohttp://packwiz.${BASE_DOMAIN}/mods-files/<filename>. packwiz refreshto recompute hashes +index.toml. Must halt if a download fails or a hash mismatches.
mirror-assets.sh
Mirrors Minecraft asset objects for offline clients (the ~400 MB+ chunk) and lays
them out for Caddy + the Fjord "Assets Server" override. Full design in
10-assets-mirror.md. Verifies SHA1, idempotent, halts on mismatch.
fetch-launcher.sh
Downloads all FjordLauncherUnlocked release assets → mirror/launcher/<tag>/.
Full script in 06-launcher.md.
Generated / gitignored
drasl/config/config.toml # rendered
dnsmasq/dnsmasq.conf # rendered
pack/mods-files/ # vendored jars
mirror/ # launcher assets + mod mirror
.env # secrets + host-specific
Tasks
- Write
tooling/render-config.sh(above),chmod +x - Write
tooling/mirror-mods.sh(toml parse + download + rewrite + refresh) - Write
tooling/mirror-assets.sh(see 10) - Write
tooling/fetch-launcher.sh(see 06) - Add
gettext(envsubst) +jqto host prereqs doc - Update
.gitignorefor rendered configs +mirror/+pack/mods-files/ build-stack.shorchestrator (preflight +--preponline +--upoffline) — DONE, sequences the sub-scripts; see plan/12