@tryglen/cli 0.6.0 → 0.6.2
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/dist/_utils/ensure-global-cli.d.ts +7 -5
- package/dist/_utils/ensure-global-cli.js +63 -17
- package/dist/_utils/ensure-global-cli.js.map +1 -1
- package/dist/_utils/shell-profile.d.ts +11 -0
- package/dist/_utils/shell-profile.js +131 -0
- package/dist/_utils/shell-profile.js.map +1 -0
- package/dist/commands/install.js +46 -7
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/uninstall.js +11 -0
- package/dist/commands/uninstall.js.map +1 -1
- package/package.json +1 -1
|
@@ -15,11 +15,13 @@ type Outcome = {
|
|
|
15
15
|
readonly hadExisting: boolean;
|
|
16
16
|
};
|
|
17
17
|
/**
|
|
18
|
-
* Make sure a current `glen` binary is reachable on PATH,
|
|
19
|
-
* updating it globally via npm when it isn't. `npx
|
|
20
|
-
* runs this CLI from npx's cache without ever
|
|
21
|
-
* without this step the plugins' hooks would have
|
|
22
|
-
* silently do nothing.
|
|
18
|
+
* Make sure a current, PERSISTENT `glen` binary is reachable on PATH,
|
|
19
|
+
* installing or updating it globally via npm when it isn't. `npx
|
|
20
|
+
* @tryglen/cli install` runs this CLI from npx's transient cache without ever
|
|
21
|
+
* linking a global binary — without this step the plugins' hooks would have
|
|
22
|
+
* no `glen` to call and silently do nothing. We deliberately ignore npx's own
|
|
23
|
+
* ephemeral shim (see persistentGlenPath) so a fresh machine always gets a
|
|
24
|
+
* real global install.
|
|
23
25
|
*
|
|
24
26
|
* `onInstallStart(hadExisting)` fires just before the (slow) npm install so
|
|
25
27
|
* the caller can print a progress line first.
|
|
@@ -1,12 +1,51 @@
|
|
|
1
1
|
import { execFileSync } from "node:child_process";
|
|
2
|
+
import { realpathSync } from "node:fs";
|
|
2
3
|
import { join } from "node:path";
|
|
3
4
|
import { newer } from "./update.js";
|
|
4
5
|
import { cliVersion } from "./version.js";
|
|
5
6
|
import { isInstalled } from "./which.js";
|
|
6
|
-
|
|
7
|
-
|
|
7
|
+
// True when a path is an npx/transient package-runner shim — by its literal
|
|
8
|
+
// path (`…/_npx/…`, the cheap fast path) or by its resolved realpath (a
|
|
9
|
+
// symlink on PATH that points into the npx cache). npx runs this CLI from
|
|
10
|
+
// such a shim, which vanishes on exit; treating it as a real global would
|
|
11
|
+
// skip the global install a fresh machine needs.
|
|
12
|
+
const isEphemeralRunnerPath = (candidate) => {
|
|
13
|
+
if (candidate.includes("/_npx/"))
|
|
14
|
+
return true;
|
|
8
15
|
try {
|
|
9
|
-
|
|
16
|
+
return realpathSync(candidate).includes("/_npx/");
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Path to a PERSISTENT global `glen` on PATH, or null when the only matches
|
|
24
|
+
* are npx's transient shims. `npx @tryglen/cli install` runs this CLI from
|
|
25
|
+
* `~/.npm/_npx/<hash>/…/glen`, on PATH *only* while npx runs — it vanishes on
|
|
26
|
+
* exit, leaving the agents' hooks (which call bare `glen`) with nothing to
|
|
27
|
+
* run. We list every PATH match with `which -a` and ignore any ephemeral
|
|
28
|
+
* runner shim (by literal path or resolved realpath).
|
|
29
|
+
*/
|
|
30
|
+
const persistentGlenPath = () => {
|
|
31
|
+
try {
|
|
32
|
+
const out = execFileSync("which", ["-a", "glen"], {
|
|
33
|
+
encoding: "utf8",
|
|
34
|
+
timeout: 10_000,
|
|
35
|
+
});
|
|
36
|
+
return (out
|
|
37
|
+
.split("\n")
|
|
38
|
+
.map((line) => line.trim())
|
|
39
|
+
.find((line) => line.length > 0 && !isEphemeralRunnerPath(line)) ?? null);
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
/** Version reported by the `glen` at `glenPath`, or null when unreadable. */
|
|
46
|
+
const versionAt = (glenPath) => {
|
|
47
|
+
try {
|
|
48
|
+
const out = execFileSync(glenPath, ["--version"], {
|
|
10
49
|
encoding: "utf8",
|
|
11
50
|
timeout: 10_000,
|
|
12
51
|
});
|
|
@@ -46,19 +85,21 @@ const installGlobally = () => {
|
|
|
46
85
|
}
|
|
47
86
|
};
|
|
48
87
|
/**
|
|
49
|
-
* Make sure a current `glen` binary is reachable on PATH,
|
|
50
|
-
* updating it globally via npm when it isn't. `npx
|
|
51
|
-
* runs this CLI from npx's cache without ever
|
|
52
|
-
* without this step the plugins' hooks would have
|
|
53
|
-
* silently do nothing.
|
|
88
|
+
* Make sure a current, PERSISTENT `glen` binary is reachable on PATH,
|
|
89
|
+
* installing or updating it globally via npm when it isn't. `npx
|
|
90
|
+
* @tryglen/cli install` runs this CLI from npx's transient cache without ever
|
|
91
|
+
* linking a global binary — without this step the plugins' hooks would have
|
|
92
|
+
* no `glen` to call and silently do nothing. We deliberately ignore npx's own
|
|
93
|
+
* ephemeral shim (see persistentGlenPath) so a fresh machine always gets a
|
|
94
|
+
* real global install.
|
|
54
95
|
*
|
|
55
96
|
* `onInstallStart(hadExisting)` fires just before the (slow) npm install so
|
|
56
97
|
* the caller can print a progress line first.
|
|
57
98
|
*/
|
|
58
99
|
const ensureGlobalCli = (onInstallStart) => {
|
|
59
|
-
const
|
|
60
|
-
if (
|
|
61
|
-
const version =
|
|
100
|
+
const existing = persistentGlenPath();
|
|
101
|
+
if (existing) {
|
|
102
|
+
const version = versionAt(existing);
|
|
62
103
|
// Up to date (or ahead, e.g. a dev build) — nothing to do. A stale or
|
|
63
104
|
// unreadable version falls through to a reinstall.
|
|
64
105
|
if (version && !newer(cliVersion, version))
|
|
@@ -66,17 +107,22 @@ const ensureGlobalCli = (onInstallStart) => {
|
|
|
66
107
|
}
|
|
67
108
|
if (!isInstalled("npm"))
|
|
68
109
|
return { status: "no-npm" };
|
|
69
|
-
onInstallStart?.(
|
|
110
|
+
onInstallStart?.(existing !== null);
|
|
70
111
|
const result = installGlobally();
|
|
71
112
|
if (!result.ok) {
|
|
72
|
-
return {
|
|
113
|
+
return {
|
|
114
|
+
status: "failed",
|
|
115
|
+
permission: result.permission,
|
|
116
|
+
hadExisting: existing !== null,
|
|
117
|
+
};
|
|
73
118
|
}
|
|
74
|
-
if (
|
|
119
|
+
if (existing)
|
|
75
120
|
return { status: "updated" };
|
|
76
|
-
|
|
121
|
+
// Re-probe: npm linked the binary; is a persistent (non-npx) glen now on PATH?
|
|
122
|
+
if (persistentGlenPath() !== null)
|
|
77
123
|
return { status: "installed" };
|
|
78
|
-
// npm succeeded but `glen` still doesn't resolve: the global
|
|
79
|
-
// not on PATH (common with version managers / fresh Homebrew node).
|
|
124
|
+
// npm succeeded but `glen` still doesn't resolve persistently: the global
|
|
125
|
+
// bin dir is not on PATH (common with version managers / fresh Homebrew node).
|
|
80
126
|
return { status: "path-missing", binDir: npmGlobalBinDir() };
|
|
81
127
|
};
|
|
82
128
|
export { ensureGlobalCli };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensure-global-cli.js","sourceRoot":"","sources":["../../src/_utils/ensure-global-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAiBzC,
|
|
1
|
+
{"version":3,"file":"ensure-global-cli.js","sourceRoot":"","sources":["../../src/_utils/ensure-global-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type CliError } from "./cli-error.js";
|
|
2
|
+
import { type Result } from "./result.js";
|
|
3
|
+
declare const loginProfileForShell: () => {
|
|
4
|
+
shell: "zsh" | "bash";
|
|
5
|
+
profilePath: string;
|
|
6
|
+
} | null;
|
|
7
|
+
declare const glenPathBlock: (binDir: string) => string;
|
|
8
|
+
declare const glenPathBlockPresent: (profileText: string) => boolean;
|
|
9
|
+
declare const addGlenPathBlock: (profilePath: string, binDir: string) => Promise<Result<"added" | "updated" | "already-present", CliError>>;
|
|
10
|
+
declare const removeGlenPathBlock: (profilePath: string) => Promise<Result<"removed" | "absent", CliError>>;
|
|
11
|
+
export { addGlenPathBlock, glenPathBlock, glenPathBlockPresent, loginProfileForShell, removeGlenPathBlock, };
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { mkdir, readFile, rename, writeFile } from "node:fs/promises";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { basename, dirname, join } from "node:path";
|
|
4
|
+
import { causeOf, cliErr } from "./cli-error.js";
|
|
5
|
+
import { err, fromPromise, ok } from "./result.js";
|
|
6
|
+
const MARKER_START = "# glen";
|
|
7
|
+
const MARKER_END = "# glen end";
|
|
8
|
+
// The login-shell profile for the current shell, or null for shells we don't
|
|
9
|
+
// auto-edit (fish/others fall back to a printed manual line). We target the
|
|
10
|
+
// LOGIN profile — `.zprofile` / `.bash_profile` — because the agents' hooks
|
|
11
|
+
// run via `$SHELL -lc`, a non-interactive login shell that sources those but
|
|
12
|
+
// NOT `.zshrc`/`.bashrc`. (Homebrew makes the same `.zprofile` choice; pnpm's
|
|
13
|
+
// `.zshrc` is the documented "not found in `$SHELL -lc`" pitfall.)
|
|
14
|
+
const loginProfileForShell = () => {
|
|
15
|
+
const shell = basename(process.env.SHELL ?? "");
|
|
16
|
+
if (shell === "zsh") {
|
|
17
|
+
const zdotdir = process.env.ZDOTDIR;
|
|
18
|
+
const base = zdotdir && zdotdir.length > 0 ? zdotdir : homedir();
|
|
19
|
+
return { shell: "zsh", profilePath: join(base, ".zprofile") };
|
|
20
|
+
}
|
|
21
|
+
if (shell === "bash") {
|
|
22
|
+
return { shell: "bash", profilePath: join(homedir(), ".bash_profile") };
|
|
23
|
+
}
|
|
24
|
+
return null;
|
|
25
|
+
};
|
|
26
|
+
// The exact block we write — a marker fence (idempotency + clean uninstall)
|
|
27
|
+
// around a runtime `case` guard (re-sourcing never duplicates the PATH entry).
|
|
28
|
+
// Single source of truth: used both for the edit and the manual-line hint.
|
|
29
|
+
// binDir is wrapped in `"` everywhere it appears, so a path with spaces stays
|
|
30
|
+
// one literal word (verified in zsh and bash). binDir is a trusted install
|
|
31
|
+
// path (the npm prefix), so we don't escape `"`/`$`/`` ` `` — they don't occur
|
|
32
|
+
// in a real prefix and escaping them would only obscure the block.
|
|
33
|
+
const glenPathBlock = (binDir) => [
|
|
34
|
+
MARKER_START,
|
|
35
|
+
'case ":$PATH:" in',
|
|
36
|
+
` *":${binDir}:"*) ;;`,
|
|
37
|
+
` *) export PATH="${binDir}:$PATH" ;;`,
|
|
38
|
+
"esac",
|
|
39
|
+
MARKER_END,
|
|
40
|
+
].join("\n");
|
|
41
|
+
// Locate the `# glen` … `# glen end` fenced region by MARKERS (binDir-agnostic),
|
|
42
|
+
// so add and remove agree on what "the block" is even after a hand-edit or a
|
|
43
|
+
// changed npm prefix. Returns the [start, end) span, or null when absent or
|
|
44
|
+
// malformed (no end marker / end before start). MARKER_START is a prefix of
|
|
45
|
+
// MARKER_END, so we search for the end marker AFTER the start fence's full line.
|
|
46
|
+
const glenBlockSpan = (text) => {
|
|
47
|
+
const start = text.indexOf(MARKER_START);
|
|
48
|
+
if (start === -1)
|
|
49
|
+
return null;
|
|
50
|
+
const endMarker = text.indexOf(MARKER_END, start + MARKER_START.length);
|
|
51
|
+
if (endMarker === -1)
|
|
52
|
+
return null;
|
|
53
|
+
return { start, end: endMarker + MARKER_END.length };
|
|
54
|
+
};
|
|
55
|
+
const glenPathBlockPresent = (profileText) => glenBlockSpan(profileText) !== null;
|
|
56
|
+
const atomicWrite = async (filePath, content) => {
|
|
57
|
+
const mk = await fromPromise(mkdir(dirname(filePath), { recursive: true }));
|
|
58
|
+
if (!mk.ok)
|
|
59
|
+
return mk;
|
|
60
|
+
const tmp = `${filePath}.${process.pid}.tmp`;
|
|
61
|
+
const w = await fromPromise(writeFile(tmp, content));
|
|
62
|
+
if (!w.ok)
|
|
63
|
+
return w;
|
|
64
|
+
return fromPromise(rename(tmp, filePath));
|
|
65
|
+
};
|
|
66
|
+
// Stitch the content surrounding a removed/replaced span back together with at
|
|
67
|
+
// most one blank line between the two sides — no double blank lines, no stray
|
|
68
|
+
// leading newline at start-of-file, no trailing cruft when the block was the
|
|
69
|
+
// only content.
|
|
70
|
+
const joinAround = (before, after) => {
|
|
71
|
+
const head = before.replace(/\n+$/, "");
|
|
72
|
+
const tail = after.replace(/^\n+/, "").replace(/\n+$/, "");
|
|
73
|
+
if (head.length === 0)
|
|
74
|
+
return tail.length === 0 ? "" : `${tail}\n`;
|
|
75
|
+
if (tail.length === 0)
|
|
76
|
+
return `${head}\n`;
|
|
77
|
+
return `${head}\n\n${tail}\n`;
|
|
78
|
+
};
|
|
79
|
+
// Ensure the login profile contains exactly the canonical glen PATH block,
|
|
80
|
+
// creating the file if missing. No existing block → append ("added"). An
|
|
81
|
+
// identical block already present → no write ("already-present"). A block that
|
|
82
|
+
// DIFFERS (hand-edited, or a changed npm prefix) → replace it in place so we
|
|
83
|
+
// never leave a duplicate or stale fence behind ("updated"). Atomic write.
|
|
84
|
+
const addGlenPathBlock = async (profilePath, binDir) => {
|
|
85
|
+
const existing = await fromPromise(readFile(profilePath, "utf-8"));
|
|
86
|
+
const current = existing.ok ? existing.value : "";
|
|
87
|
+
const block = glenPathBlock(binDir);
|
|
88
|
+
const span = glenBlockSpan(current);
|
|
89
|
+
if (span && current.slice(span.start, span.end) === block) {
|
|
90
|
+
return ok("already-present");
|
|
91
|
+
}
|
|
92
|
+
const outcome = span ? "updated" : "added";
|
|
93
|
+
const next = span
|
|
94
|
+
? joinAround(`${current.slice(0, span.start)}${block}`, current.slice(span.end))
|
|
95
|
+
: joinAround(current, block);
|
|
96
|
+
const w = await atomicWrite(profilePath, next);
|
|
97
|
+
if (!w.ok) {
|
|
98
|
+
return err(cliErr({
|
|
99
|
+
what: "could not update your shell profile",
|
|
100
|
+
why: causeOf(w.error),
|
|
101
|
+
path: profilePath,
|
|
102
|
+
remedy: `add this line manually, then restart your terminal: export PATH="${binDir}:$PATH"`,
|
|
103
|
+
}));
|
|
104
|
+
}
|
|
105
|
+
return ok(outcome);
|
|
106
|
+
};
|
|
107
|
+
// Strip the marker-fenced block for `glen uninstall`, leaving clean output for
|
|
108
|
+
// every position (start / middle / end / only-content). Absent block / missing
|
|
109
|
+
// file → "absent" (no-op).
|
|
110
|
+
const removeGlenPathBlock = async (profilePath) => {
|
|
111
|
+
const existing = await fromPromise(readFile(profilePath, "utf-8"));
|
|
112
|
+
if (!existing.ok)
|
|
113
|
+
return ok("absent");
|
|
114
|
+
const text = existing.value;
|
|
115
|
+
const span = glenBlockSpan(text);
|
|
116
|
+
if (!span)
|
|
117
|
+
return ok("absent");
|
|
118
|
+
const next = joinAround(text.slice(0, span.start), text.slice(span.end));
|
|
119
|
+
const w = await atomicWrite(profilePath, next);
|
|
120
|
+
if (!w.ok) {
|
|
121
|
+
return err(cliErr({
|
|
122
|
+
what: "could not update your shell profile",
|
|
123
|
+
why: causeOf(w.error),
|
|
124
|
+
path: profilePath,
|
|
125
|
+
remedy: `remove the \`${MARKER_START}\` … \`${MARKER_END}\` block from ${profilePath} manually`,
|
|
126
|
+
}));
|
|
127
|
+
}
|
|
128
|
+
return ok("removed");
|
|
129
|
+
};
|
|
130
|
+
export { addGlenPathBlock, glenPathBlock, glenPathBlockPresent, loginProfileForShell, removeGlenPathBlock, };
|
|
131
|
+
//# sourceMappingURL=shell-profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell-profile.js","sourceRoot":"","sources":["../../src/_utils/shell-profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAiB,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAe,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEhE,MAAM,YAAY,GAAG,QAAQ,CAAC;AAC9B,MAAM,UAAU,GAAG,YAAY,CAAC;AAEhC,6EAA6E;AAC7E,4EAA4E;AAC5E,4EAA4E;AAC5E,6EAA6E;AAC7E,8EAA8E;AAC9E,mEAAmE;AACnE,MAAM,oBAAoB,GAAG,GAGpB,EAAE;IACT,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAChD,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;QACpC,MAAM,IAAI,GAAG,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACjE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC;IAChE,CAAC;IACD,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,eAAe,CAAC,EAAE,CAAC;IAC1E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,4EAA4E;AAC5E,+EAA+E;AAC/E,2EAA2E;AAC3E,8EAA8E;AAC9E,2EAA2E;AAC3E,+EAA+E;AAC/E,mEAAmE;AACnE,MAAM,aAAa,GAAG,CAAC,MAAc,EAAU,EAAE,CAC/C;IACE,YAAY;IACZ,mBAAmB;IACnB,QAAQ,MAAM,SAAS;IACvB,qBAAqB,MAAM,YAAY;IACvC,MAAM;IACN,UAAU;CACX,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEf,iFAAiF;AACjF,6EAA6E;AAC7E,4EAA4E;AAC5E,4EAA4E;AAC5E,iFAAiF;AACjF,MAAM,aAAa,GAAG,CAAC,IAAY,EAAyC,EAAE;IAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACzC,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACxE,IAAI,SAAS,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;AACvD,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,WAAmB,EAAW,EAAE,CAC5D,aAAa,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;AAEtC,MAAM,WAAW,GAAG,KAAK,EACvB,QAAgB,EAChB,OAAe,EACiB,EAAE;IAClC,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5E,IAAI,CAAC,EAAE,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC;IACtB,MAAM,GAAG,GAAG,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC;IAC7C,MAAM,CAAC,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,IAAI,CAAC,CAAC,CAAC,EAAE;QAAE,OAAO,CAAC,CAAC;IACpB,OAAO,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEF,+EAA+E;AAC/E,8EAA8E;AAC9E,6EAA6E;AAC7E,gBAAgB;AAChB,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,KAAa,EAAU,EAAE;IAC3D,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC3D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC;IACnE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,IAAI,IAAI,CAAC;IAC1C,OAAO,GAAG,IAAI,OAAO,IAAI,IAAI,CAAC;AAChC,CAAC,CAAC;AAEF,2EAA2E;AAC3E,yEAAyE;AACzE,+EAA+E;AAC/E,6EAA6E;AAC7E,2EAA2E;AAC3E,MAAM,gBAAgB,GAAG,KAAK,EAC5B,WAAmB,EACnB,MAAc,EACsD,EAAE;IACtE,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IACnE,MAAM,OAAO,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAClD,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAEpC,IAAI,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;QAC1D,OAAO,EAAE,CAAC,iBAAiB,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,OAAO,GAAwB,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;IAChE,MAAM,IAAI,GAAG,IAAI;QACf,CAAC,CAAC,UAAU,CACR,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE,EACzC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CACxB;QACH,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAE/B,MAAM,CAAC,GAAG,MAAM,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC/C,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACV,OAAO,GAAG,CACR,MAAM,CAAC;YACL,IAAI,EAAE,qCAAqC;YAC3C,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;YACrB,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,oEAAoE,MAAM,SAAS;SAC5F,CAAC,CACH,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC,CAAC;AAEF,+EAA+E;AAC/E,+EAA+E;AAC/E,2BAA2B;AAC3B,MAAM,mBAAmB,GAAG,KAAK,EAC/B,WAAmB,EAC8B,EAAE;IACnD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IACnE,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC5B,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC;IAE/B,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACzE,MAAM,CAAC,GAAG,MAAM,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC/C,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACV,OAAO,GAAG,CACR,MAAM,CAAC;YACL,IAAI,EAAE,qCAAqC;YAC3C,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;YACrB,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,gBAAgB,YAAY,UAAU,UAAU,iBAAiB,WAAW,WAAW;SAChG,CAAC,CACH,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;AACvB,CAAC,CAAC;AAEF,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GACpB,CAAC"}
|
package/dist/commands/install.js
CHANGED
|
@@ -11,6 +11,7 @@ import { agentsJsonPath, findBin, isExecutable, persistAgentPath, } from "../_ut
|
|
|
11
11
|
import { glenPluginStatus } from "../_utils/plugin-status.js";
|
|
12
12
|
import { err, fromPromise, ok } from "../_utils/result.js";
|
|
13
13
|
import { runBin } from "../_utils/run-bin.js";
|
|
14
|
+
import { addGlenPathBlock, glenPathBlock, loginProfileForShell, } from "../_utils/shell-profile.js";
|
|
14
15
|
import { isInstalled } from "../_utils/which.js";
|
|
15
16
|
import { login } from "./login.js";
|
|
16
17
|
// ---------------------------------------------------------------------------
|
|
@@ -203,7 +204,48 @@ const connectOrHint = async (agentBin) => {
|
|
|
203
204
|
// installing plugins; every failure warns and continues (the hooks fail open,
|
|
204
205
|
// and the plugins start working the moment a binary appears).
|
|
205
206
|
// ---------------------------------------------------------------------------
|
|
206
|
-
|
|
207
|
+
// PATH auto-fix: npm installed `glen` but its bin dir isn't on the login-shell
|
|
208
|
+
// PATH the hooks use (`$SHELL -lc`). Offer to add it to ~/.zprofile (zsh) /
|
|
209
|
+
// ~/.bash_profile (bash) — with consent on a TTY, a printed manual block
|
|
210
|
+
// otherwise. Unsupported shells get the manual block too.
|
|
211
|
+
const offerPathFix = async (binDir) => {
|
|
212
|
+
const manualBlock = (dir) => glenPathBlock(dir).replace(/\n/g, "\n ");
|
|
213
|
+
const manualHint = (dir) => ` Add it manually, then restart your terminal:\n ${manualBlock(dir)}\n\n`;
|
|
214
|
+
const profile = binDir ? loginProfileForShell() : null;
|
|
215
|
+
if (!binDir || !profile) {
|
|
216
|
+
process.stdout.write(binDir
|
|
217
|
+
? manualHint(binDir)
|
|
218
|
+
: " ⚠ Add npm's global bin dir (`npm prefix -g` + /bin) to your PATH and restart your terminal.\n\n");
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
if (!process.stdout.isTTY) {
|
|
222
|
+
process.stdout.write(` ⚠ glen isn't on your PATH yet (${binDir}).\n${manualHint(binDir)}`);
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
const response = await prompts({
|
|
226
|
+
type: "confirm",
|
|
227
|
+
name: "addPath",
|
|
228
|
+
message: `Add glen to your PATH in ${profile.profilePath}?`,
|
|
229
|
+
initial: true,
|
|
230
|
+
});
|
|
231
|
+
if (!response.addPath) {
|
|
232
|
+
process.stdout.write(manualHint(binDir));
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
const r = await addGlenPathBlock(profile.profilePath, binDir);
|
|
236
|
+
if (!r.ok) {
|
|
237
|
+
process.stdout.write(formatCliError(r.error));
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
const restartHint = `restart your terminal (or \`source ${profile.profilePath}\`)`;
|
|
241
|
+
const successMessage = {
|
|
242
|
+
added: ` ✓ added to ${profile.profilePath} — ${restartHint} so your agents can find glen.\n\n`,
|
|
243
|
+
updated: ` ✓ updated glen's PATH entry in ${profile.profilePath} — ${restartHint} to apply it.\n\n`,
|
|
244
|
+
"already-present": ` ✓ glen is already in ${profile.profilePath} — ${restartHint} so your agents can find it.\n\n`,
|
|
245
|
+
};
|
|
246
|
+
process.stdout.write(successMessage[r.value]);
|
|
247
|
+
};
|
|
248
|
+
const ensureCliBinary = async () => {
|
|
207
249
|
const outcome = ensureGlobalCli((hadExisting) => {
|
|
208
250
|
process.stdout.write(hadExisting
|
|
209
251
|
? " Updating the glen command (npm install -g @tryglen/cli@latest)... "
|
|
@@ -221,11 +263,8 @@ const ensureCliBinary = () => {
|
|
|
221
263
|
return;
|
|
222
264
|
}
|
|
223
265
|
if (outcome.status === "path-missing") {
|
|
224
|
-
process.stdout.write("✓ — but
|
|
225
|
-
|
|
226
|
-
? `Add ${outcome.binDir} to your PATH`
|
|
227
|
-
: "Add npm's global bin directory (npm prefix -g, plus /bin) to your PATH";
|
|
228
|
-
process.stdout.write(` ⚠ ${binDirHint} and open a new terminal.\n The plugins stay inactive until \`glen\` is reachable.\n\n`);
|
|
266
|
+
process.stdout.write("✓ — but it's not on your PATH yet\n");
|
|
267
|
+
await offerPathFix(outcome.binDir);
|
|
229
268
|
return;
|
|
230
269
|
}
|
|
231
270
|
process.stdout.write("✗\n");
|
|
@@ -245,7 +284,7 @@ const install = async (agentBin, paths) => {
|
|
|
245
284
|
const overrides = await applyPathOverrides(paths);
|
|
246
285
|
if (!overrides.ok)
|
|
247
286
|
return overrides;
|
|
248
|
-
ensureCliBinary();
|
|
287
|
+
await ensureCliBinary();
|
|
249
288
|
const detected = AGENTS.filter((a) => isInstalled(a.bin));
|
|
250
289
|
if (detected.length === 0) {
|
|
251
290
|
// No login nudge here — a connect prompt before the user learns nothing
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { cliErr } from "../_utils/cli-error.js";
|
|
2
2
|
import { isCodexHooksInstalled, uninstallCodexHooks, } from "../_utils/codex-hooks-setup.js";
|
|
3
3
|
import { err, ok } from "../_utils/result.js";
|
|
4
|
+
import { loginProfileForShell, removeGlenPathBlock, } from "../_utils/shell-profile.js";
|
|
4
5
|
import { isInstalled } from "../_utils/which.js";
|
|
5
6
|
/**
|
|
6
7
|
* `glen uninstall`
|
|
@@ -39,6 +40,16 @@ const uninstall = async () => {
|
|
|
39
40
|
process.stdout.write(" claude plugin uninstall glen@glen\n");
|
|
40
41
|
}
|
|
41
42
|
}
|
|
43
|
+
const profile = loginProfileForShell();
|
|
44
|
+
if (profile) {
|
|
45
|
+
const removed = await removeGlenPathBlock(profile.profilePath);
|
|
46
|
+
if (removed.ok && removed.value === "removed") {
|
|
47
|
+
process.stdout.write(`\n ✓ removed glen's PATH entry from ${profile.profilePath}\n`);
|
|
48
|
+
}
|
|
49
|
+
else if (!removed.ok) {
|
|
50
|
+
process.stdout.write(`\n ⚠ ${removed.error.what} (${profile.profilePath})\n`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
42
53
|
process.stdout.write("\n Credentials and session state in ~/.glen are kept (remove with `glen logout`).\n\n");
|
|
43
54
|
return ok(undefined);
|
|
44
55
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EACL,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAe,GAAG,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD;;;;;;;GAOG;AACH,MAAM,SAAS,GAAG,KAAK,IAAqC,EAAE;IAC5D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAErD,MAAM,iBAAiB,GAAG,MAAM,qBAAqB,EAAE,CAAC;IACxD,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,0DAA0D,CAC3D,CAAC;QACF,MAAM,CAAC,GAAG,MAAM,mBAAmB,EAAE,CAAC;QACtC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO,GAAG,CACR,MAAM,CAAC;gBACL,IAAI,EAAE,8BAA8B;gBACpC,GAAG,EAAE,CAAC,CAAC,KAAK;gBACZ,MAAM,EACJ,mGAAmG;aACtG,CAAC,CACH,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,uEAAuE;YACrE,0DAA0D,CAC7D,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,eAAe,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,cAAc,IAAI,eAAe,EAAE,CAAC;QACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAChE,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,wFAAwF,CACzF,CAAC;IACF,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;AACvB,CAAC,CAAC;AAEF,OAAO,EAAE,SAAS,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EACL,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAe,GAAG,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EACL,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD;;;;;;;GAOG;AACH,MAAM,SAAS,GAAG,KAAK,IAAqC,EAAE;IAC5D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAErD,MAAM,iBAAiB,GAAG,MAAM,qBAAqB,EAAE,CAAC;IACxD,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,0DAA0D,CAC3D,CAAC;QACF,MAAM,CAAC,GAAG,MAAM,mBAAmB,EAAE,CAAC;QACtC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO,GAAG,CACR,MAAM,CAAC;gBACL,IAAI,EAAE,8BAA8B;gBACpC,GAAG,EAAE,CAAC,CAAC,KAAK;gBACZ,MAAM,EACJ,mGAAmG;aACtG,CAAC,CACH,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,uEAAuE;YACrE,0DAA0D,CAC7D,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,eAAe,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,cAAc,IAAI,eAAe,EAAE,CAAC;QACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAChE,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,oBAAoB,EAAE,CAAC;IACvC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC/D,IAAI,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC9C,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,wCAAwC,OAAO,CAAC,WAAW,IAAI,CAChE,CAAC;QACJ,CAAC;aAAM,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,SAAS,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,WAAW,KAAK,CACzD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,wFAAwF,CACzF,CAAC;IACF,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;AACvB,CAAC,CAAC;AAEF,OAAO,EAAE,SAAS,EAAE,CAAC"}
|