@tryglen/cli 0.32.0 → 0.32.1
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.
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { access, mkdir, unlink, writeFile } from "node:fs/promises";
|
|
1
|
+
import { access, mkdir, readFile, unlink, writeFile } from "node:fs/promises";
|
|
2
2
|
import { homedir, userInfo } from "node:os";
|
|
3
3
|
import { dirname, join } from "node:path";
|
|
4
4
|
import { fileURLToPath } from "node:url";
|
|
@@ -11,8 +11,17 @@ const indicatorExecutable = () => process.env.GLEN_INDICATOR_APP ??
|
|
|
11
11
|
join(dirname(fileURLToPath(import.meta.url)), "..", "..", "dist", "macos", "glen.app", "Contents", "MacOS", "glen");
|
|
12
12
|
const launchAgentPath = () => process.env.GLEN_LAUNCH_AGENT_PATH ??
|
|
13
13
|
join(homedir(), "Library", "LaunchAgents", `${LABEL}.plist`);
|
|
14
|
+
// dist/bin.js beside this module once built (src/bin.ts under vitest, which
|
|
15
|
+
// never registers for real).
|
|
16
|
+
const cliEntrypoint = () => process.env.GLEN_CLI_ENTRYPOINT ??
|
|
17
|
+
join(dirname(fileURLToPath(import.meta.url)), "..", "bin.js");
|
|
14
18
|
// KeepAlive is deliberately absent: "Quit glen" from the menu must stay quit
|
|
15
19
|
// until the next login, not respawn under the user.
|
|
20
|
+
//
|
|
21
|
+
// GLEN_NODE/GLEN_CLI let the app change modes by exec'ing this exact CLI.
|
|
22
|
+
// launchd hands a GUI agent PATH=/usr/bin:/bin:/usr/sbin:/sbin, and `sh -l`
|
|
23
|
+
// only rebuilds it from /etc/paths*, so a `glen` installed under nvm or a
|
|
24
|
+
// custom npm prefix — a PATH entry that lives in ~/.zshrc — is unreachable.
|
|
16
25
|
const launchAgentPlist = (executable) => `<?xml version="1.0" encoding="UTF-8"?>
|
|
17
26
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
18
27
|
<plist version="1.0">
|
|
@@ -20,6 +29,11 @@ const launchAgentPlist = (executable) => `<?xml version="1.0" encoding="UTF-8"?>
|
|
|
20
29
|
<key>Label</key><string>${LABEL}</string>
|
|
21
30
|
<key>ProgramArguments</key>
|
|
22
31
|
<array><string>${executable}</string></array>
|
|
32
|
+
<key>EnvironmentVariables</key>
|
|
33
|
+
<dict>
|
|
34
|
+
<key>GLEN_NODE</key><string>${process.execPath}</string>
|
|
35
|
+
<key>GLEN_CLI</key><string>${cliEntrypoint()}</string>
|
|
36
|
+
</dict>
|
|
23
37
|
<key>RunAtLoad</key><true/>
|
|
24
38
|
<key>ProcessType</key><string>Interactive</string>
|
|
25
39
|
</dict>
|
|
@@ -72,6 +86,13 @@ const setIndicatorOptOut = async (optedOut) => {
|
|
|
72
86
|
await fromPromise(mkdir(dirname(optOutPath()), { recursive: true }));
|
|
73
87
|
await fromPromise(writeFile(optOutPath(), ""));
|
|
74
88
|
};
|
|
89
|
+
// A registered indicator whose plist predates GLEN_CLI can't change modes: it
|
|
90
|
+
// falls back to a PATH lookup that launchd's environment often can't satisfy.
|
|
91
|
+
// Re-register it rather than leaving those users with a dead menu.
|
|
92
|
+
const launchAgentStale = async () => {
|
|
93
|
+
const current = await fromPromise(readFile(launchAgentPath(), "utf-8"));
|
|
94
|
+
return current.ok ? !current.value.includes("GLEN_CLI") : false;
|
|
95
|
+
};
|
|
75
96
|
// Best-effort convergence for installs and updates: never fights an explicit
|
|
76
97
|
// opt-out, never reports failure to a hook.
|
|
77
98
|
const ensureIndicatorRunning = async () => {
|
|
@@ -79,7 +100,7 @@ const ensureIndicatorRunning = async () => {
|
|
|
79
100
|
return false;
|
|
80
101
|
if (await indicatorOptedOut())
|
|
81
102
|
return false;
|
|
82
|
-
if (indicatorRunning())
|
|
103
|
+
if (indicatorRunning() && !(await launchAgentStale()))
|
|
83
104
|
return true;
|
|
84
105
|
// Registering a login item for a binary that isn't there leaves launchd
|
|
85
106
|
// failing to spawn it every login, silently. `glen doctor` then reports
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indicator-app.js","sourceRoot":"","sources":["../../src/_utils/indicator-app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"indicator-app.js","sourceRoot":"","sources":["../../src/_utils/indicator-app.ts"],"names":[],"mappings":"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"}
|
|
Binary file
|