mirror of
https://github.com/getpaseo/paseo.git
synced 2026-10-22 01:02:41 +00:00
* fix(nix): ship @getpaseo/server's main export in the desktop closure
The desktop's runtime-paths.js locates the server package root with
require.resolve("@getpaseo/server"), which resolves through the exports
map to dist/server/server/exports.js. The desktop never loads that file,
so nft doesn't trace it, and the Linux Nix desktop build fails to start
the daemon with MODULE_NOT_FOUND.
* fix(nix): retain the server resolution anchor for CLI and desktop
Run the existing Nix daemon smoke through the built CLI so package-root resolution is exercised before readiness and HTTP checks.
Co-authored-by: Callum Wong <mail@callumwong.com>
* fix(nix): ship complete terminal runtimes
Resolve runtime dependency edges at their importing modules so package links and exports survive closure tracing regardless of npm hoisting. Use the native loader's selected files and verify terminal commands and hook CLI execution through the built package.
Co-authored-by: Callum Wong <mail@callumwong.com>
* test(desktop): make packaged CLI path expectations portable
---------
Co-authored-by: Mohamed Boudra <boudra.moha@gmail.com>
124 lines
3.8 KiB
YAML
124 lines
3.8 KiB
YAML
name: Nix
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: "22"
|
|
cache: "npm"
|
|
|
|
- uses: cachix/install-nix-action@v31
|
|
with:
|
|
nix_path: nixpkgs=channel:nixos-unstable
|
|
|
|
- name: Update lockfile + Nix hash if stale
|
|
run: ./scripts/update-nix.sh
|
|
|
|
- name: Build Nix package
|
|
run: nix build .#default -o result
|
|
|
|
- name: Smoke Nix daemon
|
|
run: |
|
|
set -euo pipefail
|
|
|
|
export PASEO_HOME
|
|
PASEO_HOME="$(mktemp -d)"
|
|
export PASEO_LISTEN=127.0.0.1:6767
|
|
|
|
WRAPPER_LOG="$PASEO_HOME/paseo-cli.log"
|
|
|
|
cleanup() {
|
|
if [[ -n "${DAEMON_PID:-}" ]] && kill -0 "$DAEMON_PID" 2>/dev/null; then
|
|
kill "$DAEMON_PID"
|
|
wait "$DAEMON_PID" || true
|
|
fi
|
|
rm -rf "$PASEO_HOME"
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
PASEO_WEB_UI_ENABLED=true PASEO_RELAY_ENABLED=false ./result/bin/paseo daemon run >"$WRAPPER_LOG" 2>&1 &
|
|
DAEMON_PID=$!
|
|
|
|
deadline=$((SECONDS + 30))
|
|
while (( SECONDS < deadline )); do
|
|
if STATUS_JSON="$(./result/bin/paseo daemon status --json)" \
|
|
&& jq -e '.connectedDaemon == "reachable"' <<<"$STATUS_JSON" >/dev/null; then
|
|
echo "$STATUS_JSON"
|
|
curl --fail --silent --show-error http://127.0.0.1:6767/ >"$PASEO_HOME/web-ui.html"
|
|
[[ -s "$PASEO_HOME/web-ui.html" ]]
|
|
if ! TERMINAL_JSON="$(./result/bin/paseo terminal create --cwd "$PASEO_HOME" --name nix-smoke --json)"; then
|
|
break
|
|
fi
|
|
TERMINAL_ID="$(jq -er '.id' <<<"$TERMINAL_JSON")"
|
|
./result/bin/paseo terminal send-keys "$TERMINAL_ID" 'PATH= "$PASEO_HOOK_CLI" --version && printf "nix-terminal-%s\n" ok' Enter
|
|
deadline=$((SECONDS + 15))
|
|
while (( SECONDS < deadline )); do
|
|
if ./result/bin/paseo terminal capture "$TERMINAL_ID" --json \
|
|
| jq -e '.lines | any(. == "nix-terminal-ok")' >/dev/null; then
|
|
./result/bin/paseo terminal kill "$TERMINAL_ID"
|
|
exit 0
|
|
fi
|
|
sleep 1
|
|
done
|
|
echo "Nix terminal did not execute the command."
|
|
break
|
|
fi
|
|
|
|
if ! kill -0 "$DAEMON_PID" 2>/dev/null; then
|
|
echo "Nix daemon exited before becoming reachable."
|
|
break
|
|
fi
|
|
|
|
sleep 1
|
|
done
|
|
|
|
echo "::group::daemon.log"
|
|
cat "$PASEO_HOME/daemon.log" 2>/dev/null || echo "<missing>"
|
|
echo "::endgroup::"
|
|
|
|
echo "::group::paseo daemon run stdout/stderr"
|
|
cat "$WRAPPER_LOG" 2>/dev/null || echo "<missing>"
|
|
echo "::endgroup::"
|
|
|
|
echo "::group::paseo daemon status"
|
|
./result/bin/paseo daemon status || true
|
|
echo "::endgroup::"
|
|
|
|
exit 1
|
|
|
|
- name: Build Nix desktop package
|
|
run: nix build .#desktop -o result-desktop
|
|
|
|
build-desktop-darwin:
|
|
runs-on: macos-14
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: cachix/install-nix-action@v31
|
|
with:
|
|
nix_path: nixpkgs=channel:nixos-unstable
|
|
|
|
- name: Build Nix desktop package
|
|
run: nix build .#desktop -o result-desktop
|
|
|
|
- name: Verify macOS application bundle
|
|
run: |
|
|
set -euo pipefail
|
|
|
|
app="result-desktop/Applications/Paseo.app"
|
|
test -x "$app/Contents/MacOS/Paseo"
|
|
test -L result-desktop/bin/paseo-desktop
|
|
test "$(/usr/libexec/PlistBuddy -c 'Print :CFBundleIdentifier' "$app/Contents/Info.plist")" = "sh.paseo.desktop"
|
|
find "$app" -name Info.plist -print0 | xargs -0 -n 1 plutil -lint
|