Remove dist directory and streamline build artifacts.
- Deleted `index.css`, `index.js`, and `index.html` from `app/web/dist/`. - Cleared unused build artifacts to maintain a lean repository structure.
This commit is contained in:
97
scripts/update-embedded-web.sh
Executable file
97
scripts/update-embedded-web.sh
Executable file
@@ -0,0 +1,97 @@
|
||||
#!/usr/bin/env bash
|
||||
# scripts/update-embedded-web.sh
|
||||
# Build the embedded web UI and then install the Go binary.
|
||||
#
|
||||
# This script will:
|
||||
# - Build the React app in app/web to app/web/dist using Bun (preferred),
|
||||
# or fall back to npm/yarn/pnpm if Bun isn't available.
|
||||
# - Run `go install` from the repository root so the binary picks up the new
|
||||
# embedded assets.
|
||||
#
|
||||
# Usage:
|
||||
# ./scripts/update-embedded-web.sh
|
||||
#
|
||||
# Requirements:
|
||||
# - Go 1.18+ installed (for `go install` and go:embed support)
|
||||
# - Bun (https://bun.sh) recommended; alternatively Node.js with npm/yarn/pnpm
|
||||
#
|
||||
set -euo pipefail
|
||||
|
||||
# Resolve repo root to allow running from anywhere
|
||||
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
|
||||
REPO_ROOT="$(cd -- "${SCRIPT_DIR}/.." && pwd)"
|
||||
WEB_DIR="${REPO_ROOT}/app/web"
|
||||
|
||||
log() { printf "[update-embedded-web] %s\n" "$*"; }
|
||||
err() { printf "[update-embedded-web][ERROR] %s\n" "$*" >&2; }
|
||||
|
||||
if [[ ! -d "${WEB_DIR}" ]]; then
|
||||
err "Expected web directory at ${WEB_DIR} not found."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Choose a JS package runner
|
||||
JS_RUNNER=""
|
||||
if command -v bun >/dev/null 2>&1; then
|
||||
JS_RUNNER="bun"
|
||||
elif command -v npm >/dev/null 2>&1; then
|
||||
JS_RUNNER="npm"
|
||||
elif command -v yarn >/dev/null 2>&1; then
|
||||
JS_RUNNER="yarn"
|
||||
elif command -v pnpm >/dev/null 2>&1; then
|
||||
JS_RUNNER="pnpm"
|
||||
else
|
||||
err "No JavaScript package manager found. Install Bun (recommended) or npm/yarn/pnpm."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log "Using JavaScript runner: ${JS_RUNNER}"
|
||||
|
||||
# Install dependencies and build the web app
|
||||
log "Installing frontend dependencies..."
|
||||
pushd "${WEB_DIR}" >/dev/null
|
||||
case "${JS_RUNNER}" in
|
||||
bun)
|
||||
bun install
|
||||
log "Building web app with Bun..."
|
||||
bun run build
|
||||
;;
|
||||
npm)
|
||||
npm ci || npm install
|
||||
log "Building web app with npm..."
|
||||
npm run build
|
||||
;;
|
||||
yarn)
|
||||
yarn install --frozen-lockfile || yarn install
|
||||
log "Building web app with yarn..."
|
||||
yarn build
|
||||
;;
|
||||
pnpm)
|
||||
pnpm install --frozen-lockfile || pnpm install
|
||||
log "Building web app with pnpm..."
|
||||
pnpm build
|
||||
;;
|
||||
*)
|
||||
err "Unsupported JS runner: ${JS_RUNNER}"
|
||||
exit 1
|
||||
;;
|
||||
|
||||
esac
|
||||
popd >/dev/null
|
||||
|
||||
# Verify the output directory expected by go:embed exists
|
||||
DIST_DIR="${WEB_DIR}/dist"
|
||||
if [[ ! -d "${DIST_DIR}" ]]; then
|
||||
err "Build did not produce ${DIST_DIR}. Check your frontend build configuration."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log "Frontend build complete at ${DIST_DIR}."
|
||||
|
||||
# Install the Go binary so it embeds the latest files
|
||||
log "Running 'go install' from repo root..."
|
||||
pushd "${REPO_ROOT}" >/dev/null
|
||||
GO111MODULE=on go install ./...
|
||||
popd >/dev/null
|
||||
|
||||
log "Done. Your installed binary now includes the updated embedded web UI."
|
||||
Reference in New Issue
Block a user