Repository navigation
Expand file tree
/
Copy pathdev
More file actions
executable file
·63 lines (55 loc) · 2.07 KB
/
Copy pathdev
File metadata and controls
executable file
·63 lines (55 loc) · 2.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/usr/bin/env bash
# One command: configure (first time), build, and make sure the dev server
# is running. After this, reload http://localhost:8787/ in the browser.
#
# ./dev debug build (default)
# ./dev release release build (serves the release dist instead)
# ./dev stop stop the dev server
set -euo pipefail
cd "$(dirname "$0")"
if [ "${1:-}" = "stop" ]; then
if [ -f build/serve.pid ] && kill -0 "$(cat build/serve.pid)" 2>/dev/null; then
kill "$(cat build/serve.pid)"
echo "dev server stopped"
else
echo "dev server not running"
fi
rm -f build/serve.pid build/serve.dir
exit 0
fi
export VCPKG_ROOT="${VCPKG_ROOT:-$HOME/vcpkg}"
export EMSDK="${EMSDK:-$HOME/emsdk}"
if [ ! -d "$EMSDK/upstream/emscripten" ]; then
echo "error: emscripten not found at \$EMSDK=$EMSDK" >&2
echo "install with: git clone https://github.com/emscripten-core/emsdk ~/emsdk && ~/emsdk/emsdk install latest && ~/emsdk/emsdk activate latest" >&2
exit 1
fi
export PATH="$EMSDK/upstream/emscripten:$PATH"
case "${1:-debug}" in
debug) PRESET=wasm-debug ;;
release) PRESET=wasm-release ;;
*) echo "usage: ./dev [debug|release]" >&2; exit 2 ;;
esac
if [ ! -f "build/$PRESET/build.ninja" ]; then
cmake --preset "$PRESET"
fi
cmake --build --preset "$PRESET"
# Refresh the merged clangd database (wasm entries + host-only files like
# the colocated unit tests) so the editor resolves every TU.
python3 tools/merge-compile-db.py >/dev/null || true
PORT=8787
DIST="$PWD/build/$PRESET/dist"
# (Re)start the server if it isn't running or is serving a different dist.
if [ -f build/serve.pid ] && kill -0 "$(cat build/serve.pid)" 2>/dev/null; then
if [ "$(cat build/serve.dir 2>/dev/null)" != "$DIST" ]; then
kill "$(cat build/serve.pid)" 2>/dev/null || true
rm -f build/serve.pid
fi
fi
if [ ! -f build/serve.pid ] || ! kill -0 "$(cat build/serve.pid)" 2>/dev/null; then
nohup python3 tools/serve.py "$DIST" "$PORT" > build/serve.log 2>&1 &
echo $! > build/serve.pid
echo "$DIST" > build/serve.dir
fi
echo
echo "words ($PRESET) → http://localhost:$PORT/"