opencode2-direnv 2026.908.0 → 2026.908.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.
- package/README.md +36 -2
- package/dist/index.d.ts +54 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +102 -9
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +112 -9
package/README.md
CHANGED
|
@@ -72,7 +72,39 @@ direnv: .envrc is blocked. Run `direnv allow` to enable.
|
|
|
72
72
|
|
|
73
73
|
### Local development
|
|
74
74
|
|
|
75
|
-
|
|
75
|
+
To dogfood this repository's working tree instead of the published package
|
|
76
|
+
(this repo's own setup), disable the published plugin and load a local dev
|
|
77
|
+
instance with a **distinct plugin id**:
|
|
78
|
+
|
|
79
|
+
```jsonc
|
|
80
|
+
// opencode.json (project)
|
|
81
|
+
{
|
|
82
|
+
"plugins": ["-opencode2-direnv"]
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
```ts
|
|
87
|
+
// .opencode/plugins/dev/index.ts — auto-discovered, not published
|
|
88
|
+
const plugin = (await import(`../../../src/index.js?dev=${Date.now()}`)).default
|
|
89
|
+
|
|
90
|
+
export default { ...plugin, id: "opencode2-direnv-dev" }
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Three details matter:
|
|
94
|
+
|
|
95
|
+
- **Distinct id** — without it the local instance's own `opencode2-direnv` id
|
|
96
|
+
re-enables the disabled package ("a later id re-enables a disabled plugin")
|
|
97
|
+
and then fails with `Duplicate plugin ID`.
|
|
98
|
+
- **Cache-busted dynamic import** — OpenCode cache-busts only the entrypoint
|
|
99
|
+
file (`index.ts?mtime=…`); a static import of `src/index.js` is served from
|
|
100
|
+
the module cache for the server's lifetime, so `src/` edits would silently
|
|
101
|
+
run stale code until a service restart. The per-evaluation query makes every
|
|
102
|
+
wrapper reload import the current working tree.
|
|
103
|
+
- **`.opencode/plugins/`** — configured path entries must be *directories* on
|
|
104
|
+
current betas; direct files load only from `.opencode/plugins/`.
|
|
105
|
+
|
|
106
|
+
In other projects (without a globally installed copy), a plain directory entry
|
|
107
|
+
also works and needs no disable or distinct id:
|
|
76
108
|
|
|
77
109
|
```json
|
|
78
110
|
{
|
|
@@ -80,11 +112,13 @@ Local plugins load from a directory containing an `index.ts` entrypoint:
|
|
|
80
112
|
}
|
|
81
113
|
```
|
|
82
114
|
|
|
83
|
-
The root `index.ts` re-exports `src/index.ts
|
|
115
|
+
The root `index.ts` re-exports `src/index.ts`; with the plain entry, edits are
|
|
116
|
+
picked up on restart. Typecheck, test, and build with:
|
|
84
117
|
|
|
85
118
|
```bash
|
|
86
119
|
npm ci
|
|
87
120
|
npx tsc --noEmit
|
|
121
|
+
npm test
|
|
88
122
|
npm run build
|
|
89
123
|
```
|
|
90
124
|
|
package/dist/index.d.ts
CHANGED
|
@@ -6,10 +6,32 @@ export declare const sanePath: () => string;
|
|
|
6
6
|
export declare const direnvCandidates: () => string[];
|
|
7
7
|
/** Strip known poison from process.env; returns the removed keys. */
|
|
8
8
|
export declare const stripPoison: () => string[];
|
|
9
|
+
/**
|
|
10
|
+
* The environment `direnv export json` is invoked with.
|
|
11
|
+
*
|
|
12
|
+
* direnv computes its export as a *diff against the invoking environment*, so
|
|
13
|
+
* the invoking environment must be STABLE and independent of what this plugin
|
|
14
|
+
* previously applied:
|
|
15
|
+
*
|
|
16
|
+
* - Invoking direnv with vars we applied on an earlier reload makes direnv
|
|
17
|
+
* omit them from the export; the plugin would read that as "dropped",
|
|
18
|
+
* delete them, and the next export would re-add them — oscillating (`+N` /
|
|
19
|
+
* `-N`) on every no-op reload.
|
|
20
|
+
* - Conversely, stripping applied vars from the real environment is wrong
|
|
21
|
+
* too: removing `PATH` makes the devshell evaluate against an empty PATH,
|
|
22
|
+
* exporting a PATH with no system/profile entries at all.
|
|
23
|
+
*
|
|
24
|
+
* So direnv always runs against this fixed, minimal baseline — the export
|
|
25
|
+
* becomes a pure function of the devshell itself, like a fresh login shell
|
|
26
|
+
* entering the project directory.
|
|
27
|
+
*/
|
|
9
28
|
/**
|
|
10
29
|
* Filter a `direnv export json` payload down to variables that are safe to
|
|
11
|
-
* apply: valid POSIX names only (drops phantom entries like `export PATH`)
|
|
12
|
-
*
|
|
30
|
+
* apply: valid POSIX names only (drops phantom entries like `export PATH`),
|
|
31
|
+
* no script-valued vars (drops nix's `shellHook` and friends), and no direnv
|
|
32
|
+
* bookkeeping vars (`DIRENV_DIFF`, `DIRENV_WATCHES`, … churn on every
|
|
33
|
+
* evaluation and exist for the wrapping shell's eval, not for consumers —
|
|
34
|
+
* applying them makes reloads oscillate and pollutes spawned shells).
|
|
13
35
|
*/
|
|
14
36
|
export declare const filterVars: (vars: Record<string, string | null | undefined>) => Record<string, string>;
|
|
15
37
|
/**
|
|
@@ -18,6 +40,36 @@ export declare const filterVars: (vars: Record<string, string | null | undefined
|
|
|
18
40
|
* every other subprocess this plugin could help) unlaunchable.
|
|
19
41
|
*/
|
|
20
42
|
export declare const repairPath: () => string;
|
|
43
|
+
/**
|
|
44
|
+
* The PATH used in the direnv baseline. Deliberately does NOT read
|
|
45
|
+
* process.env.PATH or HOST_PATH: the plugin applies the devshell PATH (and
|
|
46
|
+
* the devshell exports HOST_PATH) into process.env, so reading either back
|
|
47
|
+
* would feed the plugin's own output into the next baseline and oscillate.
|
|
48
|
+
* Built from stable per-machine locations only, so the export stays a pure
|
|
49
|
+
* function of the devshell. Custom interactive-shell PATH entries are not
|
|
50
|
+
* part of it by design; the devshell's own paths are prepended by the export.
|
|
51
|
+
*/
|
|
52
|
+
export declare const baselinePath: () => string;
|
|
53
|
+
/**
|
|
54
|
+
* The environment `direnv export json` is invoked with.
|
|
55
|
+
*
|
|
56
|
+
* direnv computes its export as a *diff against the invoking environment*, so
|
|
57
|
+
* the invoking environment must be STABLE and independent of what this plugin
|
|
58
|
+
* previously applied:
|
|
59
|
+
*
|
|
60
|
+
* - Invoking direnv with vars we applied on an earlier reload makes direnv
|
|
61
|
+
* omit them from the export; the plugin would read that as "dropped",
|
|
62
|
+
* delete them, and the next export would re-add them — oscillating (`+N` /
|
|
63
|
+
* `-N`) on every no-op reload.
|
|
64
|
+
* - Conversely, stripping applied vars from the real environment is wrong
|
|
65
|
+
* too: removing `PATH` makes the devshell evaluate against an empty PATH,
|
|
66
|
+
* exporting a PATH with no system/profile entries at all.
|
|
67
|
+
*
|
|
68
|
+
* So direnv always runs against this fixed, minimal baseline — the export
|
|
69
|
+
* becomes a pure function of the devshell itself, like a fresh login shell
|
|
70
|
+
* entering the project directory.
|
|
71
|
+
*/
|
|
72
|
+
export declare const exportBaseline: () => NodeJS.ProcessEnv;
|
|
21
73
|
/**
|
|
22
74
|
* Return the first direnv candidate that responds to `direnv version`, or
|
|
23
75
|
* null. Pure w.r.t. module state so it stays testable.
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAwF5C,0DAA0D;AAC1D,eAAO,MAAM,QAAQ,cAapB,CAAA;AAED;+DAC+D;AAC/D,eAAO,MAAM,gBAAgB,gBASR,CAAA;AAErB,qEAAqE;AACrE,eAAO,MAAM,WAAW,QAAO,MAAM,EASpC,CAAA;AAED
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAwF5C,0DAA0D;AAC1D,eAAO,MAAM,QAAQ,cAapB,CAAA;AAED;+DAC+D;AAC/D,eAAO,MAAM,gBAAgB,gBASR,CAAA;AAErB,qEAAqE;AACrE,eAAO,MAAM,WAAW,QAAO,MAAM,EASpC,CAAA;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CASjG,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,UAAU,QAAO,MAO7B,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,QAAO,MAY/B,CAAA;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,cAAc,QAAO,MAAM,CAAC,UAiBxC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,GACtB,YAAY,MAAM,EAAE,EACpB,OAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,OAAO,CAAyD,KAC/G,OAAO,CAAC,MAAM,GAAG,IAAI,CAUvB,CAAA;AAUD,8EAA8E;AAC9E,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,EAAE,QAAQ,MAAM,GAAG,IAAI,KAAG,MAAM,GAAG,IAW5E,CAAA;;AAgCD,wBAkVE"}
|
package/dist/index.js
CHANGED
|
@@ -87,10 +87,32 @@ export const stripPoison = () => {
|
|
|
87
87
|
}
|
|
88
88
|
return removed;
|
|
89
89
|
};
|
|
90
|
+
/**
|
|
91
|
+
* The environment `direnv export json` is invoked with.
|
|
92
|
+
*
|
|
93
|
+
* direnv computes its export as a *diff against the invoking environment*, so
|
|
94
|
+
* the invoking environment must be STABLE and independent of what this plugin
|
|
95
|
+
* previously applied:
|
|
96
|
+
*
|
|
97
|
+
* - Invoking direnv with vars we applied on an earlier reload makes direnv
|
|
98
|
+
* omit them from the export; the plugin would read that as "dropped",
|
|
99
|
+
* delete them, and the next export would re-add them — oscillating (`+N` /
|
|
100
|
+
* `-N`) on every no-op reload.
|
|
101
|
+
* - Conversely, stripping applied vars from the real environment is wrong
|
|
102
|
+
* too: removing `PATH` makes the devshell evaluate against an empty PATH,
|
|
103
|
+
* exporting a PATH with no system/profile entries at all.
|
|
104
|
+
*
|
|
105
|
+
* So direnv always runs against this fixed, minimal baseline — the export
|
|
106
|
+
* becomes a pure function of the devshell itself, like a fresh login shell
|
|
107
|
+
* entering the project directory.
|
|
108
|
+
*/
|
|
90
109
|
/**
|
|
91
110
|
* Filter a `direnv export json` payload down to variables that are safe to
|
|
92
|
-
* apply: valid POSIX names only (drops phantom entries like `export PATH`)
|
|
93
|
-
*
|
|
111
|
+
* apply: valid POSIX names only (drops phantom entries like `export PATH`),
|
|
112
|
+
* no script-valued vars (drops nix's `shellHook` and friends), and no direnv
|
|
113
|
+
* bookkeeping vars (`DIRENV_DIFF`, `DIRENV_WATCHES`, … churn on every
|
|
114
|
+
* evaluation and exist for the wrapping shell's eval, not for consumers —
|
|
115
|
+
* applying them makes reloads oscillate and pollutes spawned shells).
|
|
94
116
|
*/
|
|
95
117
|
export const filterVars = (vars) => {
|
|
96
118
|
const safe = {};
|
|
@@ -99,6 +121,8 @@ export const filterVars = (vars) => {
|
|
|
99
121
|
continue;
|
|
100
122
|
if (!VALID_NAME.test(key) || SCRIPT_VARS.has(key))
|
|
101
123
|
continue;
|
|
124
|
+
if (key.startsWith("DIRENV_"))
|
|
125
|
+
continue;
|
|
102
126
|
safe[key] = value;
|
|
103
127
|
}
|
|
104
128
|
return safe;
|
|
@@ -117,6 +141,62 @@ export const repairPath = () => {
|
|
|
117
141
|
console.warn(`direnv: repaired corrupted PATH (was ${JSON.stringify(current)})`);
|
|
118
142
|
return fallback;
|
|
119
143
|
};
|
|
144
|
+
/**
|
|
145
|
+
* The PATH used in the direnv baseline. Deliberately does NOT read
|
|
146
|
+
* process.env.PATH or HOST_PATH: the plugin applies the devshell PATH (and
|
|
147
|
+
* the devshell exports HOST_PATH) into process.env, so reading either back
|
|
148
|
+
* would feed the plugin's own output into the next baseline and oscillate.
|
|
149
|
+
* Built from stable per-machine locations only, so the export stays a pure
|
|
150
|
+
* function of the devshell. Custom interactive-shell PATH entries are not
|
|
151
|
+
* part of it by design; the devshell's own paths are prepended by the export.
|
|
152
|
+
*/
|
|
153
|
+
export const baselinePath = () => {
|
|
154
|
+
const parts = [];
|
|
155
|
+
if (process.env.HOME)
|
|
156
|
+
parts.push(`${process.env.HOME}/.nix-profile/bin`);
|
|
157
|
+
if (process.env.USER)
|
|
158
|
+
parts.push(`/etc/profiles/per-user/${process.env.USER}/bin`);
|
|
159
|
+
parts.push("/nix/var/nix/profiles/default/bin", "/run/current-system/sw/bin", "/opt/homebrew/bin", "/usr/local/bin", "/usr/bin:/bin:/usr/sbin:/sbin");
|
|
160
|
+
return parts.join(":");
|
|
161
|
+
};
|
|
162
|
+
/**
|
|
163
|
+
* The environment `direnv export json` is invoked with.
|
|
164
|
+
*
|
|
165
|
+
* direnv computes its export as a *diff against the invoking environment*, so
|
|
166
|
+
* the invoking environment must be STABLE and independent of what this plugin
|
|
167
|
+
* previously applied:
|
|
168
|
+
*
|
|
169
|
+
* - Invoking direnv with vars we applied on an earlier reload makes direnv
|
|
170
|
+
* omit them from the export; the plugin would read that as "dropped",
|
|
171
|
+
* delete them, and the next export would re-add them — oscillating (`+N` /
|
|
172
|
+
* `-N`) on every no-op reload.
|
|
173
|
+
* - Conversely, stripping applied vars from the real environment is wrong
|
|
174
|
+
* too: removing `PATH` makes the devshell evaluate against an empty PATH,
|
|
175
|
+
* exporting a PATH with no system/profile entries at all.
|
|
176
|
+
*
|
|
177
|
+
* So direnv always runs against this fixed, minimal baseline — the export
|
|
178
|
+
* becomes a pure function of the devshell itself, like a fresh login shell
|
|
179
|
+
* entering the project directory.
|
|
180
|
+
*/
|
|
181
|
+
export const exportBaseline = () => {
|
|
182
|
+
const wanted = [
|
|
183
|
+
"HOME",
|
|
184
|
+
"USER",
|
|
185
|
+
"TERM",
|
|
186
|
+
"TMPDIR",
|
|
187
|
+
"SHELL",
|
|
188
|
+
"LANG",
|
|
189
|
+
];
|
|
190
|
+
const baseline = {};
|
|
191
|
+
for (const key of wanted) {
|
|
192
|
+
const value = process.env[key];
|
|
193
|
+
if (value !== undefined)
|
|
194
|
+
baseline[key] = value;
|
|
195
|
+
}
|
|
196
|
+
// never derived from (possibly corrupted or plugin-applied) process.env.PATH
|
|
197
|
+
baseline.PATH = baselinePath();
|
|
198
|
+
return baseline;
|
|
199
|
+
};
|
|
120
200
|
/**
|
|
121
201
|
* Return the first direnv candidate that responds to `direnv version`, or
|
|
122
202
|
* null. Pure w.r.t. module state so it stays testable.
|
|
@@ -171,11 +251,12 @@ const sanitize = () => {
|
|
|
171
251
|
repairPath();
|
|
172
252
|
return stripped.length > 0 || process.env.PATH !== before;
|
|
173
253
|
};
|
|
174
|
-
const runText = async (file, args, cwd) => {
|
|
254
|
+
const runText = async (file, args, cwd, env) => {
|
|
175
255
|
const { stdout } = await run(file, args, {
|
|
176
256
|
cwd,
|
|
177
257
|
encoding: "utf8",
|
|
178
258
|
maxBuffer: 10 * 1024 * 1024,
|
|
259
|
+
...(env ? { env } : {}),
|
|
179
260
|
});
|
|
180
261
|
return stdout;
|
|
181
262
|
};
|
|
@@ -268,7 +349,9 @@ export default Plugin.define({
|
|
|
268
349
|
}
|
|
269
350
|
let jsonText;
|
|
270
351
|
try {
|
|
271
|
-
|
|
352
|
+
// See exportBaseline: a fixed baseline keeps the direnv diff stable
|
|
353
|
+
// (no oscillation) and the exported PATH well-formed.
|
|
354
|
+
jsonText = await runText(direnv, ["export", "json"], dir, exportBaseline());
|
|
272
355
|
}
|
|
273
356
|
catch (error) {
|
|
274
357
|
const stderr = error && typeof error === "object" && "stderr" in error
|
|
@@ -284,10 +367,14 @@ export default Plugin.define({
|
|
|
284
367
|
}
|
|
285
368
|
const parsed = jsonText.trim() ? JSON.parse(jsonText) : {};
|
|
286
369
|
const newVars = parsed && typeof parsed === "object" ? parsed : {};
|
|
287
|
-
|
|
288
|
-
//
|
|
370
|
+
const filteredVars = filterVars(newVars);
|
|
371
|
+
// 1. Remove vars we previously applied that the devshell no longer
|
|
372
|
+
// exports (or that are no longer safe to apply). Checked against
|
|
373
|
+
// the *filtered* set so previously-applied keys that filtering now
|
|
374
|
+
// drops (e.g. direnv bookkeeping) are cleaned from process.env.
|
|
375
|
+
// direnv's explicit `null` unset signals land here too.
|
|
289
376
|
for (const key of appliedKeys) {
|
|
290
|
-
const keep = key in
|
|
377
|
+
const keep = key in filteredVars;
|
|
291
378
|
if (!keep && key in process.env) {
|
|
292
379
|
delete process.env[key];
|
|
293
380
|
outcome.removed++;
|
|
@@ -298,7 +385,7 @@ export default Plugin.define({
|
|
|
298
385
|
// entry) and script-valued vars (e.g. nix's `shellHook`) — they
|
|
299
386
|
// corrupt subprocess environments instead of configuring them.
|
|
300
387
|
const nextApplied = new Set();
|
|
301
|
-
for (const [key, value] of Object.entries(
|
|
388
|
+
for (const [key, value] of Object.entries(filteredVars)) {
|
|
302
389
|
const current = process.env[key];
|
|
303
390
|
if (current === undefined)
|
|
304
391
|
outcome.added++;
|
|
@@ -310,7 +397,10 @@ export default Plugin.define({
|
|
|
310
397
|
appliedKeys.clear();
|
|
311
398
|
for (const key of nextApplied)
|
|
312
399
|
appliedKeys.add(key);
|
|
313
|
-
|
|
400
|
+
// Inject only the filtered set: the raw payload can carry null
|
|
401
|
+
// unset-signals, and the shell hook writes values verbatim into
|
|
402
|
+
// spawned shell environments (which must be strings).
|
|
403
|
+
currentVars = filterVars(newVars);
|
|
314
404
|
return outcome;
|
|
315
405
|
}
|
|
316
406
|
catch {
|
|
@@ -429,6 +519,9 @@ export default Plugin.define({
|
|
|
429
519
|
properties: {},
|
|
430
520
|
additionalProperties: false,
|
|
431
521
|
},
|
|
522
|
+
// without this the tool registers as a top-level `reload` instead of
|
|
523
|
+
// joining the `direnv` namespace registered above
|
|
524
|
+
options: { namespace: "direnv" },
|
|
432
525
|
execute: async () => {
|
|
433
526
|
const outcome = await reloadEnv();
|
|
434
527
|
logOutcome(outcome, { initial: false });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -127,16 +127,39 @@ export const stripPoison = (): string[] => {
|
|
|
127
127
|
return removed
|
|
128
128
|
}
|
|
129
129
|
|
|
130
|
+
/**
|
|
131
|
+
* The environment `direnv export json` is invoked with.
|
|
132
|
+
*
|
|
133
|
+
* direnv computes its export as a *diff against the invoking environment*, so
|
|
134
|
+
* the invoking environment must be STABLE and independent of what this plugin
|
|
135
|
+
* previously applied:
|
|
136
|
+
*
|
|
137
|
+
* - Invoking direnv with vars we applied on an earlier reload makes direnv
|
|
138
|
+
* omit them from the export; the plugin would read that as "dropped",
|
|
139
|
+
* delete them, and the next export would re-add them — oscillating (`+N` /
|
|
140
|
+
* `-N`) on every no-op reload.
|
|
141
|
+
* - Conversely, stripping applied vars from the real environment is wrong
|
|
142
|
+
* too: removing `PATH` makes the devshell evaluate against an empty PATH,
|
|
143
|
+
* exporting a PATH with no system/profile entries at all.
|
|
144
|
+
*
|
|
145
|
+
* So direnv always runs against this fixed, minimal baseline — the export
|
|
146
|
+
* becomes a pure function of the devshell itself, like a fresh login shell
|
|
147
|
+
* entering the project directory.
|
|
148
|
+
*/
|
|
130
149
|
/**
|
|
131
150
|
* Filter a `direnv export json` payload down to variables that are safe to
|
|
132
|
-
* apply: valid POSIX names only (drops phantom entries like `export PATH`)
|
|
133
|
-
*
|
|
151
|
+
* apply: valid POSIX names only (drops phantom entries like `export PATH`),
|
|
152
|
+
* no script-valued vars (drops nix's `shellHook` and friends), and no direnv
|
|
153
|
+
* bookkeeping vars (`DIRENV_DIFF`, `DIRENV_WATCHES`, … churn on every
|
|
154
|
+
* evaluation and exist for the wrapping shell's eval, not for consumers —
|
|
155
|
+
* applying them makes reloads oscillate and pollutes spawned shells).
|
|
134
156
|
*/
|
|
135
157
|
export const filterVars = (vars: Record<string, string | null | undefined>): Record<string, string> => {
|
|
136
158
|
const safe: Record<string, string> = {}
|
|
137
159
|
for (const [key, value] of Object.entries(vars)) {
|
|
138
160
|
if (value == null) continue
|
|
139
161
|
if (!VALID_NAME.test(key) || SCRIPT_VARS.has(key)) continue
|
|
162
|
+
if (key.startsWith("DIRENV_")) continue
|
|
140
163
|
safe[key] = value
|
|
141
164
|
}
|
|
142
165
|
return safe
|
|
@@ -156,6 +179,67 @@ export const repairPath = (): string => {
|
|
|
156
179
|
return fallback
|
|
157
180
|
}
|
|
158
181
|
|
|
182
|
+
/**
|
|
183
|
+
* The PATH used in the direnv baseline. Deliberately does NOT read
|
|
184
|
+
* process.env.PATH or HOST_PATH: the plugin applies the devshell PATH (and
|
|
185
|
+
* the devshell exports HOST_PATH) into process.env, so reading either back
|
|
186
|
+
* would feed the plugin's own output into the next baseline and oscillate.
|
|
187
|
+
* Built from stable per-machine locations only, so the export stays a pure
|
|
188
|
+
* function of the devshell. Custom interactive-shell PATH entries are not
|
|
189
|
+
* part of it by design; the devshell's own paths are prepended by the export.
|
|
190
|
+
*/
|
|
191
|
+
export const baselinePath = (): string => {
|
|
192
|
+
const parts: string[] = []
|
|
193
|
+
if (process.env.HOME) parts.push(`${process.env.HOME}/.nix-profile/bin`)
|
|
194
|
+
if (process.env.USER) parts.push(`/etc/profiles/per-user/${process.env.USER}/bin`)
|
|
195
|
+
parts.push(
|
|
196
|
+
"/nix/var/nix/profiles/default/bin",
|
|
197
|
+
"/run/current-system/sw/bin",
|
|
198
|
+
"/opt/homebrew/bin",
|
|
199
|
+
"/usr/local/bin",
|
|
200
|
+
"/usr/bin:/bin:/usr/sbin:/sbin",
|
|
201
|
+
)
|
|
202
|
+
return parts.join(":")
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* The environment `direnv export json` is invoked with.
|
|
207
|
+
*
|
|
208
|
+
* direnv computes its export as a *diff against the invoking environment*, so
|
|
209
|
+
* the invoking environment must be STABLE and independent of what this plugin
|
|
210
|
+
* previously applied:
|
|
211
|
+
*
|
|
212
|
+
* - Invoking direnv with vars we applied on an earlier reload makes direnv
|
|
213
|
+
* omit them from the export; the plugin would read that as "dropped",
|
|
214
|
+
* delete them, and the next export would re-add them — oscillating (`+N` /
|
|
215
|
+
* `-N`) on every no-op reload.
|
|
216
|
+
* - Conversely, stripping applied vars from the real environment is wrong
|
|
217
|
+
* too: removing `PATH` makes the devshell evaluate against an empty PATH,
|
|
218
|
+
* exporting a PATH with no system/profile entries at all.
|
|
219
|
+
*
|
|
220
|
+
* So direnv always runs against this fixed, minimal baseline — the export
|
|
221
|
+
* becomes a pure function of the devshell itself, like a fresh login shell
|
|
222
|
+
* entering the project directory.
|
|
223
|
+
*/
|
|
224
|
+
export const exportBaseline = (): NodeJS.ProcessEnv => {
|
|
225
|
+
const wanted: Array<keyof NodeJS.ProcessEnv> = [
|
|
226
|
+
"HOME",
|
|
227
|
+
"USER",
|
|
228
|
+
"TERM",
|
|
229
|
+
"TMPDIR",
|
|
230
|
+
"SHELL",
|
|
231
|
+
"LANG",
|
|
232
|
+
]
|
|
233
|
+
const baseline: NodeJS.ProcessEnv = {}
|
|
234
|
+
for (const key of wanted) {
|
|
235
|
+
const value = process.env[key]
|
|
236
|
+
if (value !== undefined) baseline[key] = value
|
|
237
|
+
}
|
|
238
|
+
// never derived from (possibly corrupted or plugin-applied) process.env.PATH
|
|
239
|
+
baseline.PATH = baselinePath()
|
|
240
|
+
return baseline
|
|
241
|
+
}
|
|
242
|
+
|
|
159
243
|
/**
|
|
160
244
|
* Return the first direnv candidate that responds to `direnv version`, or
|
|
161
245
|
* null. Pure w.r.t. module state so it stays testable.
|
|
@@ -212,11 +296,17 @@ const sanitize = (): boolean => {
|
|
|
212
296
|
return stripped.length > 0 || process.env.PATH !== before
|
|
213
297
|
}
|
|
214
298
|
|
|
215
|
-
const runText = async (
|
|
299
|
+
const runText = async (
|
|
300
|
+
file: string,
|
|
301
|
+
args: string[],
|
|
302
|
+
cwd: string,
|
|
303
|
+
env?: NodeJS.ProcessEnv,
|
|
304
|
+
) => {
|
|
216
305
|
const { stdout } = await run(file, args, {
|
|
217
306
|
cwd,
|
|
218
307
|
encoding: "utf8",
|
|
219
308
|
maxBuffer: 10 * 1024 * 1024,
|
|
309
|
+
...(env ? { env } : {}),
|
|
220
310
|
})
|
|
221
311
|
return stdout
|
|
222
312
|
}
|
|
@@ -326,7 +416,9 @@ export default Plugin.define({
|
|
|
326
416
|
|
|
327
417
|
let jsonText: string
|
|
328
418
|
try {
|
|
329
|
-
|
|
419
|
+
// See exportBaseline: a fixed baseline keeps the direnv diff stable
|
|
420
|
+
// (no oscillation) and the exported PATH well-formed.
|
|
421
|
+
jsonText = await runText(direnv, ["export", "json"], dir, exportBaseline())
|
|
330
422
|
} catch (error: unknown) {
|
|
331
423
|
const stderr =
|
|
332
424
|
error && typeof error === "object" && "stderr" in error
|
|
@@ -344,10 +436,15 @@ export default Plugin.define({
|
|
|
344
436
|
const newVars: Record<string, string> =
|
|
345
437
|
parsed && typeof parsed === "object" ? parsed : {}
|
|
346
438
|
|
|
347
|
-
|
|
348
|
-
|
|
439
|
+
const filteredVars = filterVars(newVars)
|
|
440
|
+
|
|
441
|
+
// 1. Remove vars we previously applied that the devshell no longer
|
|
442
|
+
// exports (or that are no longer safe to apply). Checked against
|
|
443
|
+
// the *filtered* set so previously-applied keys that filtering now
|
|
444
|
+
// drops (e.g. direnv bookkeeping) are cleaned from process.env.
|
|
445
|
+
// direnv's explicit `null` unset signals land here too.
|
|
349
446
|
for (const key of appliedKeys) {
|
|
350
|
-
const keep = key in
|
|
447
|
+
const keep = key in filteredVars
|
|
351
448
|
if (!keep && key in process.env) {
|
|
352
449
|
delete process.env[key]
|
|
353
450
|
outcome.removed++
|
|
@@ -359,7 +456,7 @@ export default Plugin.define({
|
|
|
359
456
|
// entry) and script-valued vars (e.g. nix's `shellHook`) — they
|
|
360
457
|
// corrupt subprocess environments instead of configuring them.
|
|
361
458
|
const nextApplied = new Set<string>()
|
|
362
|
-
for (const [key, value] of Object.entries(
|
|
459
|
+
for (const [key, value] of Object.entries(filteredVars)) {
|
|
363
460
|
const current = process.env[key]
|
|
364
461
|
if (current === undefined) outcome.added++
|
|
365
462
|
else if (current !== value) outcome.changed++
|
|
@@ -369,7 +466,10 @@ export default Plugin.define({
|
|
|
369
466
|
|
|
370
467
|
appliedKeys.clear()
|
|
371
468
|
for (const key of nextApplied) appliedKeys.add(key)
|
|
372
|
-
|
|
469
|
+
// Inject only the filtered set: the raw payload can carry null
|
|
470
|
+
// unset-signals, and the shell hook writes values verbatim into
|
|
471
|
+
// spawned shell environments (which must be strings).
|
|
472
|
+
currentVars = filterVars(newVars)
|
|
373
473
|
|
|
374
474
|
return outcome
|
|
375
475
|
} catch {
|
|
@@ -487,6 +587,9 @@ export default Plugin.define({
|
|
|
487
587
|
properties: {},
|
|
488
588
|
additionalProperties: false,
|
|
489
589
|
},
|
|
590
|
+
// without this the tool registers as a top-level `reload` instead of
|
|
591
|
+
// joining the `direnv` namespace registered above
|
|
592
|
+
options: { namespace: "direnv" },
|
|
490
593
|
execute: async () => {
|
|
491
594
|
const outcome = await reloadEnv()
|
|
492
595
|
logOutcome(outcome, { initial: false })
|