happy-stacks 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +130 -74
- package/bin/happys.mjs +140 -9
- package/docs/edison.md +381 -0
- package/docs/happy-development.md +733 -0
- package/docs/menubar.md +54 -0
- package/docs/paths-and-env.md +141 -0
- package/docs/server-flavors.md +61 -2
- package/docs/stacks.md +55 -4
- package/extras/swiftbar/auth-login.sh +10 -7
- package/extras/swiftbar/git-cache-refresh.sh +130 -0
- package/extras/swiftbar/happy-stacks.5s.sh +175 -83
- package/extras/swiftbar/happys-term.sh +128 -0
- package/extras/swiftbar/happys.sh +35 -0
- package/extras/swiftbar/install.sh +99 -13
- package/extras/swiftbar/lib/git.sh +309 -1
- package/extras/swiftbar/lib/icons.sh +2 -2
- package/extras/swiftbar/lib/render.sh +279 -132
- package/extras/swiftbar/lib/system.sh +64 -10
- package/extras/swiftbar/lib/utils.sh +469 -10
- package/extras/swiftbar/pnpm-term.sh +2 -122
- package/extras/swiftbar/pnpm.sh +4 -14
- package/extras/swiftbar/set-interval.sh +10 -5
- package/extras/swiftbar/set-server-flavor.sh +19 -10
- package/extras/swiftbar/wt-pr.sh +10 -3
- package/package.json +2 -1
- package/scripts/auth.mjs +833 -14
- package/scripts/build.mjs +24 -4
- package/scripts/cli-link.mjs +3 -3
- package/scripts/completion.mjs +15 -8
- package/scripts/daemon.mjs +200 -23
- package/scripts/dev.mjs +230 -57
- package/scripts/doctor.mjs +26 -21
- package/scripts/edison.mjs +1828 -0
- package/scripts/happy.mjs +3 -7
- package/scripts/init.mjs +275 -46
- package/scripts/install.mjs +14 -8
- package/scripts/lint.mjs +145 -0
- package/scripts/menubar.mjs +81 -8
- package/scripts/migrate.mjs +302 -0
- package/scripts/mobile.mjs +59 -21
- package/scripts/run.mjs +222 -43
- package/scripts/self.mjs +3 -7
- package/scripts/server_flavor.mjs +3 -3
- package/scripts/service.mjs +190 -38
- package/scripts/setup.mjs +790 -0
- package/scripts/setup_pr.mjs +182 -0
- package/scripts/stack.mjs +2273 -92
- package/scripts/stop.mjs +160 -0
- package/scripts/tailscale.mjs +164 -23
- package/scripts/test.mjs +144 -0
- package/scripts/tui.mjs +556 -0
- package/scripts/typecheck.mjs +145 -0
- package/scripts/ui_gateway.mjs +248 -0
- package/scripts/uninstall.mjs +21 -13
- package/scripts/utils/auth_files.mjs +58 -0
- package/scripts/utils/auth_login_ux.mjs +76 -0
- package/scripts/utils/auth_sources.mjs +12 -0
- package/scripts/utils/browser.mjs +22 -0
- package/scripts/utils/canonical_home.mjs +20 -0
- package/scripts/utils/{cli_registry.mjs → cli/cli_registry.mjs} +71 -0
- package/scripts/utils/{wizard.mjs → cli/wizard.mjs} +1 -1
- package/scripts/utils/config.mjs +13 -1
- package/scripts/utils/dev_auth_key.mjs +169 -0
- package/scripts/utils/dev_daemon.mjs +104 -0
- package/scripts/utils/dev_expo_web.mjs +112 -0
- package/scripts/utils/dev_server.mjs +183 -0
- package/scripts/utils/env.mjs +94 -23
- package/scripts/utils/env_file.mjs +36 -0
- package/scripts/utils/expo.mjs +96 -0
- package/scripts/utils/handy_master_secret.mjs +94 -0
- package/scripts/utils/happy_server_infra.mjs +484 -0
- package/scripts/utils/localhost_host.mjs +17 -0
- package/scripts/utils/ownership.mjs +135 -0
- package/scripts/utils/paths.mjs +5 -2
- package/scripts/utils/pm.mjs +132 -22
- package/scripts/utils/ports.mjs +51 -13
- package/scripts/utils/proc.mjs +75 -7
- package/scripts/utils/runtime.mjs +1 -3
- package/scripts/utils/sandbox.mjs +14 -0
- package/scripts/utils/server.mjs +61 -0
- package/scripts/utils/server_port.mjs +9 -0
- package/scripts/utils/server_urls.mjs +54 -0
- package/scripts/utils/stack_context.mjs +23 -0
- package/scripts/utils/stack_runtime_state.mjs +104 -0
- package/scripts/utils/stack_startup.mjs +208 -0
- package/scripts/utils/stack_stop.mjs +255 -0
- package/scripts/utils/stacks.mjs +38 -0
- package/scripts/utils/validate.mjs +42 -1
- package/scripts/utils/watch.mjs +63 -0
- package/scripts/utils/worktrees.mjs +57 -1
- package/scripts/where.mjs +14 -7
- package/scripts/worktrees.mjs +135 -15
- /package/scripts/utils/{args.mjs → cli/args.mjs} +0 -0
- /package/scripts/utils/{cli.mjs → cli/cli.mjs} +0 -0
- /package/scripts/utils/{smoke_help.mjs → cli/smoke_help.mjs} +0 -0
|
@@ -26,13 +26,18 @@ if [[ -z "$PLUGIN_DIR" ]]; then
|
|
|
26
26
|
fi
|
|
27
27
|
mkdir -p "$PLUGIN_DIR"
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
PLUGIN_BASENAME="${HAPPY_STACKS_SWIFTBAR_PLUGIN_BASENAME:-${HAPPY_LOCAL_SWIFTBAR_PLUGIN_BASENAME:-happy-stacks}}"
|
|
30
|
+
TARGET="$PLUGIN_DIR/${PLUGIN_BASENAME}.${INTERVAL}.sh"
|
|
31
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
32
|
+
DEFAULT_HOME_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
33
|
+
|
|
34
|
+
CANONICAL_HOME_DIR="${HAPPY_STACKS_CANONICAL_HOME_DIR:-${HAPPY_LOCAL_CANONICAL_HOME_DIR:-$DEFAULT_HOME_DIR}}"
|
|
35
|
+
HAPPY_LOCAL_DIR="${HAPPY_LOCAL_DIR:-${HAPPY_STACKS_HOME_DIR:-$CANONICAL_HOME_DIR}}"
|
|
36
|
+
HAPPY_STACKS_HOME_DIR="${HAPPY_STACKS_HOME_DIR:-$HAPPY_LOCAL_DIR}"
|
|
32
37
|
SOURCE="${HAPPY_LOCAL_DIR}/extras/swiftbar/happy-stacks.5s.sh"
|
|
33
38
|
|
|
34
39
|
# If a happy-stacks plugin already exists, rename it into place; otherwise copy from repo source.
|
|
35
|
-
EXISTING="$(ls "$PLUGIN_DIR"/
|
|
40
|
+
EXISTING="$(ls "$PLUGIN_DIR"/"${PLUGIN_BASENAME}".*.sh 2>/dev/null | head -1 || true)"
|
|
36
41
|
if [[ -n "$EXISTING" ]]; then
|
|
37
42
|
if [[ "$EXISTING" != "$TARGET" ]]; then
|
|
38
43
|
rm -f "$TARGET"
|
|
@@ -47,7 +52,7 @@ else
|
|
|
47
52
|
fi
|
|
48
53
|
|
|
49
54
|
# Remove any other intervals to avoid duplicates in SwiftBar.
|
|
50
|
-
for f in "$PLUGIN_DIR"/
|
|
55
|
+
for f in "$PLUGIN_DIR"/"${PLUGIN_BASENAME}".*.sh; do
|
|
51
56
|
[[ "$f" == "$TARGET" ]] && continue
|
|
52
57
|
rm -f "$f" || true
|
|
53
58
|
done
|
|
@@ -24,34 +24,43 @@ if [[ "$FLAVOR" != "happy-server" && "$FLAVOR" != "happy-server-light" ]]; then
|
|
|
24
24
|
exit 2
|
|
25
25
|
fi
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
28
|
+
DEFAULT_HOME_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
HAPPY_LOCAL_DIR="${HAPPY_LOCAL_DIR:-${HAPPY_STACKS_HOME_DIR:-$DEFAULT_HOME_DIR}}"
|
|
31
|
+
HAPPY_STACKS_HOME_DIR="${HAPPY_STACKS_HOME_DIR:-$HAPPY_LOCAL_DIR}"
|
|
32
|
+
|
|
33
|
+
HAPPYS_BIN="$HAPPY_LOCAL_DIR/extras/swiftbar/happys.sh"
|
|
34
|
+
if [[ ! -x "$HAPPYS_BIN" ]]; then
|
|
32
35
|
echo "happys wrapper not found (run: happys menubar install)" >&2
|
|
33
36
|
exit 1
|
|
34
37
|
fi
|
|
35
38
|
|
|
36
39
|
restart_main_service_best_effort() {
|
|
37
|
-
"$
|
|
40
|
+
if [[ -n "${HAPPY_STACKS_SANDBOX_DIR:-}" ]]; then
|
|
41
|
+
return 0
|
|
42
|
+
fi
|
|
43
|
+
"$HAPPYS_BIN" service:restart >/dev/null 2>&1 || true
|
|
38
44
|
# If the installed LaunchAgent is still legacy/baked, reinstall so it persists only env-file pointer.
|
|
39
|
-
"$
|
|
45
|
+
"$HAPPYS_BIN" service:install >/dev/null 2>&1 || true
|
|
40
46
|
}
|
|
41
47
|
|
|
42
48
|
restart_stack_service_best_effort() {
|
|
43
49
|
local name="$1"
|
|
44
|
-
|
|
45
|
-
|
|
50
|
+
if [[ -n "${HAPPY_STACKS_SANDBOX_DIR:-}" ]]; then
|
|
51
|
+
return 0
|
|
52
|
+
fi
|
|
53
|
+
"$HAPPYS_BIN" stack service:restart "$name" >/dev/null 2>&1 || true
|
|
54
|
+
"$HAPPYS_BIN" stack service:install "$name" >/dev/null 2>&1 || true
|
|
46
55
|
}
|
|
47
56
|
|
|
48
57
|
if [[ "$STACK" == "main" ]]; then
|
|
49
|
-
"$
|
|
58
|
+
"$HAPPYS_BIN" srv -- use "$FLAVOR"
|
|
50
59
|
restart_main_service_best_effort
|
|
51
60
|
echo "ok: main -> $FLAVOR"
|
|
52
61
|
exit 0
|
|
53
62
|
fi
|
|
54
63
|
|
|
55
|
-
"$
|
|
64
|
+
"$HAPPYS_BIN" stack srv "$STACK" -- use "$FLAVOR"
|
|
56
65
|
restart_stack_service_best_effort "$STACK"
|
|
57
66
|
echo "ok: $STACK -> $FLAVOR"
|
package/extras/swiftbar/wt-pr.sh
CHANGED
|
@@ -17,11 +17,18 @@ set -euo pipefail
|
|
|
17
17
|
COMPONENT="${1:-}"
|
|
18
18
|
STACK_NAME="${2:-}"
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
21
|
+
DEFAULT_HOME_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
HAPPY_LOCAL_DIR="${HAPPY_LOCAL_DIR:-${HAPPY_STACKS_HOME_DIR:-$DEFAULT_HOME_DIR}}"
|
|
24
|
+
HAPPY_STACKS_HOME_DIR="${HAPPY_STACKS_HOME_DIR:-$HAPPY_LOCAL_DIR}"
|
|
25
|
+
|
|
26
|
+
HAPPYS="$HAPPY_LOCAL_DIR/extras/swiftbar/happys.sh"
|
|
24
27
|
if [[ ! -x "$HAPPYS" ]]; then
|
|
28
|
+
if [[ -n "${HAPPY_STACKS_SANDBOX_DIR:-}" ]]; then
|
|
29
|
+
echo "missing happys wrapper in sandbox: $HAPPYS" >&2
|
|
30
|
+
exit 1
|
|
31
|
+
fi
|
|
25
32
|
HAPPYS="$(command -v happys 2>/dev/null || true)"
|
|
26
33
|
fi
|
|
27
34
|
if [[ -z "$HAPPYS" ]]; then
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "happy-stacks",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.2.0",
|
|
5
5
|
"packageManager": "pnpm@10.18.3",
|
|
6
6
|
"bin": {
|
|
7
7
|
"happys": "./bin/happys.mjs",
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
"scripts/"
|
|
15
15
|
],
|
|
16
16
|
"scripts": {
|
|
17
|
+
"setup": "node ./scripts/setup.mjs",
|
|
17
18
|
"init": "node ./scripts/init.mjs",
|
|
18
19
|
"uninstall": "node ./scripts/uninstall.mjs",
|
|
19
20
|
"where": "node ./scripts/where.mjs",
|