#!/usr/bin/env bash # Pre-compile step: directive codegen, Tailwind CSS, WebAssembly build, JS shim. # Run the dev server instead (go run ./server) for hot reload; this is for a # one-off/production-style build. Run from anywhere. set -euo pipefail cd "$(dirname "$0")" KJOL_GO="$(cd ../../.. && pwd)" echo "==> Generating directive glue (//gowasm:page, //gowasm:layout, //gowasm:server)" go run kjol/cmd/wasmgen ./app echo "==> Compiling Tailwind CSS -> wwwroot/app.css (scanning webui + Go markup)" # Run twcss from the kjol module root so the Tailwind engine's deps resolve there # (not in this example module — keeps its go.mod lean). ( cd "$KJOL_GO" && go run ./cmd/twcss \ -entry cmd/examples/go-wasm-web/css/app.css \ -out cmd/examples/go-wasm-web/wwwroot/app.css \ -base . \ 'webui/**/*.go' \ 'cmd/examples/go-wasm-web/app/**/*.go' \ 'cmd/examples/go-wasm-web/server/**/*.go' ) echo "==> Compiling ./wasm to wwwroot/app.wasm (GOOS=js GOARCH=wasm)" GOOS=js GOARCH=wasm go build -o wwwroot/app.wasm ./wasm echo "==> Copying Go's wasm_exec.js shim into wwwroot/" GOROOT="$(go env GOROOT)" shim="$GOROOT/lib/wasm/wasm_exec.js" # Go >= 1.24 [ -f "$shim" ] || shim="$GOROOT/misc/wasm/wasm_exec.js" # Go <= 1.23 rm -f wwwroot/wasm_exec.js # GOROOT copy is read-only; remove before overwriting cp "$shim" wwwroot/wasm_exec.js chmod u+w wwwroot/wasm_exec.js echo "==> Done. Run the server with: go run ./server" echo " then open http://localhost:8085"