summaryrefslogtreecommitdiffhomepage
path: root/packaging/s6/dispatch-api-srv
diff options
context:
space:
mode:
authorAdam Malczewski <[email protected]>2026-05-27 23:17:18 +0900
committerAdam Malczewski <[email protected]>2026-05-27 23:17:18 +0900
commit60f56367dfc1e3c5095d034bed4fb4f572e32b55 (patch)
treeaa4bc7be095e7030ce0b1a67e33b1abe4cc8c36a /packaging/s6/dispatch-api-srv
parent4f0ed4ed9456e30344228f0106f6bb104417da3d (diff)
downloaddispatch-60f56367dfc1e3c5095d034bed4fb4f572e32b55.tar.gz
dispatch-60f56367dfc1e3c5095d034bed4fb4f572e32b55.zip
refactor(packaging): split into dispatch/dispatch-systemd/dispatch-s6, separate dispatch-electron, add bun-based frontend serve
PKGBUILD is now a split package producing three .pkg.tar.zst files in one makepkg run: - dispatch base application files (/opt/dispatch), CLI wrappers (dispatch-api, dispatch-frontend), env configs (/etc/dispatch/dispatch-api.conf, /etc/dispatch/dispatch-frontend.conf) - dispatch-systemd systemd user units for dispatch-api + dispatch-frontend (conflicts with dispatch-s6) - dispatch-s6 s6-rc service pipelines (-srv + -log) for both services (conflicts with dispatch-systemd) The Electron desktop wrapper moved to its own self-contained PKGBUILD at packaging/electron/, producing dispatch-electron. It bundles its own copy of the frontend dist + electron entry points under /opt/dispatch-electron and does not depend on the base dispatch package, so users can install it standalone and point VITE_API_URL at any backend at build time. Files under packaging/ are now read directly from ${_projectdir}/packaging/ rather than via source=(); the two s6 service dirs share basenames (run, type) which would collide inside ${srcdir}. New frontend static server: packages/frontend/serve.ts uses Bun's built-in HTTP server (no extra runtime deps) with SPA fallback to index.html and path-traversal protection. PORT/HOST/DIST_DIR overridable via env. Exposed as 'bun run --cwd packages/frontend serve' and via /usr/bin/dispatch-frontend. Build scripts: - bin/build-pkg now prints the freshest built packages - bin/install-pkg installs dispatch + dispatch-systemd by default; accepts package names or --all; searches both packaging/ and packaging/electron/ - bin/build-pkg-electron new, builds the electron split - bin/build-pkg-windows replaces bin/windows-pkg; drops the hard-coded WSL copy step, just prints the win-unpacked path .gitignore extended to cover packaging/*.tar.zst and packaging/electron/{src,pkg,*.pkg.tar.zst,*.tar.zst}.
Diffstat (limited to 'packaging/s6/dispatch-api-srv')
-rw-r--r--packaging/s6/dispatch-api-srv/producer-for1
-rw-r--r--packaging/s6/dispatch-api-srv/run29
-rw-r--r--packaging/s6/dispatch-api-srv/type1
3 files changed, 31 insertions, 0 deletions
diff --git a/packaging/s6/dispatch-api-srv/producer-for b/packaging/s6/dispatch-api-srv/producer-for
new file mode 100644
index 0000000..88f7df2
--- /dev/null
+++ b/packaging/s6/dispatch-api-srv/producer-for
@@ -0,0 +1 @@
+dispatch-api-log
diff --git a/packaging/s6/dispatch-api-srv/run b/packaging/s6/dispatch-api-srv/run
new file mode 100644
index 0000000..5754e3d
--- /dev/null
+++ b/packaging/s6/dispatch-api-srv/run
@@ -0,0 +1,29 @@
+#!/bin/sh
+# dispatch-api service — runs the Dispatch backend API as the `tradam` user.
+# stdout/stderr are piped to dispatch-api-log via the s6-rc pipeline.
+
+DISPATCH_CONF="/etc/dispatch/dispatch-api.conf"
+DISPATCH_DIR="/opt/dispatch"
+
+if [ -f "$DISPATCH_CONF" ]; then
+ set -a
+ . "$DISPATCH_CONF"
+ set +a
+fi
+
+cd "$DISPATCH_DIR" || exit 1
+
+# Merge stderr into stdout so both get logged by the consumer.
+exec 2>&1
+
+# Drop privileges to tradam and run bun.
+exec /usr/bin/s6-setuidgid tradam \
+ /usr/bin/env \
+ HOME=/home/tradam \
+ USER=tradam \
+ LOGNAME=tradam \
+ PATH=/usr/local/bin:/usr/bin:/bin \
+ NODE_ENV="${NODE_ENV:-production}" \
+ PORT="${PORT:-18390}" \
+ OPENCODE_API_KEY="${OPENCODE_API_KEY:-}" \
+ /usr/bin/bun packages/api/src/index.ts
diff --git a/packaging/s6/dispatch-api-srv/type b/packaging/s6/dispatch-api-srv/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/packaging/s6/dispatch-api-srv/type
@@ -0,0 +1 @@
+longrun