mirror of
https://github.com/getpaseo/paseo.git
synced 2026-07-29 12:01:31 +00:00
Stabilize local dev daemon homes
Use a checkout-local .dev/paseo-home for root and worktree dev flows so development daemons do not collide with the packaged app home. Split server, app, and desktop dev entrypoints, seed worktree homes from the source checkout metadata, and keep desktop dev on its own user-data directory and Expo port.
This commit is contained in:
@@ -1,5 +1,9 @@
|
||||
#!/bin/bash
|
||||
|
||||
default_dev_paseo_root() {
|
||||
git rev-parse --show-toplevel 2>/dev/null || pwd
|
||||
}
|
||||
|
||||
copy_json_tree() {
|
||||
local source_dir="$1"
|
||||
local target_dir="$2"
|
||||
@@ -58,27 +62,83 @@ seed_worktree_paseo_home() {
|
||||
echo " Seed: copied metadata from ${source_home}"
|
||||
}
|
||||
|
||||
configure_dev_daemon_config() {
|
||||
if [ -z "${PASEO_LISTEN:-}" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
mkdir -p "$PASEO_HOME"
|
||||
node -e '
|
||||
const fs = require("fs");
|
||||
const [path, listen] = [process.argv[1], process.argv[2]];
|
||||
let cfg = {};
|
||||
try { cfg = JSON.parse(fs.readFileSync(path, "utf8")); } catch {}
|
||||
cfg.version = cfg.version || 1;
|
||||
cfg.daemon = cfg.daemon || {};
|
||||
cfg.daemon.listen = listen;
|
||||
cfg.daemon.cors = cfg.daemon.cors || {};
|
||||
cfg.daemon.cors.allowedOrigins = ["*"];
|
||||
fs.writeFileSync(path, JSON.stringify(cfg, null, 2));
|
||||
' "$PASEO_HOME/config.json" "$PASEO_LISTEN"
|
||||
}
|
||||
|
||||
resolve_dev_daemon_endpoint() {
|
||||
if [ -n "${PASEO_DEV_DAEMON_ENDPOINT:-}" ]; then
|
||||
echo "$PASEO_DEV_DAEMON_ENDPOINT"
|
||||
return
|
||||
fi
|
||||
|
||||
case "${PASEO_LISTEN:-127.0.0.1:6768}" in
|
||||
0.0.0.0:*) echo "localhost:${PASEO_LISTEN#0.0.0.0:}" ;;
|
||||
127.0.0.1:*) echo "localhost:${PASEO_LISTEN#127.0.0.1:}" ;;
|
||||
*) echo "$PASEO_LISTEN" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
configure_dev_paseo_home() {
|
||||
if [ -n "${PASEO_HOME:-}" ]; then
|
||||
export PASEO_HOME
|
||||
if [ -n "${PASEO_DEV_SEED_HOME:-}" ]; then
|
||||
seed_worktree_paseo_home "$PASEO_HOME"
|
||||
fi
|
||||
mkdir -p "$PASEO_HOME"
|
||||
if [ "${PASEO_DEV_MANAGED_HOME:-0}" = "1" ] || [ -n "${PASEO_DEV_SEED_HOME:-}" ]; then
|
||||
configure_dev_daemon_config
|
||||
fi
|
||||
return
|
||||
fi
|
||||
|
||||
export PASEO_HOME
|
||||
local git_dir
|
||||
local git_common_dir
|
||||
git_dir="$(git rev-parse --git-dir 2>/dev/null || true)"
|
||||
git_common_dir="$(git rev-parse --git-common-dir 2>/dev/null || true)"
|
||||
if [ -n "$git_dir" ] && [ -n "$git_common_dir" ] && [ "$git_dir" != "$git_common_dir" ]; then
|
||||
local worktree_root
|
||||
local worktree_name
|
||||
worktree_root="$(git rev-parse --show-toplevel)"
|
||||
worktree_name="$(basename "$worktree_root" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9-]/-/g; s/--*/-/g; s/^-//; s/-$//')"
|
||||
PASEO_HOME="$HOME/.paseo-${worktree_name}"
|
||||
local dev_root
|
||||
dev_root="${PASEO_DEV_ROOT:-$(default_dev_paseo_root)}"
|
||||
PASEO_HOME="$dev_root/.dev/paseo-home"
|
||||
export PASEO_DEV_MANAGED_HOME=1
|
||||
|
||||
if [ -n "${PASEO_DEV_SEED_HOME:-}" ]; then
|
||||
seed_worktree_paseo_home "$PASEO_HOME"
|
||||
return
|
||||
fi
|
||||
|
||||
PASEO_HOME="$(mktemp -d "${TMPDIR:-/tmp}/paseo-dev.XXXXXX")"
|
||||
trap "rm -rf '$PASEO_HOME'" EXIT
|
||||
mkdir -p "$PASEO_HOME"
|
||||
configure_dev_daemon_config
|
||||
}
|
||||
|
||||
configure_dev_command_env() {
|
||||
if [ -z "${PASEO_LISTEN:-}" ]; then
|
||||
if [ -n "${PASEO_SERVICE_DAEMON_PORT:-}" ]; then
|
||||
export PASEO_LISTEN="0.0.0.0:${PASEO_SERVICE_DAEMON_PORT}"
|
||||
else
|
||||
export PASEO_LISTEN="127.0.0.1:6768"
|
||||
fi
|
||||
fi
|
||||
|
||||
configure_dev_paseo_home
|
||||
}
|
||||
|
||||
if [ "${BASH_SOURCE[0]}" = "$0" ]; then
|
||||
if [ "$#" -gt 0 ]; then
|
||||
configure_dev_command_env
|
||||
exec "$@"
|
||||
fi
|
||||
|
||||
configure_dev_paseo_home
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user