Initial Firmware chat web app
This commit is contained in:
78
run.sh
Executable file
78
run.sh
Executable file
@@ -0,0 +1,78 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
cmd="${1:-dev}"
|
||||
|
||||
if [[ ! -f ".env" ]]; then
|
||||
if [[ -f ".env.example" ]]; then
|
||||
cp .env.example .env
|
||||
echo "Created .env from .env.example. Please edit it (FIRMWARE_API_KEY, ADMIN_TOKEN)." >&2
|
||||
else
|
||||
echo "Missing .env (and .env.example)." >&2
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -f ".env" ]]; then
|
||||
# Load .env without overriding already-exported vars.
|
||||
# Intentionally skip FIRMWARE_API_KEY (should come from shell env).
|
||||
while IFS= read -r line || [[ -n "$line" ]]; do
|
||||
[[ -z "$line" ]] && continue
|
||||
[[ "$line" =~ ^[[:space:]]*# ]] && continue
|
||||
if [[ "$line" =~ ^[[:space:]]*([A-Za-z_][A-Za-z0-9_]*)=(.*)$ ]]; then
|
||||
key="${BASH_REMATCH[1]}"
|
||||
val="${BASH_REMATCH[2]}"
|
||||
|
||||
if [[ "$key" == "FIRMWARE_API_KEY" ]]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
# Strip optional surrounding quotes
|
||||
if [[ "$val" =~ ^\"(.*)\"$ ]]; then
|
||||
val="${BASH_REMATCH[1]}"
|
||||
elif [[ "$val" =~ ^\'(.*)\'$ ]]; then
|
||||
val="${BASH_REMATCH[1]}"
|
||||
fi
|
||||
|
||||
if [[ -z "${!key:-}" ]]; then
|
||||
export "$key=$val"
|
||||
fi
|
||||
fi
|
||||
done < .env
|
||||
fi
|
||||
|
||||
if [[ -z "${FIRMWARE_API_KEY:-}" ]]; then
|
||||
echo "FIRMWARE_API_KEY must be exported in your shell." >&2
|
||||
echo "Example: export FIRMWARE_API_KEY=..." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! -d "node_modules" ]]; then
|
||||
npm install
|
||||
fi
|
||||
|
||||
case "$cmd" in
|
||||
build)
|
||||
echo "Building web..." >&2
|
||||
npm -w web run build
|
||||
;;
|
||||
dev)
|
||||
echo "Starting dev (web + server)..." >&2
|
||||
echo "Web: http://localhost:5173" >&2
|
||||
echo "API: http://localhost:${PORT:-8787}" >&2
|
||||
echo "Admin: add header x-admin-token: \$ADMIN_TOKEN" >&2
|
||||
npm run dev
|
||||
;;
|
||||
server)
|
||||
echo "Starting server only..." >&2
|
||||
echo "Binding: http://${HOST:-0.0.0.0}:${PORT:-8787}" >&2
|
||||
npm -w server run start
|
||||
;;
|
||||
web)
|
||||
echo "Starting web only..." >&2
|
||||
npm -w web run dev
|
||||
;;
|
||||
*)
|
||||
echo "Usage: ./run.sh [dev|server|web|build]" >&2
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
Reference in New Issue
Block a user