@dbx-tools/cli-appkit-env 0.9.40 → 0.9.43
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 +18 -12
- package/index.ts +3 -2
- package/lib/index.d.ts +3 -2
- package/lib/index.js +3 -2
- package/lib/src/cli.js +8 -9
- package/lib/src/env-export.d.ts +16 -1
- package/lib/src/env-export.js +22 -15
- package/package.json +6 -4
- package/src/cli.ts +13 -19
- package/src/env-export.ts +29 -17
package/README.md
CHANGED
|
@@ -51,26 +51,32 @@ application startup itself, use
|
|
|
51
51
|
|
|
52
52
|
### `dbx appkit`
|
|
53
53
|
|
|
54
|
-
```text
|
|
55
|
-
Usage: dbx appkit [command]
|
|
56
|
-
|
|
57
54
|
AppKit helpers: resolve the environment an AppKit app would start with.
|
|
58
55
|
|
|
59
|
-
|
|
60
|
-
|
|
56
|
+
```sh
|
|
57
|
+
dbx appkit [command]
|
|
61
58
|
```
|
|
62
59
|
|
|
63
|
-
|
|
60
|
+
#### Commands
|
|
61
|
+
|
|
62
|
+
| Command | Description |
|
|
63
|
+
| --------------- | ------------------------------------------------------ |
|
|
64
|
+
| `env [options]` | Run AppKit auto-config and print new/changed env vars. |
|
|
64
65
|
|
|
65
|
-
|
|
66
|
-
Usage: dbx appkit env [options]
|
|
66
|
+
### `dbx appkit env`
|
|
67
67
|
|
|
68
68
|
Run AppKit auto-config and print new/changed env vars.
|
|
69
69
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
platform.
|
|
73
|
-
-q, --quiet Suppress auto-config log output (LOG_LEVEL=error)
|
|
70
|
+
```sh
|
|
71
|
+
dbx appkit env [options]
|
|
74
72
|
```
|
|
75
73
|
|
|
74
|
+
#### Options
|
|
75
|
+
|
|
76
|
+
| Option | Description |
|
|
77
|
+
| ------------------ | --------------------------------------------------------------------------------------------------------------- |
|
|
78
|
+
| `--format <value>` | Output format: export, windows, or json. (choices: "export", "windows", "json", default: "export", env: FORMAT) |
|
|
79
|
+
| `--quiet` | Suppress auto-config log output. (default: false, env: QUIET) |
|
|
80
|
+
| `--no-quiet` | Disable suppress auto-config log output. |
|
|
81
|
+
|
|
76
82
|
<!-- cli-reference:end -->
|
package/index.ts
CHANGED
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
// Hand edits are overwritten on the next watch; this file is read-only.
|
|
4
4
|
|
|
5
5
|
export const PACKAGE_IDENTIFIER = "@dbx-tools/cli-appkit-env";
|
|
6
|
-
export const PACKAGE_VERSION = "0.9.
|
|
6
|
+
export const PACKAGE_VERSION = "0.9.43";
|
|
7
7
|
export * as cli from "./src/cli.ts";
|
|
8
8
|
export * as envExport from "./src/env-export.ts";
|
|
9
9
|
export { CommanderError } from "./src/cli.ts";
|
|
10
|
-
export
|
|
10
|
+
export { EnvExportFormatSchema, EnvCommandOptionsSchema } from "./src/env-export.ts";
|
|
11
|
+
export type { EnvExportFormat, EnvCommandOptions } from "./src/env-export.ts";
|
package/lib/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export declare const PACKAGE_IDENTIFIER = "@dbx-tools/cli-appkit-env";
|
|
2
|
-
export declare const PACKAGE_VERSION = "0.9.
|
|
2
|
+
export declare const PACKAGE_VERSION = "0.9.43";
|
|
3
3
|
export * as cli from "./src/cli.ts";
|
|
4
4
|
export * as envExport from "./src/env-export.ts";
|
|
5
5
|
export { CommanderError } from "./src/cli.ts";
|
|
6
|
-
export
|
|
6
|
+
export { EnvExportFormatSchema, EnvCommandOptionsSchema } from "./src/env-export.ts";
|
|
7
|
+
export type { EnvExportFormat, EnvCommandOptions } from "./src/env-export.ts";
|
package/lib/index.js
CHANGED
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
// Regenerated from the exporting modules in ./src.
|
|
3
3
|
// Hand edits are overwritten on the next watch; this file is read-only.
|
|
4
4
|
export const PACKAGE_IDENTIFIER = "@dbx-tools/cli-appkit-env";
|
|
5
|
-
export const PACKAGE_VERSION = "0.9.
|
|
5
|
+
export const PACKAGE_VERSION = "0.9.43";
|
|
6
6
|
export * as cli from "./src/cli.js";
|
|
7
7
|
export * as envExport from "./src/env-export.js";
|
|
8
8
|
export { CommanderError } from "./src/cli.js";
|
|
9
|
-
|
|
9
|
+
export { EnvExportFormatSchema, EnvCommandOptionsSchema } from "./src/env-export.js";
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRywyQkFBMkIsQ0FBQztBQUM5RCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxHQUFHLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sS0FBSyxTQUFTLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdFTkVSQVRFRCBieSBwcm9qZW4gd2F0Y2ggLSBETyBOT1QgRURJVC5cbi8vIFJlZ2VuZXJhdGVkIGZyb20gdGhlIGV4cG9ydGluZyBtb2R1bGVzIGluIC4vc3JjLlxuLy8gSGFuZCBlZGl0cyBhcmUgb3ZlcndyaXR0ZW4gb24gdGhlIG5leHQgd2F0Y2g7IHRoaXMgZmlsZSBpcyByZWFkLW9ubHkuXG5cbmV4cG9ydCBjb25zdCBQQUNLQUdFX0lERU5USUZJRVIgPSBcIkBkYngtdG9vbHMvY2xpLWFwcGtpdC1lbnZcIjtcbmV4cG9ydCBjb25zdCBQQUNLQUdFX1ZFUlNJT04gPSBcIjAuOS40M1wiO1xuZXhwb3J0ICogYXMgY2xpIGZyb20gXCIuL3NyYy9jbGkudHNcIjtcbmV4cG9ydCAqIGFzIGVudkV4cG9ydCBmcm9tIFwiLi9zcmMvZW52LWV4cG9ydC50c1wiO1xuZXhwb3J0IHsgQ29tbWFuZGVyRXJyb3IgfSBmcm9tIFwiLi9zcmMvY2xpLnRzXCI7XG5leHBvcnQgeyBFbnZFeHBvcnRGb3JtYXRTY2hlbWEsIEVudkNvbW1hbmRPcHRpb25zU2NoZW1hIH0gZnJvbSBcIi4vc3JjL2Vudi1leHBvcnQudHNcIjtcbmV4cG9ydCB0eXBlIHsgRW52RXhwb3J0Rm9ybWF0LCBFbnZDb21tYW5kT3B0aW9ucyB9IGZyb20gXCIuL3NyYy9lbnYtZXhwb3J0LnRzXCI7XG4iXX0=
|
package/lib/src/cli.js
CHANGED
|
@@ -12,32 +12,31 @@
|
|
|
12
12
|
* @module
|
|
13
13
|
*/
|
|
14
14
|
import { appkit } from "@dbx-tools/appkit";
|
|
15
|
+
import { addArgs, parseArgs } from "@dbx-tools/cli-args/args";
|
|
15
16
|
import { log } from "@dbx-tools/shared-core";
|
|
16
17
|
import { Command, CommanderError } from "commander";
|
|
17
|
-
import {
|
|
18
|
+
import { diffEnv, EnvCommandOptionsSchema, formatEnvExport, snapshotEnv, } from "./env-export.js";
|
|
18
19
|
const logger = log.logger("appkit-env");
|
|
19
20
|
/** Run auto-config and write the resulting env delta to stdout. */
|
|
20
21
|
async function writeEnvExport(opts) {
|
|
21
22
|
if (opts.quiet) {
|
|
22
23
|
process.env.LOG_LEVEL = "error";
|
|
23
24
|
}
|
|
24
|
-
const format = opts.format ? parseEnvExportFormat(opts.format) : defaultEnvExportFormat();
|
|
25
25
|
logger.debug("Snapshotting env vars");
|
|
26
26
|
const before = snapshotEnv();
|
|
27
27
|
await appkit.autoConfigure({ autoConfigure: "env" });
|
|
28
28
|
const changes = diffEnv(before, snapshotEnv());
|
|
29
|
-
process.stdout.write(formatEnvExport(changes, format));
|
|
29
|
+
process.stdout.write(formatEnvExport(changes, opts.format));
|
|
30
30
|
}
|
|
31
31
|
/**
|
|
32
32
|
* Build the `env` command on its own, so a host CLI can mount it under a
|
|
33
33
|
* different parent than {@link buildProgram}'s.
|
|
34
34
|
*/
|
|
35
35
|
export function buildEnvCommand(name = "env") {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
.action(writeEnvExport);
|
|
36
|
+
const command = addArgs(new Command(name).description("Run AppKit auto-config and print new/changed env vars."), EnvCommandOptionsSchema, { scope: [] });
|
|
37
|
+
return command.action(async () => {
|
|
38
|
+
await writeEnvExport(parseArgs(command, EnvCommandOptionsSchema));
|
|
39
|
+
});
|
|
41
40
|
}
|
|
42
41
|
/** Build the `dbx appkit` commander program (no side effects until parsed). */
|
|
43
42
|
export function buildProgram(name = "dbx appkit") {
|
|
@@ -52,4 +51,4 @@ export async function runCli(argv) {
|
|
|
52
51
|
await buildProgram().parseAsync(argv);
|
|
53
52
|
}
|
|
54
53
|
export { CommanderError };
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7O0dBWUc7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFcEQsT0FBTyxFQUNMLE9BQU8sRUFDUCx1QkFBdUIsRUFDdkIsZUFBZSxFQUNmLFdBQVcsR0FFWixNQUFNLGlCQUFpQixDQUFDO0FBRXpCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7QUFFeEMsbUVBQW1FO0FBQ25FLEtBQUssVUFBVSxjQUFjLENBQUMsSUFBdUI7SUFDbkQsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDZixPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUN0QyxNQUFNLE1BQU0sR0FBRyxXQUFXLEVBQUUsQ0FBQztJQUM3QixNQUFNLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNyRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFFL0MsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUM5RCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxJQUFJLEdBQUcsS0FBSztJQUMxQyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQ3JCLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQyx3REFBd0QsQ0FBQyxFQUN2Rix1QkFBdUIsRUFDdkIsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQ2QsQ0FBQztJQUNGLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRTtRQUMvQixNQUFNLGNBQWMsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLHVCQUF1QixDQUFDLENBQUMsQ0FBQztJQUNwRSxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCwrRUFBK0U7QUFDL0UsTUFBTSxVQUFVLFlBQVksQ0FBQyxJQUFJLEdBQUcsWUFBWTtJQUM5QyxPQUFPLElBQUksT0FBTyxFQUFFO1NBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDVixXQUFXLENBQUMseUVBQXlFLENBQUM7U0FDdEYsVUFBVSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQzdCLGtCQUFrQixFQUFFLENBQUM7QUFDMUIsQ0FBQztBQUVELCtGQUErRjtBQUMvRixNQUFNLENBQUMsS0FBSyxVQUFVLE1BQU0sQ0FBQyxJQUFjO0lBQ3pDLE1BQU0sWUFBWSxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFFRCxPQUFPLEVBQUUsY0FBYyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGBkYnggYXBwa2l0YCBjb21tYW5kZXIgcHJvZ3JhbS5cbiAqXG4gKiBgZW52YCBydW5zIEFwcEtpdCBhdXRvLWNvbmZpZyBhbmQgcHJpbnRzIHRoZSBlbnYgdmFycyBpdCBhZGRlZCBvciBjaGFuZ2VkIGFzXG4gKiBldmFsLWFibGUgYGV4cG9ydGAgLyBgc2V0YCBsaW5lcyAob3IgSlNPTikgLSBlLmcuIGBldmFsIFwiJChkYnggYXBwa2l0IGVudilcImBcbiAqIHRvIGxvYWQgYSByZXNvbHZlZCBMYWtlYmFzZSBjb25uZWN0aW9uIGludG8geW91ciBzaGVsbC5cbiAqXG4gKiBUaGlzIHBhY2thZ2Ugc2hpcHMgbm8gYmluIG9mIGl0cyBvd246IHtAbGluayBidWlsZFByb2dyYW19IGlzIG1vdW50ZWQgYXMgdGhlXG4gKiBgYXBwa2l0YCBzdWJjb21tYW5kIG9mIHRoZSBzaW5nbGUgYGRieGAgQ0xJIChgQGRieC10b29scy9jbGlgKSwgd2hpY2ggaW1wb3J0c1xuICogdGhpcyBtb2R1bGUgbGF6aWx5IHNvIGBkYnggZGV2YCBuZXZlciBwYXlzIGZvciB0aGUgQXBwS2l0IGxvYWQuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IGFwcGtpdCB9IGZyb20gXCJAZGJ4LXRvb2xzL2FwcGtpdFwiO1xuaW1wb3J0IHsgYWRkQXJncywgcGFyc2VBcmdzIH0gZnJvbSBcIkBkYngtdG9vbHMvY2xpLWFyZ3MvYXJnc1wiO1xuaW1wb3J0IHsgbG9nIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmltcG9ydCB7IENvbW1hbmQsIENvbW1hbmRlckVycm9yIH0gZnJvbSBcImNvbW1hbmRlclwiO1xuXG5pbXBvcnQge1xuICBkaWZmRW52LFxuICBFbnZDb21tYW5kT3B0aW9uc1NjaGVtYSxcbiAgZm9ybWF0RW52RXhwb3J0LFxuICBzbmFwc2hvdEVudixcbiAgdHlwZSBFbnZDb21tYW5kT3B0aW9ucyxcbn0gZnJvbSBcIi4vZW52LWV4cG9ydC50c1wiO1xuXG5jb25zdCBsb2dnZXIgPSBsb2cubG9nZ2VyKFwiYXBwa2l0LWVudlwiKTtcblxuLyoqIFJ1biBhdXRvLWNvbmZpZyBhbmQgd3JpdGUgdGhlIHJlc3VsdGluZyBlbnYgZGVsdGEgdG8gc3Rkb3V0LiAqL1xuYXN5bmMgZnVuY3Rpb24gd3JpdGVFbnZFeHBvcnQob3B0czogRW52Q29tbWFuZE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKG9wdHMucXVpZXQpIHtcbiAgICBwcm9jZXNzLmVudi5MT0dfTEVWRUwgPSBcImVycm9yXCI7XG4gIH1cblxuICBsb2dnZXIuZGVidWcoXCJTbmFwc2hvdHRpbmcgZW52IHZhcnNcIik7XG4gIGNvbnN0IGJlZm9yZSA9IHNuYXBzaG90RW52KCk7XG4gIGF3YWl0IGFwcGtpdC5hdXRvQ29uZmlndXJlKHsgYXV0b0NvbmZpZ3VyZTogXCJlbnZcIiB9KTtcbiAgY29uc3QgY2hhbmdlcyA9IGRpZmZFbnYoYmVmb3JlLCBzbmFwc2hvdEVudigpKTtcblxuICBwcm9jZXNzLnN0ZG91dC53cml0ZShmb3JtYXRFbnZFeHBvcnQoY2hhbmdlcywgb3B0cy5mb3JtYXQpKTtcbn1cblxuLyoqXG4gKiBCdWlsZCB0aGUgYGVudmAgY29tbWFuZCBvbiBpdHMgb3duLCBzbyBhIGhvc3QgQ0xJIGNhbiBtb3VudCBpdCB1bmRlciBhXG4gKiBkaWZmZXJlbnQgcGFyZW50IHRoYW4ge0BsaW5rIGJ1aWxkUHJvZ3JhbX0ncy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkRW52Q29tbWFuZChuYW1lID0gXCJlbnZcIik6IENvbW1hbmQge1xuICBjb25zdCBjb21tYW5kID0gYWRkQXJncyhcbiAgICBuZXcgQ29tbWFuZChuYW1lKS5kZXNjcmlwdGlvbihcIlJ1biBBcHBLaXQgYXV0by1jb25maWcgYW5kIHByaW50IG5ldy9jaGFuZ2VkIGVudiB2YXJzLlwiKSxcbiAgICBFbnZDb21tYW5kT3B0aW9uc1NjaGVtYSxcbiAgICB7IHNjb3BlOiBbXSB9LFxuICApO1xuICByZXR1cm4gY29tbWFuZC5hY3Rpb24oYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHdyaXRlRW52RXhwb3J0KHBhcnNlQXJncyhjb21tYW5kLCBFbnZDb21tYW5kT3B0aW9uc1NjaGVtYSkpO1xuICB9KTtcbn1cblxuLyoqIEJ1aWxkIHRoZSBgZGJ4IGFwcGtpdGAgY29tbWFuZGVyIHByb2dyYW0gKG5vIHNpZGUgZWZmZWN0cyB1bnRpbCBwYXJzZWQpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUHJvZ3JhbShuYW1lID0gXCJkYnggYXBwa2l0XCIpOiBDb21tYW5kIHtcbiAgcmV0dXJuIG5ldyBDb21tYW5kKClcbiAgICAubmFtZShuYW1lKVxuICAgIC5kZXNjcmlwdGlvbihcIkFwcEtpdCBoZWxwZXJzOiByZXNvbHZlIHRoZSBlbnZpcm9ubWVudCBhbiBBcHBLaXQgYXBwIHdvdWxkIHN0YXJ0IHdpdGguXCIpXG4gICAgLmFkZENvbW1hbmQoYnVpbGRFbnZDb21tYW5kKCkpXG4gICAgLnNob3dIZWxwQWZ0ZXJFcnJvcigpO1xufVxuXG4vKiogUGFyc2UgYGFyZ3ZgIGFuZCBydW4gdGhlIG1hdGNoaW5nIGNvbW1hbmQuIFRocm93cyB7QGxpbmsgQ29tbWFuZGVyRXJyb3J9IG9uIGZsYWcgZXJyb3JzLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bkNsaShhcmd2OiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBidWlsZFByb2dyYW0oKS5wYXJzZUFzeW5jKGFyZ3YpO1xufVxuXG5leHBvcnQgeyBDb21tYW5kZXJFcnJvciB9O1xuIl19
|
package/lib/src/env-export.d.ts
CHANGED
|
@@ -4,7 +4,13 @@
|
|
|
4
4
|
*
|
|
5
5
|
* @module
|
|
6
6
|
*/
|
|
7
|
-
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
export declare const EnvExportFormatSchema: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodEnum<{
|
|
9
|
+
json: "json";
|
|
10
|
+
export: "export";
|
|
11
|
+
windows: "windows";
|
|
12
|
+
}>>;
|
|
13
|
+
export type EnvExportFormat = z.output<typeof EnvExportFormatSchema>;
|
|
8
14
|
/** Shallow copy of the current process environment. */
|
|
9
15
|
export declare function snapshotEnv(env?: NodeJS.ProcessEnv): Record<string, string>;
|
|
10
16
|
/**
|
|
@@ -16,6 +22,15 @@ export declare function snapshotEnv(env?: NodeJS.ProcessEnv): Record<string, str
|
|
|
16
22
|
export declare function diffEnv(before: Record<string, string>, after: Record<string, string>): Record<string, string>;
|
|
17
23
|
/** Select Windows `set` output on Windows and POSIX `export` output elsewhere. */
|
|
18
24
|
export declare function defaultEnvExportFormat(platform?: NodeJS.Platform): EnvExportFormat;
|
|
25
|
+
export declare const EnvCommandOptionsSchema: z.ZodObject<{
|
|
26
|
+
format: z.ZodDefault<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodEnum<{
|
|
27
|
+
json: "json";
|
|
28
|
+
export: "export";
|
|
29
|
+
windows: "windows";
|
|
30
|
+
}>>>;
|
|
31
|
+
quiet: z.ZodDefault<z.ZodBoolean>;
|
|
32
|
+
}, z.core.$strict>;
|
|
33
|
+
export type EnvCommandOptions = z.output<typeof EnvCommandOptionsSchema>;
|
|
19
34
|
/**
|
|
20
35
|
* Format env entries for the requested output style. An empty map prints
|
|
21
36
|
* nothing (no trailing newline).
|
package/lib/src/env-export.js
CHANGED
|
@@ -4,6 +4,19 @@
|
|
|
4
4
|
*
|
|
5
5
|
* @module
|
|
6
6
|
*/
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
export const EnvExportFormatSchema = z
|
|
9
|
+
.preprocess((value) => {
|
|
10
|
+
if (typeof value !== "string")
|
|
11
|
+
return value;
|
|
12
|
+
const normalized = value.trim().toLowerCase();
|
|
13
|
+
if (["export", "shell", "nix", "bash"].includes(normalized))
|
|
14
|
+
return "export";
|
|
15
|
+
if (["windows", "win", "cmd"].includes(normalized))
|
|
16
|
+
return "windows";
|
|
17
|
+
return normalized;
|
|
18
|
+
}, z.enum(["export", "windows", "json"]))
|
|
19
|
+
.describe("Environment export output format.");
|
|
7
20
|
/** Shallow copy of the current process environment. */
|
|
8
21
|
export function snapshotEnv(env = process.env) {
|
|
9
22
|
const out = {};
|
|
@@ -37,6 +50,13 @@ export function diffEnv(before, after) {
|
|
|
37
50
|
export function defaultEnvExportFormat(platform = process.platform) {
|
|
38
51
|
return platform === "win32" ? "windows" : "export";
|
|
39
52
|
}
|
|
53
|
+
export const EnvCommandOptionsSchema = z
|
|
54
|
+
.object({
|
|
55
|
+
format: EnvExportFormatSchema.default(defaultEnvExportFormat()).describe("Output format: export, windows, or json."),
|
|
56
|
+
quiet: z.boolean().default(false).describe("Suppress auto-config log output."),
|
|
57
|
+
})
|
|
58
|
+
.strict()
|
|
59
|
+
.describe("Options for exporting the AppKit auto-config environment.");
|
|
40
60
|
function escapeExportValue(value) {
|
|
41
61
|
return value
|
|
42
62
|
.replace(/\\/g, "\\\\")
|
|
@@ -74,19 +94,6 @@ export function formatEnvExport(env, format) {
|
|
|
74
94
|
}
|
|
75
95
|
/** Normalize CLI format aliases to a supported export format. */
|
|
76
96
|
export function parseEnvExportFormat(value) {
|
|
77
|
-
|
|
78
|
-
if (normalized === "export" ||
|
|
79
|
-
normalized === "shell" ||
|
|
80
|
-
normalized === "nix" ||
|
|
81
|
-
normalized === "bash") {
|
|
82
|
-
return "export";
|
|
83
|
-
}
|
|
84
|
-
if (normalized === "windows" || normalized === "win" || normalized === "cmd") {
|
|
85
|
-
return "windows";
|
|
86
|
-
}
|
|
87
|
-
if (normalized === "json") {
|
|
88
|
-
return "json";
|
|
89
|
-
}
|
|
90
|
-
throw new Error(`Unknown format '${value}'. Use export, windows, or json.`);
|
|
97
|
+
return EnvExportFormatSchema.parse(value);
|
|
91
98
|
}
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52LWV4cG9ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbnYtZXhwb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBSUgsdURBQXVEO0FBQ3ZELE1BQU0sVUFBVSxXQUFXLENBQUMsTUFBeUIsT0FBTyxDQUFDLEdBQUc7SUFDOUQsTUFBTSxHQUFHLEdBQTJCLEVBQUUsQ0FBQztJQUN2QyxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQy9DLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hCLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxPQUFPLENBQ3JCLE1BQThCLEVBQzlCLEtBQTZCO0lBRTdCLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEUsTUFBTSxHQUFHLEdBQTJCLEVBQUUsQ0FBQztJQUN2QyxLQUFLLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ25DLHNGQUFzRjtRQUN0RixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQy9CLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDOUIsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDbEIsR0FBRyxDQUFD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RUFBRSxDQUFDO1FBQzdFLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFDRCxJQUFJLFVBQVUsS0FBSyxNQUFNLEVBQUUsQ0FBQztRQUMxQixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsS0FBSyxrQ0FBa0MsQ0FBQyxDQUFDO0FBQzlFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNuYXBzaG90IGBwcm9jZXNzLmVudmAsIGRpZmYgYWZ0ZXIgYXV0by1jb25maWcsIGFuZCBmb3JtYXQgZGVsdGFzIGFzXG4gKiBldmFsLWFibGUgc2hlbGwgYGV4cG9ydGAgLyBXaW5kb3dzIGBzZXRgIGxpbmVzIG9yIEpTT04uXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmV4cG9ydCB0eXBlIEVudkV4cG9ydEZvcm1hdCA9IFwiZXhwb3J0XCIgfCBcIndpbmRvd3NcIiB8IFwianNvblwiO1xuXG4vKiogU2hhbGxvdyBjb3B5IG9mIHRoZSBjdXJyZW50IHByb2Nlc3MgZW52aXJvbm1lbnQuICovXG5leHBvcnQgZnVuY3Rpb24gc25hcHNob3RFbnYoZW52OiBOb2RlSlMuUHJvY2Vzc0VudiA9IHByb2Nlc3MuZW52KTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gIGNvbnN0IG91dDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhlbnYpKSB7XG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG91dFtrZXldID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBvdXQ7XG59XG5cbi8qKlxuICogS2V5cyB3aG9zZSB2YWx1ZXMgd2VyZSBhZGRlZCwgY2hhbmdlZCwgb3IgY2xlYXJlZCBiZXR3ZWVuIHNuYXBzaG90cy4gQSBrZXlcbiAqIHRoYXQgd2VudCBmcm9tIGEgbm9uLWJsYW5rIHZhbHVlIHRvIGJsYW5rL3JlbW92ZWQgaXMgZW1pdHRlZCB3aXRoIGFuIGVtcHR5XG4gKiB2YWx1ZSBzbyBpdCBjYW4gYmUgdW5zZXQuIEtleXMgdGhhdCB3ZXJlIGFscmVhZHkgYmxhbmsvYWJzZW50IGFuZCBzdGF5ZWQgdGhhdFxuICogd2F5IGFyZSBvbWl0dGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlmZkVudihcbiAgYmVmb3JlOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICBhZnRlcjogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbik6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICBjb25zdCBrZXlzID0gbmV3IFNldChbLi4uT2JqZWN0LmtleXMoYmVmb3JlKSwgLi4uT2JqZWN0LmtleXMoYWZ0ZXIpXSk7XG4gIGNvbnN0IG91dDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICBmb3IgKGNvbnN0IGtleSBvZiBbLi4ua2V5c10uc29ydCgpKSB7XG4gICAgLy8gVHJlYXQgYSByZW1vdmVkIGtleSBhcyBibGFuayBzbyBhIG5vbi1ibGFuayAtPiBibGFuay9yZW1vdmVkIHRyYW5zaXRpb24gaXMgYSBkZWx0YS5cbiAgICBjb25zdCBwcmV2ID0gYmVmb3JlW2tleV0gPz8gXCJcIjtcbiAgICBjb25zdCBuZXh0ID0gYWZ0ZXJba2V5XSA/PyBcIlwiO1xuICAgIGlmIChuZXh0ICE9PSBwcmV2KSB7XG4gICAgICBvdXRba2V5XSA9IG5leHQ7XG4gICAgfVxuICB9XG4gIHJldHVybiBvdXQ7XG59XG5cbi8qKiBTZWxlY3QgV2luZG93cyBgc2V0YCBvdXRwdXQgb24gV2luZG93cyBhbmQgUE9TSVggYGV4cG9ydGAgb3V0cHV0IGVsc2V3aGVyZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0RW52RXhwb3J0Rm9ybWF0KFxuICBwbGF0Zm9ybTogTm9kZUpTLlBsYXRmb3JtID0gcHJvY2Vzcy5wbGF0Zm9ybSxcbik6IEVudkV4cG9ydEZvcm1hdCB7XG4gIHJldHVybiBwbGF0Zm9ybSA9PT0gXCJ3aW4zMlwiID8gXCJ3aW5kb3dzXCIgOiBcImV4cG9ydFwiO1xufVxuXG5mdW5jdGlvbiBlc2NhcGVFeHBvcnRWYWx1ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHZhbHVlXG4gICAgLnJlcGxhY2UoL1xcXFwvZywgXCJcXFxcXFxcXFwiKVxuICAgIC5yZXBsYWNlKC9cIi9nLCAnXFxcXFwiJylcbiAgICAucmVwbGFjZSgvXFwkL2csIFwiXFxcXCRcIilcbiAgICAucmVwbGFjZSgvYC9nLCBcIlxcXFxgXCIpO1xufVxuXG5mdW5jdGlvbiBlc2NhcGVXaW5kb3dzU2V0VmFsdWUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICgvW1xcc1wiJnw8Pl5dLy50ZXN0KHZhbHVlKSkge1xuICAgIHJldHVybiBgXCIke3ZhbHVlLnJlcGxhY2UoL1wiL2csICdcIlwiJyl9XCJgO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuLyoqXG4gKiBGb3JtYXQgZW52IGVudHJpZXMgZm9yIHRoZSByZXF1ZXN0ZWQgb3V0cHV0IHN0eWxlLiBBbiBlbXB0eSBtYXAgcHJpbnRzXG4gKiBub3RoaW5nIChubyB0cmFpbGluZyBuZXdsaW5lKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEVudkV4cG9ydChlbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sIGZvcm1hdDogRW52RXhwb3J0Rm9ybWF0KTogc3RyaW5nIHtcbiAgY29uc3QgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKGVudikuc29ydCgoW2FdLCBbYl0pID0+IGEubG9jYWxlQ29tcGFyZShiKSk7XG4gIGlmIChlbnRyaWVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgc3dpdGNoIChmb3JtYXQpIHtcbiAgICBjYXNlIFwianNvblwiOlxuICAgICAgcmV0dXJuIGAke0pTT04uc3RyaW5naWZ5KE9iamVjdC5mcm9tRW50cmllcyhlbnRyaWVzKSwgbnVsbCwgMil9XFxuYDtcbiAgICBjYXNlIFwid2luZG93c1wiOlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgZW50cmllcy5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYHNldCAke2tleX09JHtlc2NhcGVXaW5kb3dzU2V0VmFsdWUodmFsdWUpfWApLmpvaW4oXCJcXG5cIikgK1xuICAgICAgICBcIlxcblwiXG4gICAgICApO1xuICAgIGNhc2UgXCJleHBvcnRcIjpcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGVudHJpZXMubWFwKChba2V5LCB2YWx1ZV0pID0+IGBleHBvcnQgJHtrZXl9PVwiJHtlc2NhcGVFeHBvcnRWYWx1ZSh2YWx1ZSl9XCJgKS5qb2luKFwiXFxuXCIpICtcbiAgICAgICAgXCJcXG5cIlxuICAgICAgKTtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGVudiBleHBvcnQgZm9ybWF0OiAke2Zvcm1hdCBzYXRpc2ZpZXMgbmV2ZXJ9YCk7XG4gIH1cbn1cblxuLyoqIE5vcm1hbGl6ZSBDTEkgZm9ybWF0IGFsaWFzZXMgdG8gYSBzdXBwb3J0ZWQgZXhwb3J0IGZvcm1hdC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUVudkV4cG9ydEZvcm1hdCh2YWx1ZTogc3RyaW5nKTogRW52RXhwb3J0Rm9ybWF0IHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IHZhbHVlLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICBpZiAoXG4gICAgbm9ybWFsaXplZCA9PT0gXCJleHBvcnRcIiB8fFxuICAgIG5vcm1hbGl6ZWQgPT09IFwic2hlbGxcIiB8fFxuICAgIG5vcm1hbGl6ZWQgPT09IFwibml4XCIgfHxcbiAgICBub3JtYWxpemVkID09PSBcImJhc2hcIlxuICApIHtcbiAgICByZXR1cm4gXCJleHBvcnRcIjtcbiAgfVxuICBpZiAobm9ybWFsaXplZCA9PT0gXCJ3aW5kb3dzXCIgfHwgbm9ybWFsaXplZCA9PT0gXCJ3aW5cIiB8fCBub3JtYWxpemVkID09PSBcImNtZFwiKSB7XG4gICAgcmV0dXJuIFwid2luZG93c1wiO1xuICB9XG4gIGlmIChub3JtYWxpemVkID09PSBcImpzb25cIikge1xuICAgIHJldHVybiBcImpzb25cIjtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gZm9ybWF0ICcke3ZhbHVlfScuIFVzZSBleHBvcnQsIHdpbmRvd3MsIG9yIGpzb24uYCk7XG59XG4iXX0=
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52LWV4cG9ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbnYtZXhwb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4QixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDO0tBQ25DLFVBQVUsQ0FDVCxDQUFDLEtBQUssRUFBRSxFQUFFO0lBQ1IsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDNUMsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzlDLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1FBQUUsT0FBTyxRQUFRLENBQUM7SUFDN0UsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQ3JFLE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUMsRUFDRCxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUN0QztLQUNBLFFBQVEsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0FBSWpELHVEQUF1RDtBQUN2RCxNQUFNLFVBQVUsV0FBVyxDQUFDLE1BQXlCLE9BQU8sQ0FBQyxHQUFHO0lBQzlELE1BQU0sR0FBRyxHQUEyQixFQUFFLENBQUM7SUFDdkMsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMvQyxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN4QixH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U0FBUyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDckUsS0FBSyxTQUFTO1lBQ1osT0FBTyxDQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxHQUFHLElBQUkscUJBQXFCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ3RGLElBQUksQ0FDTCxDQUFDO1FBQ0osS0FBSyxRQUFRO1lBQ1gsT0FBTyxDQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxHQUFHLEtBQUssaUJBQWlCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ3ZGLElBQUksQ0FDTCxDQUFDO1FBQ0o7WUFDRSxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixNQUFzQixFQUFFLENBQUMsQ0FBQztJQUM1RSxDQUFDO0FBQ0gsQ0FBQztBQUVELGlFQUFpRTtBQUNqRSxNQUFNLFVBQVUsb0JBQW9CLENBQUMsS0FBYTtJQUNoRCxPQUFPLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTbmFwc2hvdCBgcHJvY2Vzcy5lbnZgLCBkaWZmIGFmdGVyIGF1dG8tY29uZmlnLCBhbmQgZm9ybWF0IGRlbHRhcyBhc1xuICogZXZhbC1hYmxlIHNoZWxsIGBleHBvcnRgIC8gV2luZG93cyBgc2V0YCBsaW5lcyBvciBKU09OLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG5leHBvcnQgY29uc3QgRW52RXhwb3J0Rm9ybWF0U2NoZW1hID0gelxuICAucHJlcHJvY2VzcyhcbiAgICAodmFsdWUpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIpIHJldHVybiB2YWx1ZTtcbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB2YWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmIChbXCJleHBvcnRcIiwgXCJzaGVsbFwiLCBcIm5peFwiLCBcImJhc2hcIl0uaW5jbHVkZXMobm9ybWFsaXplZCkpIHJldHVybiBcImV4cG9ydFwiO1xuICAgICAgaWYgKFtcIndpbmRvd3NcIiwgXCJ3aW5cIiwgXCJjbWRcIl0uaW5jbHVkZXMobm9ybWFsaXplZCkpIHJldHVybiBcIndpbmRvd3NcIjtcbiAgICAgIHJldHVybiBub3JtYWxpemVkO1xuICAgIH0sXG4gICAgei5lbnVtKFtcImV4cG9ydFwiLCBcIndpbmRvd3NcIiwgXCJqc29uXCJdKSxcbiAgKVxuICAuZGVzY3JpYmUoXCJFbnZpcm9ubWVudCBleHBvcnQgb3V0cHV0IGZvcm1hdC5cIik7XG5cbmV4cG9ydCB0eXBlIEVudkV4cG9ydEZvcm1hdCA9IHoub3V0cHV0PHR5cGVvZiBFbnZFeHBvcnRGb3JtYXRTY2hlbWE+O1xuXG4vKiogU2hhbGxvdyBjb3B5IG9mIHRoZSBjdXJyZW50IHByb2Nlc3MgZW52aXJvbm1lbnQuICovXG5leHBvcnQgZnVuY3Rpb24gc25hcHNob3RFbnYoZW52OiBOb2RlSlMuUHJvY2Vzc0VudiA9IHByb2Nlc3MuZW52KTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gIGNvbnN0IG91dDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhlbnYpKSB7XG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG91dFtrZXldID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBvdXQ7XG59XG5cbi8qKlxuICogS2V5cyB3aG9zZSB2YWx1ZXMgd2VyZSBhZGRlZCwgY2hhbmdlZCwgb3IgY2xlYXJlZCBiZXR3ZWVuIHNuYXBzaG90cy4gQSBrZXlcbiAqIHRoYXQgd2VudCBmcm9tIGEgbm9uLWJsYW5rIHZhbHVlIHRvIGJsYW5rL3JlbW92ZWQgaXMgZW1pdHRlZCB3aXRoIGFuIGVtcHR5XG4gKiB2YWx1ZSBzbyBpdCBjYW4gYmUgdW5zZXQuIEtleXMgdGhhdCB3ZXJlIGFscmVhZHkgYmxhbmsvYWJzZW50IGFuZCBzdGF5ZWQgdGhhdFxuICogd2F5IGFyZSBvbWl0dGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlmZkVudihcbiAgYmVmb3JlOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICBhZnRlcjogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbik6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICBjb25zdCBrZXlzID0gbmV3IFNldChbLi4uT2JqZWN0LmtleXMoYmVmb3JlKSwgLi4uT2JqZWN0LmtleXMoYWZ0ZXIpXSk7XG4gIGNvbnN0IG91dDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICBmb3IgKGNvbnN0IGtleSBvZiBbLi4ua2V5c10uc29ydCgpKSB7XG4gICAgLy8gVHJlYXQgYSByZW1vdmVkIGtleSBhcyBibGFuayBzbyBhIG5vbi1ibGFuayAtPiBibGFuay9yZW1vdmVkIHRyYW5zaXRpb24gaXMgYSBkZWx0YS5cbiAgICBjb25zdCBwcmV2ID0gYmVmb3JlW2tleV0gPz8gXCJcIjtcbiAgICBjb25zdCBuZXh0ID0gYWZ0ZXJba2V5XSA/PyBcIlwiO1xuICAgIGlmIChuZXh0ICE9PSBwcmV2KSB7XG4gICAgICBvdXRba2V5XSA9IG5leHQ7XG4gICAgfVxuICB9XG4gIHJldHVybiBvdXQ7XG59XG5cbi8qKiBTZWxlY3QgV2luZG93cyBgc2V0YCBvdXRwdXQgb24gV2luZG93cyBhbmQgUE9TSVggYGV4cG9ydGAgb3V0cHV0IGVsc2V3aGVyZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0RW52RXhwb3J0Rm9ybWF0KFxuICBwbGF0Zm9ybTogTm9kZUpTLlBsYXRmb3JtID0gcHJvY2Vzcy5wbGF0Zm9ybSxcbik6IEVudkV4cG9ydEZvcm1hdCB7XG4gIHJldHVybiBwbGF0Zm9ybSA9PT0gXCJ3aW4zMlwiID8gXCJ3aW5kb3dzXCIgOiBcImV4cG9ydFwiO1xufVxuXG5leHBvcnQgY29uc3QgRW52Q29tbWFuZE9wdGlvbnNTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIGZvcm1hdDogRW52RXhwb3J0Rm9ybWF0U2NoZW1hLmRlZmF1bHQoZGVmYXVsdEVudkV4cG9ydEZvcm1hdCgpKS5kZXNjcmliZShcbiAgICAgIFwiT3V0cHV0IGZvcm1hdDogZXhwb3J0LCB3aW5kb3dzLCBvciBqc29uLlwiLFxuICAgICksXG4gICAgcXVpZXQ6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLmRlc2NyaWJlKFwiU3VwcHJlc3MgYXV0by1jb25maWcgbG9nIG91dHB1dC5cIiksXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAuZGVzY3JpYmUoXCJPcHRpb25zIGZvciBleHBvcnRpbmcgdGhlIEFwcEtpdCBhdXRvLWNvbmZpZyBlbnZpcm9ubWVudC5cIik7XG5cbmV4cG9ydCB0eXBlIEVudkNvbW1hbmRPcHRpb25zID0gei5vdXRwdXQ8dHlwZW9mIEVudkNvbW1hbmRPcHRpb25zU2NoZW1hPjtcblxuZnVuY3Rpb24gZXNjYXBlRXhwb3J0VmFsdWUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB2YWx1ZVxuICAgIC5yZXBsYWNlKC9cXFxcL2csIFwiXFxcXFxcXFxcIilcbiAgICAucmVwbGFjZSgvXCIvZywgJ1xcXFxcIicpXG4gICAgLnJlcGxhY2UoL1xcJC9nLCBcIlxcXFwkXCIpXG4gICAgLnJlcGxhY2UoL2AvZywgXCJcXFxcYFwiKTtcbn1cblxuZnVuY3Rpb24gZXNjYXBlV2luZG93c1NldFZhbHVlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoL1tcXHNcIiZ8PD5eXS8udGVzdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gYFwiJHt2YWx1ZS5yZXBsYWNlKC9cIi9nLCAnXCJcIicpfVwiYDtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbi8qKlxuICogRm9ybWF0IGVudiBlbnRyaWVzIGZvciB0aGUgcmVxdWVzdGVkIG91dHB1dCBzdHlsZS4gQW4gZW1wdHkgbWFwIHByaW50c1xuICogbm90aGluZyAobm8gdHJhaWxpbmcgbmV3bGluZSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRFbnZFeHBvcnQoZW52OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LCBmb3JtYXQ6IEVudkV4cG9ydEZvcm1hdCk6IHN0cmluZyB7XG4gIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhlbnYpLnNvcnQoKFthXSwgW2JdKSA9PiBhLmxvY2FsZUNvbXBhcmUoYikpO1xuICBpZiAoZW50cmllcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHN3aXRjaCAoZm9ybWF0KSB7XG4gICAgY2FzZSBcImpzb25cIjpcbiAgICAgIHJldHVybiBgJHtKU09OLnN0cmluZ2lmeShPYmplY3QuZnJvbUVudHJpZXMoZW50cmllcyksIG51bGwsIDIpfVxcbmA7XG4gICAgY2FzZSBcIndpbmRvd3NcIjpcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGVudHJpZXMubWFwKChba2V5LCB2YWx1ZV0pID0+IGBzZXQgJHtrZXl9PSR7ZXNjYXBlV2luZG93c1NldFZhbHVlKHZhbHVlKX1gKS5qb2luKFwiXFxuXCIpICtcbiAgICAgICAgXCJcXG5cIlxuICAgICAgKTtcbiAgICBjYXNlIFwiZXhwb3J0XCI6XG4gICAgICByZXR1cm4gKFxuICAgICAgICBlbnRyaWVzLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBgZXhwb3J0ICR7a2V5fT1cIiR7ZXNjYXBlRXhwb3J0VmFsdWUodmFsdWUpfVwiYCkuam9pbihcIlxcblwiKSArXG4gICAgICAgIFwiXFxuXCJcbiAgICAgICk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBlbnYgZXhwb3J0IGZvcm1hdDogJHtmb3JtYXQgc2F0aXNmaWVzIG5ldmVyfWApO1xuICB9XG59XG5cbi8qKiBOb3JtYWxpemUgQ0xJIGZvcm1hdCBhbGlhc2VzIHRvIGEgc3VwcG9ydGVkIGV4cG9ydCBmb3JtYXQuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VFbnZFeHBvcnRGb3JtYXQodmFsdWU6IHN0cmluZyk6IEVudkV4cG9ydEZvcm1hdCB7XG4gIHJldHVybiBFbnZFeHBvcnRGb3JtYXRTY2hlbWEucGFyc2UodmFsdWUpO1xufVxuIl19
|
package/package.json
CHANGED
|
@@ -24,9 +24,11 @@
|
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@databricks/appkit": "0.81.0",
|
|
27
|
-
"@dbx-tools/appkit": "^0.9.
|
|
28
|
-
"@dbx-tools/
|
|
29
|
-
"
|
|
27
|
+
"@dbx-tools/appkit": "^0.9.43",
|
|
28
|
+
"@dbx-tools/cli-args": "^0.9.43",
|
|
29
|
+
"@dbx-tools/shared-core": "^0.9.43",
|
|
30
|
+
"commander": "^15.0.0",
|
|
31
|
+
"zod": "4.3.6"
|
|
30
32
|
},
|
|
31
33
|
"main": "./lib/index.js",
|
|
32
34
|
"license": "Apache-2.0",
|
|
@@ -50,7 +52,7 @@
|
|
|
50
52
|
"./package.json": "./package.json"
|
|
51
53
|
}
|
|
52
54
|
},
|
|
53
|
-
"version": "0.9.
|
|
55
|
+
"version": "0.9.43",
|
|
54
56
|
"types": "./lib/index.d.ts",
|
|
55
57
|
"dbxToolsConfig": {
|
|
56
58
|
"tags": [
|
package/src/cli.ts
CHANGED
|
@@ -13,38 +13,32 @@
|
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
15
|
import { appkit } from "@dbx-tools/appkit";
|
|
16
|
+
import { addArgs, parseArgs } from "@dbx-tools/cli-args/args";
|
|
16
17
|
import { log } from "@dbx-tools/shared-core";
|
|
17
18
|
import { Command, CommanderError } from "commander";
|
|
18
19
|
|
|
19
20
|
import {
|
|
20
|
-
defaultEnvExportFormat,
|
|
21
21
|
diffEnv,
|
|
22
|
+
EnvCommandOptionsSchema,
|
|
22
23
|
formatEnvExport,
|
|
23
|
-
parseEnvExportFormat,
|
|
24
24
|
snapshotEnv,
|
|
25
|
+
type EnvCommandOptions,
|
|
25
26
|
} from "./env-export.ts";
|
|
26
27
|
|
|
27
28
|
const logger = log.logger("appkit-env");
|
|
28
29
|
|
|
29
|
-
/** Options for the `env` command. */
|
|
30
|
-
interface EnvOpts {
|
|
31
|
-
format?: string;
|
|
32
|
-
quiet?: boolean;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
30
|
/** Run auto-config and write the resulting env delta to stdout. */
|
|
36
|
-
async function writeEnvExport(opts:
|
|
31
|
+
async function writeEnvExport(opts: EnvCommandOptions): Promise<void> {
|
|
37
32
|
if (opts.quiet) {
|
|
38
33
|
process.env.LOG_LEVEL = "error";
|
|
39
34
|
}
|
|
40
35
|
|
|
41
|
-
const format = opts.format ? parseEnvExportFormat(opts.format) : defaultEnvExportFormat();
|
|
42
36
|
logger.debug("Snapshotting env vars");
|
|
43
37
|
const before = snapshotEnv();
|
|
44
38
|
await appkit.autoConfigure({ autoConfigure: "env" });
|
|
45
39
|
const changes = diffEnv(before, snapshotEnv());
|
|
46
40
|
|
|
47
|
-
process.stdout.write(formatEnvExport(changes, format));
|
|
41
|
+
process.stdout.write(formatEnvExport(changes, opts.format));
|
|
48
42
|
}
|
|
49
43
|
|
|
50
44
|
/**
|
|
@@ -52,14 +46,14 @@ async function writeEnvExport(opts: EnvOpts): Promise<void> {
|
|
|
52
46
|
* different parent than {@link buildProgram}'s.
|
|
53
47
|
*/
|
|
54
48
|
export function buildEnvCommand(name = "env"): Command {
|
|
55
|
-
|
|
56
|
-
.description("Run AppKit auto-config and print new/changed env vars.")
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
49
|
+
const command = addArgs(
|
|
50
|
+
new Command(name).description("Run AppKit auto-config and print new/changed env vars."),
|
|
51
|
+
EnvCommandOptionsSchema,
|
|
52
|
+
{ scope: [] },
|
|
53
|
+
);
|
|
54
|
+
return command.action(async () => {
|
|
55
|
+
await writeEnvExport(parseArgs(command, EnvCommandOptionsSchema));
|
|
56
|
+
});
|
|
63
57
|
}
|
|
64
58
|
|
|
65
59
|
/** Build the `dbx appkit` commander program (no side effects until parsed). */
|
package/src/env-export.ts
CHANGED
|
@@ -5,7 +5,22 @@
|
|
|
5
5
|
* @module
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
|
|
10
|
+
export const EnvExportFormatSchema = z
|
|
11
|
+
.preprocess(
|
|
12
|
+
(value) => {
|
|
13
|
+
if (typeof value !== "string") return value;
|
|
14
|
+
const normalized = value.trim().toLowerCase();
|
|
15
|
+
if (["export", "shell", "nix", "bash"].includes(normalized)) return "export";
|
|
16
|
+
if (["windows", "win", "cmd"].includes(normalized)) return "windows";
|
|
17
|
+
return normalized;
|
|
18
|
+
},
|
|
19
|
+
z.enum(["export", "windows", "json"]),
|
|
20
|
+
)
|
|
21
|
+
.describe("Environment export output format.");
|
|
22
|
+
|
|
23
|
+
export type EnvExportFormat = z.output<typeof EnvExportFormatSchema>;
|
|
9
24
|
|
|
10
25
|
/** Shallow copy of the current process environment. */
|
|
11
26
|
export function snapshotEnv(env: NodeJS.ProcessEnv = process.env): Record<string, string> {
|
|
@@ -48,6 +63,18 @@ export function defaultEnvExportFormat(
|
|
|
48
63
|
return platform === "win32" ? "windows" : "export";
|
|
49
64
|
}
|
|
50
65
|
|
|
66
|
+
export const EnvCommandOptionsSchema = z
|
|
67
|
+
.object({
|
|
68
|
+
format: EnvExportFormatSchema.default(defaultEnvExportFormat()).describe(
|
|
69
|
+
"Output format: export, windows, or json.",
|
|
70
|
+
),
|
|
71
|
+
quiet: z.boolean().default(false).describe("Suppress auto-config log output."),
|
|
72
|
+
})
|
|
73
|
+
.strict()
|
|
74
|
+
.describe("Options for exporting the AppKit auto-config environment.");
|
|
75
|
+
|
|
76
|
+
export type EnvCommandOptions = z.output<typeof EnvCommandOptionsSchema>;
|
|
77
|
+
|
|
51
78
|
function escapeExportValue(value: string): string {
|
|
52
79
|
return value
|
|
53
80
|
.replace(/\\/g, "\\\\")
|
|
@@ -93,20 +120,5 @@ export function formatEnvExport(env: Record<string, string>, format: EnvExportFo
|
|
|
93
120
|
|
|
94
121
|
/** Normalize CLI format aliases to a supported export format. */
|
|
95
122
|
export function parseEnvExportFormat(value: string): EnvExportFormat {
|
|
96
|
-
|
|
97
|
-
if (
|
|
98
|
-
normalized === "export" ||
|
|
99
|
-
normalized === "shell" ||
|
|
100
|
-
normalized === "nix" ||
|
|
101
|
-
normalized === "bash"
|
|
102
|
-
) {
|
|
103
|
-
return "export";
|
|
104
|
-
}
|
|
105
|
-
if (normalized === "windows" || normalized === "win" || normalized === "cmd") {
|
|
106
|
-
return "windows";
|
|
107
|
-
}
|
|
108
|
-
if (normalized === "json") {
|
|
109
|
-
return "json";
|
|
110
|
-
}
|
|
111
|
-
throw new Error(`Unknown format '${value}'. Use export, windows, or json.`);
|
|
123
|
+
return EnvExportFormatSchema.parse(value);
|
|
112
124
|
}
|