diff options
| author | Adam Malczewski <[email protected]> | 2026-05-27 23:17:18 +0900 |
|---|---|---|
| committer | Adam Malczewski <[email protected]> | 2026-05-27 23:17:18 +0900 |
| commit | 60f56367dfc1e3c5095d034bed4fb4f572e32b55 (patch) | |
| tree | aa4bc7be095e7030ce0b1a67e33b1abe4cc8c36a /packaging/s6/dispatch-api-srv | |
| parent | 4f0ed4ed9456e30344228f0106f6bb104417da3d (diff) | |
| download | dispatch-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-for | 1 | ||||
| -rw-r--r-- | packaging/s6/dispatch-api-srv/run | 29 | ||||
| -rw-r--r-- | packaging/s6/dispatch-api-srv/type | 1 |
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 |
