getmyenv 0.3.2 → 0.3.4
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 +9 -9
- package/dist/bin.js +23 -0
- package/dist/bin.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +9 -23
- package/dist/cli.js.map +1 -1
- package/dist/commands/backup.d.ts.map +1 -1
- package/dist/commands/backup.js +9 -14
- package/dist/commands/backup.js.map +1 -1
- package/dist/commands/link.d.ts +2 -2
- package/dist/commands/link.d.ts.map +1 -1
- package/dist/commands/link.js +40 -13
- package/dist/commands/link.js.map +1 -1
- package/dist/commands/restore.d.ts.map +1 -1
- package/dist/commands/restore.js +6 -11
- package/dist/commands/restore.js.map +1 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +10 -17
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/token.d.ts +13 -13
- package/dist/commands/token.d.ts.map +1 -1
- package/dist/commands/token.js +105 -144
- package/dist/commands/token.js.map +1 -1
- package/dist/commands/whoami.d.ts.map +1 -1
- package/dist/commands/whoami.js +9 -20
- package/dist/commands/whoami.js.map +1 -1
- package/dist/lib/api.d.ts +12 -12
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js +40 -81
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/bootstrap.d.ts +6 -5
- package/dist/lib/bootstrap.d.ts.map +1 -1
- package/dist/lib/bootstrap.js +15 -19
- package/dist/lib/bootstrap.js.map +1 -1
- package/dist/lib/credentials.d.ts +14 -62
- package/dist/lib/credentials.d.ts.map +1 -1
- package/dist/lib/credentials.js +40 -256
- package/dist/lib/credentials.js.map +1 -1
- package/dist/lib/fs.js +2 -2
- package/dist/lib/fs.js.map +1 -1
- package/dist/lib/pek.d.ts +1 -1
- package/dist/lib/pek.d.ts.map +1 -1
- package/dist/lib/pek.js +1 -1
- package/dist/lib/pek.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -3,20 +3,20 @@
|
|
|
3
3
|
CLI for [getmyenv](https://getmyenv.com) - encrypted environment variables for any language.
|
|
4
4
|
|
|
5
5
|
```bash
|
|
6
|
-
|
|
7
|
-
npx getmyenv
|
|
8
|
-
npx getmyenv run -- npm run dev # start app with secrets as env vars
|
|
6
|
+
cd your-project
|
|
7
|
+
npx getmyenv run -- npm run dev # authorizes + links this folder on first run
|
|
9
8
|
```
|
|
10
9
|
|
|
11
|
-
|
|
10
|
+
The first verb you run in a folder opens the browser to mint a per-project CLI token, stores it in `.getmyenv/token.json`, and continues. No separate token step. One folder = one project = one token. Not a full account login.
|
|
12
11
|
|
|
13
|
-
- Development token: push
|
|
14
|
-
- Production token: read-only (`run
|
|
12
|
+
- Development token: `run`, `push`, `pull`, `restore`. `push` skips `.env*` basenames containing `production`.
|
|
13
|
+
- Production token: read-only (`run`, `backup`). Set Production values in the dashboard.
|
|
15
14
|
- Environment comes from token scope. Omit `-e` day to day.
|
|
15
|
+
- Re-authorize this folder: `npx getmyenv token` (or `--paste` from `/cli`).
|
|
16
|
+
- Forget this folder: `npx getmyenv link --clear`.
|
|
17
|
+
- CI: set `GETMYENV_TOKEN`. API defaults to `https://getmyenv.com`; use `--api-url` for another origin.
|
|
16
18
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
Commands: `token`, `link`, `push`, `pull`, `run`, `whoami`, `backup`, `restore`.
|
|
19
|
+
Commands: `run`, `push`, `pull`, `backup`, `restore`, `whoami`, `token` (re-auth), `link` (`--clear`).
|
|
20
20
|
|
|
21
21
|
License: MIT (see [LICENSE](./LICENSE)). The hosted service at getmyenv.com is governed by its Terms, not this file.
|
|
22
22
|
|
package/dist/bin.js
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import os from "node:os";
|
|
2
5
|
import { runCli } from "./cli.js";
|
|
6
|
+
/**
|
|
7
|
+
* One-shot retire of the machine-global credentials store from before 0.3.4.
|
|
8
|
+
* Silent: delete the file (secrets do not linger) and print one honest line so
|
|
9
|
+
* the user knows why the first verb in a folder asks to authorize.
|
|
10
|
+
*/
|
|
11
|
+
function retireLegacyCredentials() {
|
|
12
|
+
const base = process.env.GETMYENV_CONFIG_DIR?.trim() ||
|
|
13
|
+
path.join(os.homedir(), ".config", "getmyenv");
|
|
14
|
+
const file = path.join(base, "credentials.json");
|
|
15
|
+
if (!fs.existsSync(file))
|
|
16
|
+
return;
|
|
17
|
+
try {
|
|
18
|
+
fs.unlinkSync(file);
|
|
19
|
+
console.error("getmyenv: retired old ~/.config/getmyenv/credentials.json. Tokens now live in .getmyenv/token.json per folder.");
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
/* ignore */
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
retireLegacyCredentials();
|
|
3
26
|
runCli(process.argv).catch((err) => {
|
|
4
27
|
const message = err instanceof Error ? err.message : "Unexpected error";
|
|
5
28
|
// Never print secret values - sanitize to message only
|
package/dist/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IAC1C,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC;IACxE,uDAAuD;IACvD,OAAO,CAAC,KAAK,CAAC,aAAa,OAAO,EAAE,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC;;;;GAIG;AACH,SAAS,uBAAuB;IAC9B,MAAM,IAAI,GACR,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,EAAE;QACvC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;IACjD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO;IACjC,IAAI,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACpB,OAAO,CAAC,KAAK,CACX,gHAAgH,CACjH,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,YAAY;IACd,CAAC;AACH,CAAC;AAED,uBAAuB,EAAE,CAAC;AAE1B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IAC1C,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC;IACxE,uDAAuD;IACvD,OAAO,CAAC,KAAK,CAAC,aAAa,OAAO,EAAE,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AA2BA,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoJ1D"}
|
package/dist/cli.js
CHANGED
|
@@ -2,13 +2,13 @@ import { Command } from "commander";
|
|
|
2
2
|
import { backupCommand } from "./commands/backup.js";
|
|
3
3
|
import { restoreCommand } from "./commands/restore.js";
|
|
4
4
|
import { runCommand } from "./commands/run.js";
|
|
5
|
-
import { tokenCommand
|
|
5
|
+
import { tokenCommand } from "./commands/token.js";
|
|
6
6
|
import { linkCommand } from "./commands/link.js";
|
|
7
7
|
import { pushCommand } from "./commands/push.js";
|
|
8
8
|
import { pullCommand } from "./commands/pull.js";
|
|
9
9
|
import { whoamiCommand } from "./commands/whoami.js";
|
|
10
10
|
import { normalizeEnvName } from "./lib/env-name.js";
|
|
11
|
-
import { resolveApiUrl } from "./lib/api.js";
|
|
11
|
+
import { CLI_VERSION, resolveApiUrl } from "./lib/api.js";
|
|
12
12
|
import { readProjectMeta } from "./lib/fs.js";
|
|
13
13
|
function envWasDefaultFromArgv() {
|
|
14
14
|
return !process.argv.includes("-e") && !process.argv.includes("--env");
|
|
@@ -27,35 +27,21 @@ export async function runCli(argv) {
|
|
|
27
27
|
program
|
|
28
28
|
.name("getmyenv")
|
|
29
29
|
.description("Keep using environment variables. Stop managing them as files.")
|
|
30
|
-
.version(
|
|
31
|
-
|
|
30
|
+
.version(CLI_VERSION);
|
|
31
|
+
program
|
|
32
32
|
.command("token")
|
|
33
|
-
.description("
|
|
33
|
+
.description("Authorize this folder with a per-project CLI token (browser or --paste)")
|
|
34
34
|
.option("--api-url <url>", "API base URL to remember (default production)")
|
|
35
|
+
.option("--paste", "Paste a token from /cli instead of opening the browser")
|
|
35
36
|
.action((opts) => tokenCommand(opts));
|
|
36
|
-
token
|
|
37
|
-
.command("list")
|
|
38
|
-
.description("List saved per-project tokens")
|
|
39
|
-
.action(() => tokenListCommand());
|
|
40
|
-
token
|
|
41
|
-
.command("use <nameOrId>")
|
|
42
|
-
.description("Set the default saved token")
|
|
43
|
-
.action((nameOrId) => tokenUseCommand(nameOrId));
|
|
44
|
-
token
|
|
45
|
-
.command("remove")
|
|
46
|
-
.description("Remove a saved per-project token")
|
|
47
|
-
.option("--project <name|id>", "Remove token for a specific project")
|
|
48
|
-
.option("--all", "Remove all saved tokens")
|
|
49
|
-
.option("--fresh", "Also clear local .getmyenv/wrapped-key.json")
|
|
50
|
-
.action(tokenRemoveCommand);
|
|
51
37
|
program
|
|
52
38
|
.command("link [projectId]")
|
|
53
|
-
.description("Link this folder to the token's project")
|
|
39
|
+
.description("Link this folder to the token's project (or --clear to forget)")
|
|
54
40
|
.option("--name <name>", "Expect project name (exact or unique substring)")
|
|
55
41
|
.option("--expect <name>", "Alias for --name")
|
|
56
42
|
.option("--env <name>", "Set defaultEnv (must match token scope)")
|
|
57
43
|
.option("--force", "Replace an existing link without prompting")
|
|
58
|
-
.option("--clear", "
|
|
44
|
+
.option("--clear", "Forget this folder: remove token, wrapped key, and link")
|
|
59
45
|
.option("--api-url <url>", "API base URL", apiDefault)
|
|
60
46
|
.action((projectId, opts) => linkCommand(projectId, opts));
|
|
61
47
|
program
|
|
@@ -94,7 +80,7 @@ export async function runCli(argv) {
|
|
|
94
80
|
}));
|
|
95
81
|
program
|
|
96
82
|
.command("whoami")
|
|
97
|
-
.description("Show the
|
|
83
|
+
.description("Show the folder's CLI token, project, and defaults")
|
|
98
84
|
.option("--api-url <url>", "API base URL")
|
|
99
85
|
.action(whoamiCommand);
|
|
100
86
|
program
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/commands/backup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/commands/backup.ts"],"names":[],"mappings":"AAaA,KAAK,UAAU,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtD,wBAAsB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAkDnE"}
|
package/dist/commands/backup.js
CHANGED
|
@@ -2,23 +2,18 @@ import fs from "node:fs";
|
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import pc from "picocolors";
|
|
4
4
|
import { createBackupEnvelope, parsePayload, parseWrappedKey, serializeBackup, } from "@getmyenv/crypto";
|
|
5
|
-
import { readProjectMeta
|
|
6
|
-
import { ApiClient
|
|
5
|
+
import { readProjectMeta } from "../lib/fs.js";
|
|
6
|
+
import { ApiClient } from "../lib/api.js";
|
|
7
|
+
import { ensureTokenAndLink } from "../lib/bootstrap.js";
|
|
7
8
|
export async function backupCommand(opts) {
|
|
8
9
|
console.log(pc.bold("\ngetmyenv backup\n"));
|
|
10
|
+
const { apiUrl, token, projectId } = await ensureTokenAndLink({
|
|
11
|
+
apiUrl: opts.apiUrl,
|
|
12
|
+
action: "backup",
|
|
13
|
+
});
|
|
9
14
|
const meta = readProjectMeta();
|
|
10
|
-
requireLinkedProject(meta);
|
|
11
|
-
const token = await ensureSessionToken(meta.projectId);
|
|
12
|
-
const apiUrl = resolveApiUrl(opts.apiUrl, meta.projectId);
|
|
13
15
|
const client = new ApiClient(apiUrl, token);
|
|
14
|
-
const
|
|
15
|
-
if (String(meta.projectId) !== String(who.projectId)) {
|
|
16
|
-
throw new Error([
|
|
17
|
-
`Linked project (${meta.projectName ?? meta.projectId}) does not match this token (${who.projectName}, ${who.projectId}).`,
|
|
18
|
-
"Run: npx getmyenv link",
|
|
19
|
-
].join("\n"));
|
|
20
|
-
}
|
|
21
|
-
const data = await client.request("GET", `/api/cli/projects/${meta.projectId}/backup`);
|
|
16
|
+
const data = await client.request("GET", `/api/cli/projects/${projectId}/backup`);
|
|
22
17
|
const envelope = createBackupEnvelope({
|
|
23
18
|
projectName: data.projectName,
|
|
24
19
|
wrappedProjectKey: parseWrappedKey(JSON.stringify(data.wrappedProjectKey)),
|
|
@@ -36,7 +31,7 @@ export async function backupCommand(opts) {
|
|
|
36
31
|
path.join(process.cwd(), `${data.projectName.replace(/\s+/g, "-").toLowerCase()}.getmyenv`);
|
|
37
32
|
fs.writeFileSync(out, serializeBackup(envelope), { mode: 0o600 });
|
|
38
33
|
console.log(`${pc.green("✓")} Wrote encrypted backup: ${out}`);
|
|
39
|
-
if (meta
|
|
34
|
+
if (meta?.defaultEnv) {
|
|
40
35
|
console.log(pc.dim(`Linked defaultEnv: ${meta.defaultEnv}`));
|
|
41
36
|
}
|
|
42
37
|
console.log(pc.dim("Portable. No plaintext. Usable offline with your vault password.\n"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backup.js","sourceRoot":"","sources":["../../src/commands/backup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"backup.js","sourceRoot":"","sources":["../../src/commands/backup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAIzD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAgB;IAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC5C,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,kBAAkB,CAAC;QAC5D,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM,EAAE,QAAQ;KACjB,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAE5C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAU9B,KAAK,EAAE,qBAAqB,SAAS,SAAS,CAAC,CAAC;IAEnD,MAAM,QAAQ,GAAG,oBAAoB,CAAC;QACpC,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,iBAAiB,EAAE,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC1E,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAChC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,OAAO,EACL,CAAC,CAAC,UAAU,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,aAAa;gBAChD,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC;gBAC5B,CAAC,CAAC,IAAI;SACX,CAAC,CAAC;KACJ,CAAC,CAAC;IAEH,MAAM,GAAG,GACP,IAAI,CAAC,MAAM;QACX,IAAI,CAAC,IAAI,CACP,OAAO,CAAC,GAAG,EAAE,EACb,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,CAClE,CAAC;IACJ,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,eAAe,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,GAAG,EAAE,CAAC,CAAC;IAC/D,IAAI,IAAI,EAAE,UAAU,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,sBAAsB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,CAAC,GAAG,CACT,EAAE,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAC7E,CAAC;AACJ,CAAC"}
|
package/dist/commands/link.d.ts
CHANGED
|
@@ -8,9 +8,9 @@ type LinkOpts = {
|
|
|
8
8
|
/** When true, do not offer push after link (caller is already pushing). */
|
|
9
9
|
skipPushOffer?: boolean;
|
|
10
10
|
};
|
|
11
|
-
/** Clear
|
|
11
|
+
/** Clear this folder: token, wrapped key, project meta. Also removes `.getmyenv/` if empty. */
|
|
12
12
|
export declare function clearLink(): Promise<void>;
|
|
13
|
-
/** Link this folder to the project bound to the
|
|
13
|
+
/** Link this folder to the project bound to the folder's CLI token. */
|
|
14
14
|
export declare function linkCommand(_projectIdArg: string | undefined, opts: LinkOpts): Promise<void>;
|
|
15
15
|
export {};
|
|
16
16
|
//# sourceMappingURL=link.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/commands/link.ts"],"names":[],"mappings":"
|
|
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,CA+If"}
|
package/dist/commands/link.js
CHANGED
|
@@ -1,38 +1,65 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
1
2
|
import pc from "picocolors";
|
|
2
|
-
import { ensureGitignoreHasEnv, listPushEnvFiles, promptConfirm, readProjectMeta, writeProjectMeta, } from "../lib/fs.js";
|
|
3
|
-
import { ApiClient, ensureSessionToken,
|
|
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";
|
|
4
7
|
import { normalizeEnvName } from "../lib/env-name.js";
|
|
5
8
|
import { tokenCommand } from "./token.js";
|
|
6
9
|
import { pushCommand } from "./push.js";
|
|
7
|
-
|
|
10
|
+
import path from "node:path";
|
|
11
|
+
/** Clear this folder: token, wrapped key, project meta. Also removes `.getmyenv/` if empty. */
|
|
8
12
|
export async function clearLink() {
|
|
9
13
|
console.log(pc.bold("\ngetmyenv link --clear\n"));
|
|
10
14
|
const meta = readProjectMeta();
|
|
11
|
-
|
|
12
|
-
|
|
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"));
|
|
13
19
|
return;
|
|
14
20
|
}
|
|
15
21
|
if (process.stdin.isTTY) {
|
|
16
|
-
const
|
|
22
|
+
const label = meta?.projectName ?? meta?.projectId ?? "this folder";
|
|
23
|
+
const ok = await promptConfirm(`Forget ${label}? Removes token, wrapped key, and link.`, { defaultYes: false });
|
|
17
24
|
if (!ok) {
|
|
18
|
-
console.log(pc.dim("Kept
|
|
25
|
+
console.log(pc.dim("Kept.\n"));
|
|
19
26
|
return;
|
|
20
27
|
}
|
|
21
28
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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("");
|
|
25
52
|
}
|
|
26
|
-
/** Link this folder to the project bound to the
|
|
53
|
+
/** Link this folder to the project bound to the folder's CLI token. */
|
|
27
54
|
export async function linkCommand(_projectIdArg, opts) {
|
|
28
55
|
if (opts.clear) {
|
|
29
56
|
await clearLink();
|
|
30
57
|
return;
|
|
31
58
|
}
|
|
32
59
|
console.log(pc.bold("\ngetmyenv link\n"));
|
|
33
|
-
if (!
|
|
60
|
+
if (!hasSessionToken()) {
|
|
34
61
|
if (!process.stdin.isTTY) {
|
|
35
|
-
throw new Error("No CLI token.
|
|
62
|
+
throw new Error("No CLI token in this folder. Set GETMYENV_TOKEN for CI, or run in a TTY.");
|
|
36
63
|
}
|
|
37
64
|
await tokenCommand({
|
|
38
65
|
apiUrl: opts.apiUrl,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/commands/link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,eAAe,EACf,aAAa,GAEd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/commands/link.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"restore.d.ts","sourceRoot":"","sources":["../../src/commands/restore.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"restore.d.ts","sourceRoot":"","sources":["../../src/commands/restore.ts"],"names":[],"mappings":"AAcA,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,IAAI,CAAC,CAiFf"}
|
package/dist/commands/restore.js
CHANGED
|
@@ -2,7 +2,8 @@ import fs from "node:fs";
|
|
|
2
2
|
import pc from "picocolors";
|
|
3
3
|
import { createWrappedProjectKey, encryptSecret, parseBackup, restoreSecretsFromBackup, serializePayload, serializeWrappedKey, } from "@getmyenv/crypto";
|
|
4
4
|
import { promptHidden, readProjectMeta, writeProjectMeta } from "../lib/fs.js";
|
|
5
|
-
import { ApiClient
|
|
5
|
+
import { ApiClient } from "../lib/api.js";
|
|
6
|
+
import { ensureTokenAndLink } from "../lib/bootstrap.js";
|
|
6
7
|
export async function restoreCommand(file, opts) {
|
|
7
8
|
console.log(pc.bold("\ngetmyenv restore\n"));
|
|
8
9
|
if (!fs.existsSync(file))
|
|
@@ -14,24 +15,18 @@ export async function restoreCommand(file, opts) {
|
|
|
14
15
|
// Verify decryption works offline first
|
|
15
16
|
const restored = await restoreSecretsFromBackup(password, envelope);
|
|
16
17
|
console.log(`Verified ${restored.length} secrets from backup (offline).\n`);
|
|
18
|
+
const { who, apiUrl, token } = await ensureTokenAndLink({
|
|
19
|
+
apiUrl: opts.apiUrl,
|
|
20
|
+
action: "restore",
|
|
21
|
+
});
|
|
17
22
|
const meta = readProjectMeta();
|
|
18
|
-
const token = await ensureSessionToken(meta?.projectId);
|
|
19
|
-
const apiUrl = resolveApiUrl(opts.apiUrl, meta?.projectId);
|
|
20
23
|
const client = new ApiClient(apiUrl, token);
|
|
21
|
-
const who = await client.request("GET", "/api/cli/whoami");
|
|
22
24
|
if (who.cliScope === "production") {
|
|
23
25
|
throw new Error([
|
|
24
26
|
"Production CLI is read-only.",
|
|
25
27
|
"Restore with a Development token, or set values in the dashboard.",
|
|
26
28
|
].join("\n"));
|
|
27
29
|
}
|
|
28
|
-
// CLI tokens are per-project: restore always targets the token's project.
|
|
29
|
-
if (meta?.projectId && String(meta.projectId) !== String(who.projectId)) {
|
|
30
|
-
throw new Error([
|
|
31
|
-
`Linked project (${meta.projectName ?? meta.projectId}) does not match this token (${who.projectName}, ${who.projectId}).`,
|
|
32
|
-
"Run: npx getmyenv link",
|
|
33
|
-
].join("\n"));
|
|
34
|
-
}
|
|
35
30
|
if (opts.intoLinked && !meta?.projectId) {
|
|
36
31
|
throw new Error("No linked project. Run: npx getmyenv link");
|
|
37
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"restore.js","sourceRoot":"","sources":["../../src/commands/restore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EACL,uBAAuB,EACvB,aAAa,EACb,WAAW,EACX,wBAAwB,EACxB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,
|
|
1
|
+
{"version":3,"file":"restore.js","sourceRoot":"","sources":["../../src/commands/restore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAuBA,KAAK,OAAO,GAAG;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,wBAAsB,UAAU,CAC9B,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,IAAI,CAAC,CAkQf"}
|
package/dist/commands/run.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
2
|
import pc from "picocolors";
|
|
3
3
|
import { decryptSecret, parsePayload, signAccessRequest, } from "@getmyenv/crypto";
|
|
4
|
-
import { promptHidden, readProjectMeta, readRequirements,
|
|
5
|
-
import { ApiClient
|
|
4
|
+
import { promptHidden, readProjectMeta, readRequirements, } from "../lib/fs.js";
|
|
5
|
+
import { ApiClient } from "../lib/api.js";
|
|
6
|
+
import { ensureTokenAndLink } from "../lib/bootstrap.js";
|
|
6
7
|
import { clearGrant, loadGrant, loadOrCreateIdentity, saveGrant, } from "../lib/identity.js";
|
|
7
8
|
import { unwrapPek } from "../lib/pek.js";
|
|
8
9
|
import { normalizeEnvName } from "../lib/env-name.js";
|
|
@@ -11,19 +12,12 @@ export async function runCommand(opts, childArgs) {
|
|
|
11
12
|
throw new Error("Usage: npx getmyenv run -- <command>");
|
|
12
13
|
}
|
|
13
14
|
console.log(pc.bold("\ngetmyenv\n"));
|
|
15
|
+
const { who, apiUrl, token, projectId } = await ensureTokenAndLink({
|
|
16
|
+
apiUrl: opts.apiUrl,
|
|
17
|
+
action: "run",
|
|
18
|
+
});
|
|
14
19
|
const meta = readProjectMeta();
|
|
15
|
-
requireLinkedProject(meta);
|
|
16
|
-
const token = await ensureSessionToken(meta.projectId);
|
|
17
|
-
const apiUrl = resolveApiUrl(opts.apiUrl, meta.projectId);
|
|
18
20
|
const client = new ApiClient(apiUrl, token);
|
|
19
|
-
const who = await client.request("GET", "/api/cli/whoami");
|
|
20
|
-
if (String(meta.projectId) !== String(who.projectId)) {
|
|
21
|
-
throw new Error([
|
|
22
|
-
`Linked project (${meta.projectName ?? meta.projectId}) does not match this token (${who.projectName}, ${who.projectId}).`,
|
|
23
|
-
"Run: npx getmyenv link",
|
|
24
|
-
"Or create a CLI token for this project on /cli.",
|
|
25
|
-
].join("\n"));
|
|
26
|
-
}
|
|
27
21
|
let environment = normalizeEnvName(opts.env);
|
|
28
22
|
if (opts.envWasDefault && meta.defaultEnv) {
|
|
29
23
|
environment = meta.defaultEnv;
|
|
@@ -55,13 +49,12 @@ export async function runCommand(opts, childArgs) {
|
|
|
55
49
|
console.log(`Access: ${needsDashboardWait
|
|
56
50
|
? "requesting dashboard approval (production)"
|
|
57
51
|
: "not required (development)"}\n`);
|
|
58
|
-
const envInfo = await client.request("GET", `/api/cli/projects/${
|
|
52
|
+
const envInfo = await client.request("GET", `/api/cli/projects/${projectId}`);
|
|
59
53
|
const envRow = envInfo.environments.find((e) => e.name.toLowerCase() === environment.toLowerCase());
|
|
60
54
|
if (!envRow) {
|
|
61
55
|
throw new Error(`Environment not found: ${environment}`);
|
|
62
56
|
}
|
|
63
57
|
const environmentId = String(envRow.id);
|
|
64
|
-
const projectId = String(meta.projectId);
|
|
65
58
|
let grant = loadGrant(projectId, environmentId);
|
|
66
59
|
if (!grant) {
|
|
67
60
|
const identity = loadOrCreateIdentity(projectId);
|
|
@@ -76,7 +69,7 @@ export async function runCommand(opts, childArgs) {
|
|
|
76
69
|
let request;
|
|
77
70
|
try {
|
|
78
71
|
request = await client.request("POST", "/api/cli/requests", {
|
|
79
|
-
projectId
|
|
72
|
+
projectId,
|
|
80
73
|
environmentId: envRow.id,
|
|
81
74
|
identityPublicKey: identity.publicKey,
|
|
82
75
|
identityLabel: process.env.GETMYENV_MACHINE_LABEL ??
|
|
@@ -158,7 +151,7 @@ export async function runCommand(opts, childArgs) {
|
|
|
158
151
|
let bundle;
|
|
159
152
|
try {
|
|
160
153
|
bundle = await client.request("POST", `/api/cli/grants/secrets`, {
|
|
161
|
-
projectId
|
|
154
|
+
projectId,
|
|
162
155
|
environmentId: envRow.id,
|
|
163
156
|
}, { "X-Getmyenv-Grant": grant.grantToken });
|
|
164
157
|
}
|
package/dist/commands/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EACL,aAAa,EACb,YAAY,EACZ,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,YAAY,EACZ,eAAe,EACf,gBAAgB,
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/token.d.ts
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
type
|
|
1
|
+
export type TokenOpts = {
|
|
2
2
|
apiUrl?: string;
|
|
3
|
-
/**
|
|
3
|
+
/** Skip browser flow; paste a token in the terminal. */
|
|
4
|
+
paste?: boolean;
|
|
5
|
+
/** When true, do not offer link after saving (caller is already linking). */
|
|
4
6
|
skipLinkOffer?: boolean;
|
|
5
7
|
};
|
|
6
|
-
type TokenRemoveOpts = {
|
|
7
|
-
project?: string;
|
|
8
|
-
all?: boolean;
|
|
9
|
-
fresh?: boolean;
|
|
10
|
-
};
|
|
11
|
-
export declare function tokenListCommand(): void;
|
|
12
|
-
export declare function tokenUseCommand(nameOrId: string): void;
|
|
13
8
|
/**
|
|
14
|
-
*
|
|
9
|
+
* Authorize a per-project CLI token in this folder. Not a full account login.
|
|
10
|
+
* Default: browser flow. Use --paste to type/paste a token from /cli.
|
|
11
|
+
* Re-running overwrites the existing token in `.getmyenv/token.json`.
|
|
12
|
+
*/
|
|
13
|
+
export declare function tokenCommand(opts?: TokenOpts): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Remove the token for this folder. Convenience alias for `link --clear`.
|
|
16
|
+
* Kept as a courtesy; the underlying store is one folder = one token.
|
|
15
17
|
*/
|
|
16
|
-
export declare function
|
|
17
|
-
export declare function tokenRemoveCommand(opts?: TokenRemoveOpts): Promise<void>;
|
|
18
|
-
export {};
|
|
18
|
+
export declare function tokenClearCommand(): Promise<void>;
|
|
19
19
|
//# sourceMappingURL=token.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../src/commands/token.ts"],"names":[],"mappings":"AAiBA,
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../src/commands/token.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,SAAS,GAAG;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,6EAA6E;IAC7E,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AA+IF;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,IAAI,GAAE,SAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BtE;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAOvD"}
|