getmyenv 0.5.3 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +57 -13
- package/dist/bin.js +1 -24
- package/dist/bin.js.map +1 -1
- package/dist/cli.d.ts +10 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +179 -106
- package/dist/cli.js.map +1 -1
- package/dist/commands/backup.d.ts +2 -1
- package/dist/commands/backup.d.ts.map +1 -1
- package/dist/commands/backup.js +15 -19
- package/dist/commands/backup.js.map +1 -1
- package/dist/commands/claim.d.ts +2 -1
- package/dist/commands/claim.d.ts.map +1 -1
- package/dist/commands/claim.js +114 -80
- package/dist/commands/claim.js.map +1 -1
- package/dist/commands/context.d.ts +11 -0
- package/dist/commands/context.d.ts.map +1 -0
- package/dist/commands/context.js +53 -0
- package/dist/commands/context.js.map +1 -0
- package/dist/commands/export.d.ts +11 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +67 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/guest.d.ts +9 -3
- package/dist/commands/guest.d.ts.map +1 -1
- package/dist/commands/guest.js +32 -28
- package/dist/commands/guest.js.map +1 -1
- package/dist/commands/import.d.ts +26 -0
- package/dist/commands/import.d.ts.map +1 -0
- package/dist/commands/import.js +168 -0
- package/dist/commands/import.js.map +1 -0
- package/dist/commands/lock.d.ts +5 -0
- package/dist/commands/lock.d.ts.map +1 -0
- package/dist/commands/lock.js +18 -0
- package/dist/commands/lock.js.map +1 -0
- package/dist/commands/ls.d.ts +6 -0
- package/dist/commands/ls.d.ts.map +1 -0
- package/dist/commands/ls.js +37 -0
- package/dist/commands/ls.js.map +1 -0
- package/dist/commands/restore.d.ts +7 -2
- package/dist/commands/restore.d.ts.map +1 -1
- package/dist/commands/restore.js +57 -49
- package/dist/commands/restore.js.map +1 -1
- package/dist/commands/run.d.ts +7 -5
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +98 -187
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/set.d.ts +16 -0
- package/dist/commands/set.d.ts.map +1 -0
- package/dist/commands/set.js +111 -0
- package/dist/commands/set.js.map +1 -0
- package/dist/commands/start.d.ts +16 -0
- package/dist/commands/start.d.ts.map +1 -0
- package/dist/commands/start.js +118 -0
- package/dist/commands/start.js.map +1 -0
- package/dist/commands/status.d.ts +5 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +40 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/unlink.d.ts +9 -0
- package/dist/commands/unlink.d.ts.map +1 -0
- package/dist/commands/unlink.js +70 -0
- package/dist/commands/unlink.js.map +1 -0
- package/dist/lib/api-url.d.ts +12 -0
- package/dist/lib/api-url.d.ts.map +1 -1
- package/dist/lib/api-url.js +32 -0
- package/dist/lib/api-url.js.map +1 -1
- package/dist/lib/api.d.ts +35 -23
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js +23 -59
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/authorize.d.ts +13 -6
- package/dist/lib/authorize.d.ts.map +1 -1
- package/dist/lib/authorize.js +68 -61
- package/dist/lib/authorize.js.map +1 -1
- package/dist/lib/bootstrap.d.ts +18 -15
- package/dist/lib/bootstrap.d.ts.map +1 -1
- package/dist/lib/bootstrap.js +59 -69
- package/dist/lib/bootstrap.js.map +1 -1
- package/dist/lib/confirm.js +4 -4
- package/dist/lib/confirm.js.map +1 -1
- package/dist/lib/context.d.ts +12 -0
- package/dist/lib/context.d.ts.map +1 -0
- package/dist/lib/context.js +43 -0
- package/dist/lib/context.js.map +1 -0
- package/dist/lib/credentials.d.ts +8 -13
- package/dist/lib/credentials.d.ts.map +1 -1
- package/dist/lib/credentials.js +2 -9
- package/dist/lib/credentials.js.map +1 -1
- package/dist/lib/fs.d.ts +26 -40
- package/dist/lib/fs.d.ts.map +1 -1
- package/dist/lib/fs.js +112 -326
- package/dist/lib/fs.js.map +1 -1
- package/dist/lib/guest-key.d.ts +2 -5
- package/dist/lib/guest-key.d.ts.map +1 -1
- package/dist/lib/guest-key.js +9 -2
- package/dist/lib/guest-key.js.map +1 -1
- package/dist/lib/identity.d.ts +9 -11
- package/dist/lib/identity.d.ts.map +1 -1
- package/dist/lib/identity.js +34 -24
- package/dist/lib/identity.js.map +1 -1
- package/dist/lib/keychain.d.ts +21 -0
- package/dist/lib/keychain.d.ts.map +1 -0
- package/dist/lib/keychain.js +124 -0
- package/dist/lib/keychain.js.map +1 -0
- package/dist/lib/pek.d.ts +15 -24
- package/dist/lib/pek.d.ts.map +1 -1
- package/dist/lib/pek.js +30 -54
- package/dist/lib/pek.js.map +1 -1
- package/dist/lib/run-env.d.ts +50 -0
- package/dist/lib/run-env.d.ts.map +1 -0
- package/dist/lib/run-env.js +114 -0
- package/dist/lib/run-env.js.map +1 -0
- package/dist/lib/unlock.d.ts +24 -0
- package/dist/lib/unlock.d.ts.map +1 -0
- package/dist/lib/unlock.js +87 -0
- package/dist/lib/unlock.js.map +1 -0
- package/dist/lib/update-check.d.ts +4 -2
- package/dist/lib/update-check.d.ts.map +1 -1
- package/dist/lib/update-check.js +54 -68
- package/dist/lib/update-check.js.map +1 -1
- package/dist/lib/upload.d.ts +21 -0
- package/dist/lib/upload.d.ts.map +1 -0
- package/dist/lib/upload.js +53 -0
- package/dist/lib/upload.js.map +1 -0
- package/package.json +5 -3
- package/dist/commands/delete.d.ts +0 -6
- package/dist/commands/delete.d.ts.map +0 -1
- package/dist/commands/delete.js +0 -55
- package/dist/commands/delete.js.map +0 -1
- package/dist/commands/link.d.ts +0 -16
- package/dist/commands/link.d.ts.map +0 -1
- package/dist/commands/link.js +0 -142
- package/dist/commands/link.js.map +0 -1
- package/dist/commands/pull.d.ts +0 -15
- package/dist/commands/pull.d.ts.map +0 -1
- package/dist/commands/pull.js +0 -155
- package/dist/commands/pull.js.map +0 -1
- package/dist/commands/push.d.ts +0 -15
- package/dist/commands/push.d.ts.map +0 -1
- package/dist/commands/push.js +0 -261
- package/dist/commands/push.js.map +0 -1
- package/dist/commands/remove.d.ts +0 -11
- package/dist/commands/remove.d.ts.map +0 -1
- package/dist/commands/remove.js +0 -39
- package/dist/commands/remove.js.map +0 -1
- package/dist/commands/token.d.ts +0 -14
- package/dist/commands/token.d.ts.map +0 -1
- package/dist/commands/token.js +0 -132
- package/dist/commands/token.js.map +0 -1
- package/dist/commands/whoami.d.ts +0 -6
- package/dist/commands/whoami.d.ts.map +0 -1
- package/dist/commands/whoami.js +0 -46
- package/dist/commands/whoami.js.map +0 -1
- package/dist/lib/env-name.d.ts +0 -3
- package/dist/lib/env-name.d.ts.map +0 -1
- package/dist/lib/env-name.js +0 -5
- package/dist/lib/env-name.js.map +0 -1
- package/dist/lib/guest-key.test.d.ts +0 -2
- package/dist/lib/guest-key.test.d.ts.map +0 -1
- package/dist/lib/guest-key.test.js.map +0 -1
package/dist/commands/delete.js
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import pc from "picocolors";
|
|
4
|
-
import { clearClaimFile, getGetenvDir, promptConfirm, readProjectMeta, } from "../lib/fs.js";
|
|
5
|
-
import { clearFolderToken, tokenFilePath } from "../lib/credentials.js";
|
|
6
|
-
import { clearWrappedKey, wrappedKeyPath } from "../lib/pek.js";
|
|
7
|
-
/**
|
|
8
|
-
* Forget this folder: wipe local .getmyenv/ auth files.
|
|
9
|
-
* Does not delete the cloud project or ciphertext.
|
|
10
|
-
*/
|
|
11
|
-
export async function deleteCommand() {
|
|
12
|
-
console.log(pc.bold("\ngetmyenv delete\n"));
|
|
13
|
-
const meta = readProjectMeta();
|
|
14
|
-
const hasToken = fs.existsSync(tokenFilePath());
|
|
15
|
-
const hasWrapped = fs.existsSync(wrappedKeyPath());
|
|
16
|
-
const hasClaim = fs.existsSync(path.join(getGetenvDir(), "claim.json"));
|
|
17
|
-
if (!meta?.projectId && !hasToken && !hasWrapped && !hasClaim) {
|
|
18
|
-
console.log(pc.dim("Nothing to clear in this folder.\n"));
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
if (process.stdin.isTTY) {
|
|
22
|
-
const label = meta?.projectName ?? meta?.projectId ?? "this folder";
|
|
23
|
-
const ok = await promptConfirm(`Forget ${label}? Removes .getmyenv/ in this folder. Cloud project and ciphertext stay.`, { defaultYes: false });
|
|
24
|
-
if (!ok) {
|
|
25
|
-
console.log(pc.dim("Kept.\n"));
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
if (clearFolderToken()) {
|
|
30
|
-
console.log(`${pc.green("✓")} Removed token`);
|
|
31
|
-
}
|
|
32
|
-
if (clearWrappedKey()) {
|
|
33
|
-
console.log(`${pc.green("✓")} Removed wrapped-key.json`);
|
|
34
|
-
}
|
|
35
|
-
if (meta?.projectId) {
|
|
36
|
-
const projectFile = path.join(getGetenvDir(), "project.json");
|
|
37
|
-
if (fs.existsSync(projectFile))
|
|
38
|
-
fs.unlinkSync(projectFile);
|
|
39
|
-
console.log(`${pc.green("✓")} Removed project.json`);
|
|
40
|
-
}
|
|
41
|
-
if (clearClaimFile()) {
|
|
42
|
-
console.log(`${pc.green("✓")} Removed claim.json`);
|
|
43
|
-
}
|
|
44
|
-
try {
|
|
45
|
-
const dir = getGetenvDir();
|
|
46
|
-
const rest = fs.readdirSync(dir);
|
|
47
|
-
if (rest.length === 0)
|
|
48
|
-
fs.rmdirSync(dir);
|
|
49
|
-
}
|
|
50
|
-
catch {
|
|
51
|
-
/* ignore */
|
|
52
|
-
}
|
|
53
|
-
console.log(pc.dim("\nCloud project stays. Re-authorize: npx getmyenv run -- <cmd>\n"));
|
|
54
|
-
}
|
|
55
|
-
//# sourceMappingURL=delete.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../src/commands/delete.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/link.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
type LinkOpts = {
|
|
2
|
-
apiUrl?: string;
|
|
3
|
-
name?: string;
|
|
4
|
-
expect?: string;
|
|
5
|
-
force?: boolean;
|
|
6
|
-
clear?: boolean;
|
|
7
|
-
env?: string;
|
|
8
|
-
/** When true, do not offer push after link (caller is already pushing). */
|
|
9
|
-
skipPushOffer?: boolean;
|
|
10
|
-
};
|
|
11
|
-
/** Clear this folder: token, wrapped key, project meta. Also removes `.getmyenv/` if empty. */
|
|
12
|
-
export declare function clearLink(): Promise<void>;
|
|
13
|
-
/** Link this folder to the project bound to the folder's CLI token. */
|
|
14
|
-
export declare function linkCommand(_projectIdArg: string | undefined, opts: LinkOpts): Promise<void>;
|
|
15
|
-
export {};
|
|
16
|
-
//# sourceMappingURL=link.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/commands/link.ts"],"names":[],"mappings":"AAwBA,KAAK,QAAQ,GAAG;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,+FAA+F;AAC/F,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CA6C/C;AAED,uEAAuE;AACvE,wBAAsB,WAAW,CAC/B,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,IAAI,EAAE,QAAQ,GACb,OAAO,CAAC,IAAI,CAAC,CA8If"}
|
package/dist/commands/link.js
DELETED
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import pc from "picocolors";
|
|
3
|
-
import { ensureGitignoreHasEnv, getGetenvDir, listPushEnvFiles, promptConfirm, readProjectMeta, writeProjectMeta, } from "../lib/fs.js";
|
|
4
|
-
import { ApiClient, ensureSessionToken, hasSessionToken, resolveApiUrl, } from "../lib/api.js";
|
|
5
|
-
import { clearFolderToken, tokenFilePath } from "../lib/credentials.js";
|
|
6
|
-
import { clearWrappedKey, wrappedKeyPath } from "../lib/pek.js";
|
|
7
|
-
import { normalizeEnvName } from "../lib/env-name.js";
|
|
8
|
-
import { tokenCommand } from "./token.js";
|
|
9
|
-
import { pushCommand } from "./push.js";
|
|
10
|
-
import path from "node:path";
|
|
11
|
-
/** Clear this folder: token, wrapped key, project meta. Also removes `.getmyenv/` if empty. */
|
|
12
|
-
export async function clearLink() {
|
|
13
|
-
console.log(pc.bold("\ngetmyenv link --clear\n"));
|
|
14
|
-
const meta = readProjectMeta();
|
|
15
|
-
const hasToken = fs.existsSync(tokenFilePath());
|
|
16
|
-
const hasWrapped = fs.existsSync(wrappedKeyPath());
|
|
17
|
-
if (!meta?.projectId && !hasToken && !hasWrapped) {
|
|
18
|
-
console.log(pc.dim("Nothing to clear in this folder.\n"));
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
if (process.stdin.isTTY) {
|
|
22
|
-
const label = meta?.projectName ?? meta?.projectId ?? "this folder";
|
|
23
|
-
const ok = await promptConfirm(`Forget ${label}? Removes token, wrapped key, and link.`, { defaultYes: false });
|
|
24
|
-
if (!ok) {
|
|
25
|
-
console.log(pc.dim("Kept.\n"));
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
if (clearFolderToken()) {
|
|
30
|
-
console.log(`${pc.green("✓")} Removed token`);
|
|
31
|
-
}
|
|
32
|
-
if (clearWrappedKey()) {
|
|
33
|
-
console.log(`${pc.green("✓")} Removed wrapped-key.json`);
|
|
34
|
-
}
|
|
35
|
-
if (meta?.projectId) {
|
|
36
|
-
const projectFile = path.join(getGetenvDir(), "project.json");
|
|
37
|
-
if (fs.existsSync(projectFile))
|
|
38
|
-
fs.unlinkSync(projectFile);
|
|
39
|
-
console.log(`${pc.green("✓")} Removed project.json (link)`);
|
|
40
|
-
}
|
|
41
|
-
// Try to remove empty .getmyenv/ dir
|
|
42
|
-
try {
|
|
43
|
-
const dir = getGetenvDir();
|
|
44
|
-
const rest = fs.readdirSync(dir);
|
|
45
|
-
if (rest.length === 0)
|
|
46
|
-
fs.rmdirSync(dir);
|
|
47
|
-
}
|
|
48
|
-
catch {
|
|
49
|
-
/* ignore */
|
|
50
|
-
}
|
|
51
|
-
console.log("");
|
|
52
|
-
}
|
|
53
|
-
/** Link this folder to the project bound to the folder's CLI token. */
|
|
54
|
-
export async function linkCommand(_projectIdArg, opts) {
|
|
55
|
-
if (opts.clear) {
|
|
56
|
-
await clearLink();
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
console.log(pc.bold("\ngetmyenv link\n"));
|
|
60
|
-
if (!hasSessionToken()) {
|
|
61
|
-
if (!process.stdin.isTTY) {
|
|
62
|
-
throw new Error("No CLI token in this folder. Set GETMYENV_TOKEN for CI, or run in a TTY.");
|
|
63
|
-
}
|
|
64
|
-
await tokenCommand({
|
|
65
|
-
apiUrl: opts.apiUrl,
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
const token = await ensureSessionToken();
|
|
69
|
-
const apiUrl = resolveApiUrl(opts.apiUrl);
|
|
70
|
-
const client = new ApiClient(apiUrl, token);
|
|
71
|
-
const who = await client.request("GET", "/api/cli/whoami");
|
|
72
|
-
const expectName = opts.expect?.trim() || opts.name?.trim();
|
|
73
|
-
if (expectName) {
|
|
74
|
-
const needle = expectName.toLowerCase();
|
|
75
|
-
const matches = who.projectName.toLowerCase() === needle ||
|
|
76
|
-
who.projectName.toLowerCase().includes(needle) ||
|
|
77
|
-
String(who.projectId) === expectName;
|
|
78
|
-
if (!matches) {
|
|
79
|
-
throw new Error(`Token project "${who.projectName}" (${who.projectId}) does not match --expect ${expectName}`);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
let environment = who.cliScope === "production" ? "production" : "development";
|
|
83
|
-
if (opts.env?.trim()) {
|
|
84
|
-
const requested = normalizeEnvName(opts.env);
|
|
85
|
-
if (requested !== who.cliScope) {
|
|
86
|
-
throw new Error(`Token scope is ${who.cliScope}, but --env ${requested} was passed. Use a matching token or omit --env.`);
|
|
87
|
-
}
|
|
88
|
-
environment = requested;
|
|
89
|
-
}
|
|
90
|
-
const meta = readProjectMeta() ?? {};
|
|
91
|
-
if (meta.projectId && String(meta.projectId) !== String(who.projectId)) {
|
|
92
|
-
console.log(pc.yellow(`This folder is linked to ${meta.projectName ?? meta.projectId}.`));
|
|
93
|
-
console.log(pc.dim(`Token is for ${who.projectName} (${who.projectId}, ${who.cliScope}).\n`));
|
|
94
|
-
if (!opts.force) {
|
|
95
|
-
if (!process.stdin.isTTY) {
|
|
96
|
-
throw new Error("Already linked to a different project. Re-run with --force, or: npx getmyenv link --clear");
|
|
97
|
-
}
|
|
98
|
-
const ok = await promptConfirm("Replace with token project?", {
|
|
99
|
-
defaultYes: false,
|
|
100
|
-
});
|
|
101
|
-
if (!ok) {
|
|
102
|
-
console.log(pc.dim("Kept existing link.\n"));
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
writeProjectMeta({
|
|
108
|
-
...meta,
|
|
109
|
-
projectId: who.projectId,
|
|
110
|
-
projectName: who.projectName,
|
|
111
|
-
apiUrl,
|
|
112
|
-
environment,
|
|
113
|
-
});
|
|
114
|
-
ensureGitignoreHasEnv();
|
|
115
|
-
console.log(`${pc.green("✓")} Linked to ${pc.bold(who.projectName)} (${who.projectId})`);
|
|
116
|
-
console.log(pc.dim(`Token scope: ${who.cliScope}`));
|
|
117
|
-
console.log(pc.dim(`Environment: ${environment}`));
|
|
118
|
-
if (who.cliScope === "production") {
|
|
119
|
-
console.log(pc.dim("Next: npx getmyenv run -- <cmd> # start app with secrets as env vars (Production is read-only)\n"));
|
|
120
|
-
return;
|
|
121
|
-
}
|
|
122
|
-
if (opts.skipPushOffer || !process.stdin.isTTY) {
|
|
123
|
-
console.log(pc.dim("Next: npx getmyenv run -- <cmd> # start app with secrets as env vars\n"));
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
const pushable = listPushEnvFiles();
|
|
127
|
-
if (pushable.length === 0) {
|
|
128
|
-
console.log(pc.dim("Next: npx getmyenv run -- <cmd> # start app with secrets as env vars\n"));
|
|
129
|
-
return;
|
|
130
|
-
}
|
|
131
|
-
const doPush = await promptConfirm("Push and migrate a local .env file now?", { defaultYes: true });
|
|
132
|
-
if (!doPush) {
|
|
133
|
-
console.log(pc.dim("When you are ready: npx getmyenv run -- <cmd> # start app with secrets as env vars\n"));
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
await pushCommand({
|
|
137
|
-
env: who.cliScope,
|
|
138
|
-
apiUrl,
|
|
139
|
-
envWasDefault: true,
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
|
-
//# sourceMappingURL=link.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/commands/link.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/pull.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
type PullOpts = {
|
|
2
|
-
env: string;
|
|
3
|
-
output?: string;
|
|
4
|
-
to?: string;
|
|
5
|
-
stdout?: boolean;
|
|
6
|
-
yes?: boolean;
|
|
7
|
-
merge?: boolean;
|
|
8
|
-
dryRun?: boolean;
|
|
9
|
-
apiUrl: string;
|
|
10
|
-
vaultPasswordStdin?: boolean;
|
|
11
|
-
envWasDefault?: boolean;
|
|
12
|
-
};
|
|
13
|
-
export declare function pullCommand(opts: PullOpts): Promise<void>;
|
|
14
|
-
export {};
|
|
15
|
-
//# sourceMappingURL=pull.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AAkBA,KAAK,QAAQ,GAAG;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,wBAAsB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAyK/D"}
|
package/dist/commands/pull.js
DELETED
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import pc from "picocolors";
|
|
3
|
-
import { decryptSecret, parsePayload, } from "@getmyenv/crypto";
|
|
4
|
-
import { EXPORT_WARNING } from "@getmyenv/shared";
|
|
5
|
-
import { parseEnvFile, } from "../lib/fs.js";
|
|
6
|
-
import { ApiClient } from "../lib/api.js";
|
|
7
|
-
import { unwrapPek } from "../lib/pek.js";
|
|
8
|
-
import { resolveVaultPassword } from "../lib/guest-key.js";
|
|
9
|
-
import { confirmDiff } from "../lib/confirm.js";
|
|
10
|
-
import { normalizeEnvName } from "../lib/env-name.js";
|
|
11
|
-
import { ensureTokenAndLink } from "../lib/bootstrap.js";
|
|
12
|
-
export async function pullCommand(opts) {
|
|
13
|
-
console.log(pc.bold("\ngetmyenv pull\n"));
|
|
14
|
-
console.log(pc.yellow(EXPORT_WARNING));
|
|
15
|
-
console.log("");
|
|
16
|
-
const { who, apiUrl, token, projectId } = await ensureTokenAndLink({
|
|
17
|
-
apiUrl: opts.apiUrl,
|
|
18
|
-
action: "pull",
|
|
19
|
-
});
|
|
20
|
-
if (who.cliScope === "production") {
|
|
21
|
-
throw new Error([
|
|
22
|
-
"Production CLI is read-only.",
|
|
23
|
-
"Use npx getmyenv run to pass secrets as env vars without writing them to disk.",
|
|
24
|
-
"Set or change Production values in the dashboard.",
|
|
25
|
-
].join("\n"));
|
|
26
|
-
}
|
|
27
|
-
let environment = normalizeEnvName(opts.env);
|
|
28
|
-
if (environment !== who.cliScope) {
|
|
29
|
-
if (opts.envWasDefault) {
|
|
30
|
-
environment = who.cliScope;
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
throw new Error([
|
|
34
|
-
`Token scope is ${who.cliScope}, but you passed -e ${environment}.`,
|
|
35
|
-
"Use a matching token or omit -e.",
|
|
36
|
-
].join("\n"));
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
const password = await resolveVaultPassword({
|
|
40
|
-
isGuest: who.isGuest,
|
|
41
|
-
vaultPasswordStdin: opts.vaultPasswordStdin,
|
|
42
|
-
});
|
|
43
|
-
const client = new ApiClient(apiUrl, token);
|
|
44
|
-
const data = await client.request("GET", `/api/cli/projects/${projectId}/export?environment=${encodeURIComponent(environment)}`);
|
|
45
|
-
const pek = await unwrapPek({
|
|
46
|
-
password,
|
|
47
|
-
scope: who.cliScope,
|
|
48
|
-
wrapped: data.wrappedProjectKey,
|
|
49
|
-
});
|
|
50
|
-
const remote = {};
|
|
51
|
-
const lines = [
|
|
52
|
-
"# Pulled by getmyenv - PLAINTEXT SECRETS",
|
|
53
|
-
`# Environment: ${environment}`,
|
|
54
|
-
"# Do not commit this file.",
|
|
55
|
-
"",
|
|
56
|
-
];
|
|
57
|
-
for (const secret of data.secrets) {
|
|
58
|
-
if (secret.status === "revoked") {
|
|
59
|
-
lines.push("# revoked - getmyenv is not providing this");
|
|
60
|
-
continue;
|
|
61
|
-
}
|
|
62
|
-
if (secret.status === "placeholder" ||
|
|
63
|
-
secret.ciphertext == null ||
|
|
64
|
-
secret.ciphertext === "") {
|
|
65
|
-
lines.push(`# placeholder - no value yet`);
|
|
66
|
-
lines.push(`${secret.name}=`);
|
|
67
|
-
continue;
|
|
68
|
-
}
|
|
69
|
-
const value = decryptSecret(pek, parsePayload(secret.ciphertext));
|
|
70
|
-
remote[secret.name] = value;
|
|
71
|
-
lines.push(`${secret.name}=${value}`);
|
|
72
|
-
}
|
|
73
|
-
if (opts.stdout) {
|
|
74
|
-
process.stdout.write(lines.join("\n") + "\n");
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
const outPath = opts.to || opts.output || ".env";
|
|
78
|
-
const exists = fs.existsSync(outPath);
|
|
79
|
-
const local = exists ? parseEnvFile(outPath) : {};
|
|
80
|
-
if (opts.dryRun) {
|
|
81
|
-
console.log(pc.dim(`Dry run - would write ${outPath}\n`));
|
|
82
|
-
for (const name of Object.keys(remote)) {
|
|
83
|
-
if (!(name in local))
|
|
84
|
-
console.log(` + ${name}`);
|
|
85
|
-
else if (local[name] !== remote[name])
|
|
86
|
-
console.log(` ~ ${name}`);
|
|
87
|
-
else
|
|
88
|
-
console.log(` = ${name}`);
|
|
89
|
-
}
|
|
90
|
-
for (const name of Object.keys(local)) {
|
|
91
|
-
if (!(name in remote))
|
|
92
|
-
console.log(` - ${name} (local only)`);
|
|
93
|
-
}
|
|
94
|
-
console.log("");
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
if (opts.merge && exists) {
|
|
98
|
-
const merged = { ...local };
|
|
99
|
-
for (const [name, value] of Object.entries(remote)) {
|
|
100
|
-
if (!(name in merged) || merged[name] === "") {
|
|
101
|
-
merged[name] = value;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
const mergedLines = [
|
|
105
|
-
"# Pulled by getmyenv - PLAINTEXT SECRETS (merged)",
|
|
106
|
-
`# Environment: ${environment}`,
|
|
107
|
-
"# Do not commit this file.",
|
|
108
|
-
"",
|
|
109
|
-
...Object.entries(merged).map(([k, v]) => `${k}=${v}`),
|
|
110
|
-
];
|
|
111
|
-
fs.writeFileSync(outPath, mergedLines.join("\n") + "\n", { mode: 0o600 });
|
|
112
|
-
console.log(`${pc.green("✓")} Merged into ${outPath}`);
|
|
113
|
-
console.log(pc.dim("Do not commit this file.\n"));
|
|
114
|
-
return;
|
|
115
|
-
}
|
|
116
|
-
const conflicts = [];
|
|
117
|
-
for (const [name, value] of Object.entries(remote)) {
|
|
118
|
-
if (name in local && local[name] !== value) {
|
|
119
|
-
conflicts.push({ name, detail: "local differs from remote" });
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
if (conflicts.length > 0) {
|
|
123
|
-
const ok = await confirmDiff({
|
|
124
|
-
conflicts,
|
|
125
|
-
action: "Overwrite conflicting local values",
|
|
126
|
-
yes: opts.yes,
|
|
127
|
-
});
|
|
128
|
-
if (!ok) {
|
|
129
|
-
console.log(pc.dim("Pull cancelled.\n"));
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
if (exists && conflicts.length === 0 && Object.keys(local).length > 0) {
|
|
134
|
-
const remoteKeys = new Set(Object.keys(remote));
|
|
135
|
-
const localOnly = Object.keys(local).filter((k) => !remoteKeys.has(k));
|
|
136
|
-
if (localOnly.length > 0 && !opts.yes) {
|
|
137
|
-
const ok = await confirmDiff({
|
|
138
|
-
conflicts: localOnly.map((name) => ({
|
|
139
|
-
name,
|
|
140
|
-
detail: "present locally, absent remotely (will be dropped)",
|
|
141
|
-
})),
|
|
142
|
-
action: "Replace local file",
|
|
143
|
-
yes: opts.yes,
|
|
144
|
-
});
|
|
145
|
-
if (!ok) {
|
|
146
|
-
console.log(pc.dim("Pull cancelled.\n"));
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
fs.writeFileSync(outPath, lines.join("\n") + "\n", { mode: 0o600 });
|
|
152
|
-
console.log(`${pc.green("✓")} Wrote ${outPath}`);
|
|
153
|
-
console.log(pc.dim("Do not commit this file.\n"));
|
|
154
|
-
}
|
|
155
|
-
//# sourceMappingURL=pull.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/push.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
type PushOpts = {
|
|
2
|
-
env: string;
|
|
3
|
-
apiUrl: string;
|
|
4
|
-
file?: string;
|
|
5
|
-
key?: string;
|
|
6
|
-
create?: boolean;
|
|
7
|
-
prune?: boolean;
|
|
8
|
-
yes?: boolean;
|
|
9
|
-
dryRun?: boolean;
|
|
10
|
-
vaultPasswordStdin?: boolean;
|
|
11
|
-
envWasDefault?: boolean;
|
|
12
|
-
};
|
|
13
|
-
export declare function pushCommand(opts: PushOpts): Promise<void>;
|
|
14
|
-
export {};
|
|
15
|
-
//# sourceMappingURL=push.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"AA8BA,KAAK,QAAQ,GAAG;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AA+LF,wBAAsB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA+I/D"}
|