-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTaskfile.yml
More file actions
84 lines (72 loc) · 2.71 KB
/
Taskfile.yml
File metadata and controls
84 lines (72 loc) · 2.71 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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
version: "3"
tasks:
dev:
desc: Run Vite with HMR and launch attn against the dev server
vars:
DEV_HOST_VALUE: '{{default "127.0.0.1" .DEV_HOST}}'
DEV_PORT_VALUE: '{{default "auto" .DEV_PORT}}'
ATTN_PATH_VALUE: '{{default "." .ATTN_PATH}}'
cmds:
- |
bash -lc '
set -euo pipefail
DEV_HOST="{{.DEV_HOST_VALUE}}"
DEV_PORT="{{.DEV_PORT_VALUE}}"
ATTN_PATH="{{.ATTN_PATH_VALUE}}"
choose_dev_port() {
local start_port=5173
local end_port=5273
local candidate
for candidate in $(seq "${start_port}" "${end_port}"); do
if ! lsof -nP -iTCP:"${candidate}" -sTCP:LISTEN >/dev/null 2>&1; then
echo "${candidate}"
return 0
fi
done
echo "Could not find a free development port in ${start_port}-${end_port}." >&2
return 1
}
if [ "${DEV_PORT}" = "auto" ]; then
DEV_PORT="$(choose_dev_port)"
fi
ATTN_DEV_SERVER_URL="http://${DEV_HOST}:${DEV_PORT}"
cleanup() {
if [ -n "${VITE_PID:-}" ] && kill -0 "${VITE_PID}" 2>/dev/null; then
kill -TERM "${VITE_PID}" 2>/dev/null || true
sleep 0.1
kill -KILL "${VITE_PID}" 2>/dev/null || true
wait "${VITE_PID}" 2>/dev/null || true
fi
}
trap cleanup EXIT INT TERM
# Install npm deps if missing
if [ ! -d "web/node_modules" ]; then
echo "==> Installing npm dependencies..."
(cd web && npm ci)
fi
echo "Starting Vite dev server on ${ATTN_DEV_SERVER_URL}"
(
cd web
exec ./node_modules/.bin/vite --host "${DEV_HOST}" --port "${DEV_PORT}" --strictPort
) &
VITE_PID=$!
# Give the spawned Vite process a moment to fail fast (for example, port in use).
sleep 0.2
if ! kill -0 "${VITE_PID}" 2>/dev/null; then
echo "Vite failed to start on ${ATTN_DEV_SERVER_URL} (process exited early)." >&2
echo "This usually means the port is already in use by another process." >&2
wait "${VITE_PID}" || true
exit 1
fi
echo "Waiting for Vite to be ready..."
until curl -fsS "${ATTN_DEV_SERVER_URL}" >/dev/null 2>&1; do
if ! kill -0 "${VITE_PID}" 2>/dev/null; then
echo "Vite failed to start on ${ATTN_DEV_SERVER_URL}. Try: task dev DEV_PORT=5174" >&2
wait "${VITE_PID}" || true
exit 1
fi
sleep 0.2
done
echo "Launching attn with HMR enabled (path: ${ATTN_PATH})"
ATTN_DEV_SERVER_URL="${ATTN_DEV_SERVER_URL}" cargo run -- --no-fork "${ATTN_PATH}"
'