@catladder/cli 0.0.0-main-2355fd7c → 0.0.0-main-018e2dee

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.
Files changed (83) hide show
  1. package/dist/apps/cli/src/apps/catenv/catenv.js +3 -0
  2. package/dist/apps/cli/src/apps/catenv/catenv.js.map +1 -1
  3. package/dist/apps/cli/src/apps/cli/commands/project/doctor/GcloudProjectInspector.d.ts +4 -0
  4. package/dist/apps/cli/src/apps/cli/commands/project/doctor/GcloudProjectInspector.js +12 -0
  5. package/dist/apps/cli/src/apps/cli/commands/project/doctor/GcloudProjectInspector.js.map +1 -1
  6. package/dist/apps/cli/src/apps/cli/commands/project/doctor/checkCloudRun.d.ts +2 -2
  7. package/dist/apps/cli/src/apps/cli/commands/project/doctor/checkCloudRun.js +3 -1
  8. package/dist/apps/cli/src/apps/cli/commands/project/doctor/checkCloudRun.js.map +1 -1
  9. package/dist/apps/cli/src/apps/cli/commands/project/doctor/checkLocalAccess.d.ts +10 -0
  10. package/dist/apps/cli/src/apps/cli/commands/project/doctor/checkLocalAccess.js +98 -0
  11. package/dist/apps/cli/src/apps/cli/commands/project/doctor/checkLocalAccess.js.map +1 -0
  12. package/dist/apps/cli/src/apps/cli/commands/project/doctor/index.js +1 -1
  13. package/dist/apps/cli/src/apps/cli/commands/project/doctor/index.js.map +1 -1
  14. package/dist/apps/cli/src/apps/cli/commands/project/setup/setupContext.js +2 -0
  15. package/dist/apps/cli/src/apps/cli/commands/project/setup/setupContext.js.map +1 -1
  16. package/dist/apps/cli/src/apps/cli/commands/project/setup/setupLocalAccess.d.ts +9 -0
  17. package/dist/apps/cli/src/apps/cli/commands/project/setup/setupLocalAccess.js +31 -0
  18. package/dist/apps/cli/src/apps/cli/commands/project/setup/setupLocalAccess.js.map +1 -0
  19. package/dist/apps/cli/src/config/getProjectConfig.js +9 -1
  20. package/dist/apps/cli/src/config/getProjectConfig.js.map +1 -1
  21. package/dist/apps/cli/src/gcloud/localAccess.d.ts +53 -0
  22. package/dist/apps/cli/src/gcloud/localAccess.js +176 -0
  23. package/dist/apps/cli/src/gcloud/localAccess.js.map +1 -0
  24. package/dist/apps/cli/src/gcloud/serviceAccounts.js +9 -2
  25. package/dist/apps/cli/src/gcloud/serviceAccounts.js.map +1 -1
  26. package/dist/apps/cli/src/localAccess/declared.d.ts +14 -0
  27. package/dist/apps/cli/src/localAccess/declared.js +34 -0
  28. package/dist/apps/cli/src/localAccess/declared.js.map +1 -0
  29. package/dist/apps/cli/src/localAccess/keyFiles.d.ts +28 -0
  30. package/dist/apps/cli/src/localAccess/keyFiles.js +91 -0
  31. package/dist/apps/cli/src/localAccess/keyFiles.js.map +1 -0
  32. package/dist/apps/cli/src/utils/writePrivateFile.d.ts +7 -0
  33. package/dist/apps/cli/src/utils/writePrivateFile.js +25 -0
  34. package/dist/apps/cli/src/utils/writePrivateFile.js.map +1 -0
  35. package/dist/apps/cli/src/vault/BitwardenVault.js +13 -22
  36. package/dist/apps/cli/src/vault/BitwardenVault.js.map +1 -1
  37. package/dist/apps/cli/src/vault/VaultManager.d.ts +6 -0
  38. package/dist/apps/cli/src/vault/VaultManager.js +18 -0
  39. package/dist/apps/cli/src/vault/VaultManager.js.map +1 -1
  40. package/dist/apps/cli/src/vault/bw.d.ts +6 -2
  41. package/dist/apps/cli/src/vault/bw.js +32 -6
  42. package/dist/apps/cli/src/vault/bw.js.map +1 -1
  43. package/dist/apps/cli/src/vault/cache.js +5 -2
  44. package/dist/apps/cli/src/vault/cache.js.map +1 -1
  45. package/dist/bundles/catenv/index.js +436 -31
  46. package/dist/bundles/cli/index.js +786 -35
  47. package/dist/bundles/skills/catladder-secrets/SKILL.md +35 -3
  48. package/dist/packages/pipeline/src/index.d.ts +1 -0
  49. package/dist/packages/pipeline/src/index.js +1 -0
  50. package/dist/packages/pipeline/src/index.js.map +1 -1
  51. package/dist/packages/pipeline/src/localAccess/index.d.ts +53 -0
  52. package/dist/packages/pipeline/src/localAccess/index.js +177 -0
  53. package/dist/packages/pipeline/src/localAccess/index.js.map +1 -0
  54. package/dist/packages/pipeline/src/types/config.d.ts +75 -0
  55. package/dist/packages/pipeline/src/types/config.js.map +1 -1
  56. package/dist/skills/catladder-secrets/SKILL.md +35 -3
  57. package/dist/tsconfig.tsbuildinfo +1 -1
  58. package/package.json +1 -1
  59. package/src/apps/catenv/catenv.ts +4 -0
  60. package/src/apps/cli/commands/project/doctor/GcloudProjectInspector.ts +25 -1
  61. package/src/apps/cli/commands/project/doctor/__tests__/checkLocalAccess.test.ts +127 -0
  62. package/src/apps/cli/commands/project/doctor/checkCloudRun.ts +5 -1
  63. package/src/apps/cli/commands/project/doctor/checkLocalAccess.ts +146 -0
  64. package/src/apps/cli/commands/project/doctor/index.ts +1 -1
  65. package/src/apps/cli/commands/project/setup/setupContext.ts +2 -0
  66. package/src/apps/cli/commands/project/setup/setupLocalAccess.ts +44 -0
  67. package/src/config/__tests__/getEnvVarsResolved.test.ts +45 -0
  68. package/src/config/getProjectConfig.ts +11 -1
  69. package/src/gcloud/__tests__/localAccess.test.ts +82 -0
  70. package/src/gcloud/__tests__/syncLocalAccess.test.ts +196 -0
  71. package/src/gcloud/localAccess.ts +257 -0
  72. package/src/gcloud/serviceAccounts.ts +8 -2
  73. package/src/localAccess/__tests__/keyFiles.test.ts +166 -0
  74. package/src/localAccess/declared.ts +38 -0
  75. package/src/localAccess/keyFiles.ts +126 -0
  76. package/src/utils/__tests__/writePrivateFile.test.ts +40 -0
  77. package/src/utils/writePrivateFile.ts +20 -0
  78. package/src/vault/BitwardenVault.ts +8 -9
  79. package/src/vault/VaultManager.ts +28 -0
  80. package/src/vault/__tests__/BitwardenVault.test.ts +4 -4
  81. package/src/vault/__tests__/cache.test.ts +37 -0
  82. package/src/vault/bw.ts +34 -9
  83. package/src/vault/cache.ts +5 -2
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.syncLocalAccessServiceAccount = exports.listUserManagedKeyIds = exports.parseServiceAccountKey = exports.getConditionalRolesOfMemberInBindings = exports.getRolesOfMemberInBindings = exports.getLocalAccessServiceAccountNames = void 0;
4
+ const pipeline_1 = require("../../../../packages/pipeline/src/index.js");
5
+ const child_process_promise_1 = require("child-process-promise");
6
+ const promises_1 = require("fs/promises");
7
+ const os_1 = require("os");
8
+ const path_1 = require("path");
9
+ const serviceAccountNames_1 = require("./serviceAccountNames");
10
+ const serviceAccounts_1 = require("./serviceAccounts");
11
+ /**
12
+ * the dedicated read-only service account of a component/env that
13
+ * `project setup` provisions from the `localAccess` declaration.
14
+ * Shared with `project doctor` and catenv.
15
+ */
16
+ const getLocalAccessServiceAccountNames = (context, projectId) => (0, serviceAccountNames_1.getGcloudServiceAccountNames)(context, {
17
+ name: pipeline_1.LOCAL_ACCESS_GCP_SA_NAME,
18
+ projectId,
19
+ });
20
+ exports.getLocalAccessServiceAccountNames = getLocalAccessServiceAccountNames;
21
+ /**
22
+ * all unconditional roles bound to `member` in the given iam policy
23
+ * bindings. Conditional bindings are reported separately, see
24
+ * {@link getConditionalRolesOfMemberInBindings}.
25
+ */
26
+ const getRolesOfMemberInBindings = (bindings, member) => bindings
27
+ .filter((binding) => !binding.condition)
28
+ .filter((binding) => { var _a; return (_a = binding.members) === null || _a === void 0 ? void 0 : _a.includes(member); })
29
+ .map((binding) => binding.role)
30
+ .sort();
31
+ exports.getRolesOfMemberInBindings = getRolesOfMemberInBindings;
32
+ /**
33
+ * roles bound to `member` under an iam condition. These cannot be
34
+ * removed by role name alone, so they are never touched by `project
35
+ * setup` — only reported.
36
+ */
37
+ const getConditionalRolesOfMemberInBindings = (bindings, member) => bindings
38
+ .filter((binding) => binding.condition)
39
+ .filter((binding) => { var _a; return (_a = binding.members) === null || _a === void 0 ? void 0 : _a.includes(member); })
40
+ .map((binding) => binding.role)
41
+ .sort();
42
+ exports.getConditionalRolesOfMemberInBindings = getConditionalRolesOfMemberInBindings;
43
+ /**
44
+ * parses the output of `gcloud iam service-accounts keys create` and
45
+ * makes sure it is a usable service account key
46
+ */
47
+ const parseServiceAccountKey = (raw) => {
48
+ let parsed;
49
+ try {
50
+ parsed = JSON.parse(raw);
51
+ }
52
+ catch (_a) {
53
+ throw new Error("gcloud did not return a valid service account key");
54
+ }
55
+ if (typeof parsed.private_key_id !== "string" ||
56
+ typeof parsed.private_key !== "string") {
57
+ throw new Error("gcloud did not return a valid service account key");
58
+ }
59
+ return { key: raw, privateKeyId: parsed.private_key_id };
60
+ };
61
+ exports.parseServiceAccountKey = parseServiceAccountKey;
62
+ const getProjectBindings = async (projectId) => {
63
+ var _a;
64
+ return (_a = JSON.parse((await (0, child_process_promise_1.exec)(`gcloud projects get-iam-policy ${projectId} --format=json`))
65
+ .stdout).bindings) !== null && _a !== void 0 ? _a : [];
66
+ };
67
+ const listUserManagedKeyIds = async (fullIdentifier) => {
68
+ const keys = JSON.parse((await (0, child_process_promise_1.exec)(`gcloud iam service-accounts keys list --iam-account=${fullIdentifier} --managed-by=user --format=json`)).stdout);
69
+ return keys.map((key) => key.name.split("/").pop());
70
+ };
71
+ exports.listUserManagedKeyIds = listUserManagedKeyIds;
72
+ /**
73
+ * makes the account's bindings equal to `roles`: adds missing, removes
74
+ * everything else (the account is dedicated, every other binding is
75
+ * drift). Idempotent — a no-op when nothing differs.
76
+ */
77
+ const syncBindings = async (io, projectId, fullIdentifier, roles) => {
78
+ const member = `serviceAccount:${fullIdentifier}`;
79
+ const bindings = await getProjectBindings(projectId);
80
+ const conditional = (0, exports.getConditionalRolesOfMemberInBindings)(bindings, member);
81
+ if (conditional.length > 0) {
82
+ io.log(`⚠️ ${fullIdentifier} has conditional bindings (${conditional.join(", ")}) — setup does not touch them, remove them by hand`);
83
+ }
84
+ const { missing, extra } = (0, pipeline_1.diffRoleBindings)(roles, (0, exports.getRolesOfMemberInBindings)(bindings, member));
85
+ for (const role of missing) {
86
+ io.log(` + ${role}`);
87
+ await (0, child_process_promise_1.exec)(`gcloud projects add-iam-policy-binding ${projectId} --member=${member} --role=${role} --condition=None`);
88
+ }
89
+ for (const role of extra) {
90
+ io.log(` - ${role}`);
91
+ await (0, child_process_promise_1.exec)(`gcloud projects remove-iam-policy-binding ${projectId} --member=${member} --role=${role} --condition=None`);
92
+ }
93
+ };
94
+ /**
95
+ * brings the local access service account of a component/env in line
96
+ * with the declared `roles`:
97
+ *
98
+ * - roles declared: account exists, carries exactly these bindings,
99
+ * and a key for it is in the secret store (under the `local` env, so
100
+ * it is never mirrored to ci). The key is only created when the
101
+ * stored one is missing or no longer valid — re-running is a no-op.
102
+ * - no roles declared: bindings are removed and the account (with its
103
+ * keys) deleted if it exists.
104
+ */
105
+ const syncLocalAccessServiceAccount = async (io, context, projectId, roles) => {
106
+ const { fullName, fullIdentifier } = (0, exports.getLocalAccessServiceAccountNames)(context, projectId);
107
+ const exists = await (0, serviceAccounts_1.accountExists)(fullIdentifier);
108
+ if (roles.length === 0) {
109
+ if (exists) {
110
+ io.log(`local access no longer declared, removing ${fullIdentifier}...`);
111
+ await syncBindings(io, projectId, fullIdentifier, []);
112
+ await (0, child_process_promise_1.exec)(`gcloud iam service-accounts delete ${fullIdentifier} --quiet --project="${projectId}"`);
113
+ }
114
+ return;
115
+ }
116
+ if (!exists) {
117
+ io.log(`creating local access service account ${fullIdentifier}...`);
118
+ await (0, child_process_promise_1.exec)(`gcloud iam service-accounts create ${fullName} --display-name="${context.fullConfig.customerName}-${context.fullConfig.appName} ${context.env}:${context.name} | Catladder local access (read-only)" --project="${projectId}" --description="Read-only access for local use (agents, scripts)"`);
119
+ }
120
+ await syncBindings(io, projectId, fullIdentifier, roles);
121
+ const secretName = (0, pipeline_1.getLocalAccessGcpSecretName)(context.env);
122
+ const vaultManager = await io.getVaultManager();
123
+ const rawName = (0, pipeline_1.getSecretVarName)("local", context.name, secretName);
124
+ // straight from the vault, NOT through the local cache: a stale cache
125
+ // (older than the first setup, or holding an older key) would make us
126
+ // believe the key is gone, delete the valid one and lock out every
127
+ // other machine.
128
+ const stored = (await vaultManager.vault.readAllSecrets(io))[rawName];
129
+ const validKeyIds = await (0, exports.listUserManagedKeyIds)(fullIdentifier);
130
+ let storedKeyId;
131
+ try {
132
+ storedKeyId = JSON.parse(stored).private_key_id;
133
+ }
134
+ catch (_a) {
135
+ // no (or unparsable) stored key
136
+ }
137
+ if (storedKeyId && validKeyIds.includes(storedKeyId)) {
138
+ // keep the cache in line with the vault
139
+ await vaultManager.cacheSecrets("local", context.name, {
140
+ [secretName]: stored,
141
+ });
142
+ // at most one key per account: also drop leftovers of a failed run
143
+ // or keys added by hand
144
+ await deleteKeys(fullIdentifier, validKeyIds.filter((id) => id !== storedKeyId));
145
+ return;
146
+ }
147
+ io.log("creating local access key...");
148
+ // create first: a failed create must not leave the vault empty
149
+ const { key, privateKeyId } = await createServiceAccountKey(fullIdentifier);
150
+ // straight into the vault, NOT through writeSecretsAndMirror: this
151
+ // key is for local use only and must never reach ci variables.
152
+ // A fresh key replaces the old one, a backup would be dead.
153
+ await vaultManager.writeSecrets("local", context.name, { [secretName]: key }, io, { backup: false });
154
+ // only now drop the keys that are not the new one
155
+ await deleteKeys(fullIdentifier, validKeyIds.filter((id) => id !== privateKeyId));
156
+ };
157
+ exports.syncLocalAccessServiceAccount = syncLocalAccessServiceAccount;
158
+ const deleteKeys = async (fullIdentifier, keyIds) => {
159
+ for (const keyId of keyIds) {
160
+ await (0, child_process_promise_1.exec)(`gcloud iam service-accounts keys delete ${keyId} --quiet --iam-account=${fullIdentifier}`);
161
+ }
162
+ };
163
+ const createServiceAccountKey = async (fullIdentifier) => {
164
+ // a private temp file (0700 folder) instead of /dev/stdout | cat:
165
+ // the pipe hid gcloud's exit code
166
+ const folder = await (0, promises_1.mkdtemp)((0, path_1.join)((0, os_1.tmpdir)(), "catladder-local-access-"));
167
+ try {
168
+ const file = (0, path_1.join)(folder, "key.json");
169
+ await (0, child_process_promise_1.exec)(`gcloud iam service-accounts keys create "${file}" --iam-account=${fullIdentifier}`);
170
+ return (0, exports.parseServiceAccountKey)(await (0, promises_1.readFile)(file, "utf-8"));
171
+ }
172
+ finally {
173
+ await (0, promises_1.rm)(folder, { recursive: true, force: true });
174
+ }
175
+ };
176
+ //# sourceMappingURL=localAccess.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localAccess.js","sourceRoot":"","sources":["../../../../../src/gcloud/localAccess.ts"],"names":[],"mappings":"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"}
@@ -5,12 +5,19 @@ const child_process_promise_1 = require("child-process-promise");
5
5
  const secrets_1 = require("../secrets");
6
6
  const serviceAccountNames_1 = require("./serviceAccountNames");
7
7
  const accountExists = async (fullIdentifier) => {
8
+ var _a, _b;
8
9
  try {
9
10
  await (0, child_process_promise_1.exec)(`gcloud iam service-accounts describe ${fullIdentifier}`);
10
11
  return true;
11
12
  }
12
- catch (_a) {
13
- return false;
13
+ catch (e) {
14
+ // only a missing account means "does not exist": an auth or
15
+ // permission error must not look like one (setup would skip the
16
+ // deletion, doctor would report it missing)
17
+ if (`${(_a = e === null || e === void 0 ? void 0 : e.stderr) !== null && _a !== void 0 ? _a : ""}${(_b = e === null || e === void 0 ? void 0 : e.message) !== null && _b !== void 0 ? _b : ""}`.includes("NOT_FOUND")) {
18
+ return false;
19
+ }
20
+ throw e;
14
21
  }
15
22
  };
16
23
  exports.accountExists = accountExists;
@@ -1 +1 @@
1
- {"version":3,"file":"serviceAccounts.js","sourceRoot":"","sources":["../../../../../src/gcloud/serviceAccounts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serviceAccounts.js","sourceRoot":"","sources":["../../../../../src/gcloud/serviceAccounts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { Config } from "../../../../packages/pipeline/src/index.js";
2
+ /**
3
+ * the envs of a component declaring gcp local access. An invalid
4
+ * declaration yields none instead of throwing: catenv and the vault
5
+ * cache must keep working (`project doctor` and `project setup` report
6
+ * the invalid declaration loudly).
7
+ */
8
+ export declare const getDeclaredLocalAccessEnvs: (config: Config, componentName: string) => string[];
9
+ /**
10
+ * the declared `credentialsEnvVar` names of a component, mapped to their
11
+ * env. Empty instead of throwing on an invalid declaration, see
12
+ * {@link getDeclaredLocalAccessEnvs}.
13
+ */
14
+ export declare const getDeclaredLocalAccessCredentialsEnvVars: (config: Config, componentName: string) => Record<string, string>;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDeclaredLocalAccessCredentialsEnvVars = exports.getDeclaredLocalAccessEnvs = void 0;
4
+ const pipeline_1 = require("../../../../packages/pipeline/src/index.js");
5
+ /**
6
+ * the envs of a component declaring gcp local access. An invalid
7
+ * declaration yields none instead of throwing: catenv and the vault
8
+ * cache must keep working (`project doctor` and `project setup` report
9
+ * the invalid declaration loudly).
10
+ */
11
+ const getDeclaredLocalAccessEnvs = (config, componentName) => {
12
+ try {
13
+ return (0, pipeline_1.getLocalAccessGcpEnvs)(config, componentName);
14
+ }
15
+ catch (_a) {
16
+ return [];
17
+ }
18
+ };
19
+ exports.getDeclaredLocalAccessEnvs = getDeclaredLocalAccessEnvs;
20
+ /**
21
+ * the declared `credentialsEnvVar` names of a component, mapped to their
22
+ * env. Empty instead of throwing on an invalid declaration, see
23
+ * {@link getDeclaredLocalAccessEnvs}.
24
+ */
25
+ const getDeclaredLocalAccessCredentialsEnvVars = (config, componentName) => {
26
+ try {
27
+ return (0, pipeline_1.getLocalAccessGcpCredentialsEnvVars)(config, componentName);
28
+ }
29
+ catch (_a) {
30
+ return {};
31
+ }
32
+ };
33
+ exports.getDeclaredLocalAccessCredentialsEnvVars = getDeclaredLocalAccessCredentialsEnvVars;
34
+ //# sourceMappingURL=declared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"declared.js","sourceRoot":"","sources":["../../../../../src/localAccess/declared.ts"],"names":[],"mappings":";;;AACA,kDAG6B;AAE7B;;;;;GAKG;AACI,MAAM,0BAA0B,GAAG,CACxC,MAAc,EACd,aAAqB,EACX,EAAE;IACZ,IAAI,CAAC;QACH,OAAO,IAAA,gCAAqB,EAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACtD,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC,CAAC;AATW,QAAA,0BAA0B,8BASrC;AAEF;;;;GAIG;AACI,MAAM,wCAAwC,GAAG,CACtD,MAAc,EACd,aAAqB,EACG,EAAE;IAC1B,IAAI,CAAC;QACH,OAAO,IAAA,8CAAmC,EAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACpE,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC,CAAC;AATW,QAAA,wCAAwC,4CASnD"}
@@ -0,0 +1,28 @@
1
+ import type { Config } from "../../../../packages/pipeline/src/index.js";
2
+ import type { IO } from "../core/types";
3
+ /** file name of a component/env key, relative to the local access folder */
4
+ export declare const getLocalAccessKeyFileName: (env: string, componentName: string) => string;
5
+ /**
6
+ * env var exposing the key file path. Deliberately NOT
7
+ * GOOGLE_APPLICATION_CREDENTIALS: the key must only be used where a
8
+ * command opts in (isolated gcloud config, or a declared
9
+ * `credentialsEnvVar`), never by ADC implicitly.
10
+ */
11
+ export declare const getLocalAccessKeyFileVarName: (env: string) => string;
12
+ /**
13
+ * env vars pointing at the key files that exist for the component
14
+ * (only paths, no secrets): one per env, plus the declared
15
+ * `credentialsEnvVar` names
16
+ */
17
+ export declare const getLocalAccessKeyFileVars: (config: Config, componentName: string) => Promise<Record<string, string>>;
18
+ /**
19
+ * writes the stored local access service account keys to gitignored
20
+ * files (mode 0600) and removes files of declarations that are gone.
21
+ * A no-op without any declaration (nothing is created). Never throws:
22
+ * a vault that cannot be reached or an invalid declaration (reported by
23
+ * `project doctor`) must not break catenv.
24
+ *
25
+ * The key is only read through the cache; if setup rotated it on another
26
+ * machine, refresh with `catenv --vault-mode refresh`.
27
+ */
28
+ export declare const writeLocalAccessKeyFiles: (io: IO, config: Config) => Promise<void>;
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.writeLocalAccessKeyFiles = exports.getLocalAccessKeyFileVars = exports.getLocalAccessKeyFileVarName = exports.getLocalAccessKeyFileName = void 0;
4
+ const pipeline_1 = require("../../../../packages/pipeline/src/index.js");
5
+ const promises_1 = require("fs/promises");
6
+ const fs_1 = require("fs");
7
+ const path_1 = require("path");
8
+ const writePrivateFile_1 = require("../utils/writePrivateFile");
9
+ const declared_1 = require("./declared");
10
+ const gitProjectInformation_1 = require("../git/gitProjectInformation");
11
+ const sanitize = (s) => s.replace(/[^A-Za-z0-9]+/g, "_");
12
+ /** file name of a component/env key, relative to the local access folder */
13
+ const getLocalAccessKeyFileName = (env, componentName) => `gcp-${sanitize(env)}-${sanitize(componentName)}.json`;
14
+ exports.getLocalAccessKeyFileName = getLocalAccessKeyFileName;
15
+ /**
16
+ * env var exposing the key file path. Deliberately NOT
17
+ * GOOGLE_APPLICATION_CREDENTIALS: the key must only be used where a
18
+ * command opts in (isolated gcloud config, or a declared
19
+ * `credentialsEnvVar`), never by ADC implicitly.
20
+ */
21
+ const getLocalAccessKeyFileVarName = (env) => `CATLADDER_LOCAL_ACCESS_GCP_${sanitize(env).toUpperCase()}_KEY_FILE`;
22
+ exports.getLocalAccessKeyFileVarName = getLocalAccessKeyFileVarName;
23
+ // inside .catladder/, which ignores itself (see vault/cache.ts)
24
+ const getFolder = async () => (0, path_1.join)(await (0, gitProjectInformation_1.getProjectRootPath)(), ".catladder", "local-access");
25
+ /**
26
+ * env vars pointing at the key files that exist for the component
27
+ * (only paths, no secrets): one per env, plus the declared
28
+ * `credentialsEnvVar` names
29
+ */
30
+ const getLocalAccessKeyFileVars = async (config, componentName) => {
31
+ const folder = await getFolder();
32
+ const getPath = (env) => (0, path_1.join)(folder, (0, exports.getLocalAccessKeyFileName)(env, componentName));
33
+ return Object.fromEntries([
34
+ ...(0, declared_1.getDeclaredLocalAccessEnvs)(config, componentName).map((env) => [
35
+ (0, exports.getLocalAccessKeyFileVarName)(env),
36
+ getPath(env),
37
+ ]),
38
+ ...Object.entries((0, declared_1.getDeclaredLocalAccessCredentialsEnvVars)(config, componentName)).map(([name, env]) => [name, getPath(env)]),
39
+ ].filter(([, path]) => (0, fs_1.existsSync)(path)));
40
+ };
41
+ exports.getLocalAccessKeyFileVars = getLocalAccessKeyFileVars;
42
+ /**
43
+ * writes the stored local access service account keys to gitignored
44
+ * files (mode 0600) and removes files of declarations that are gone.
45
+ * A no-op without any declaration (nothing is created). Never throws:
46
+ * a vault that cannot be reached or an invalid declaration (reported by
47
+ * `project doctor`) must not break catenv.
48
+ *
49
+ * The key is only read through the cache; if setup rotated it on another
50
+ * machine, refresh with `catenv --vault-mode refresh`.
51
+ */
52
+ const writeLocalAccessKeyFiles = async (io, config) => {
53
+ const wanted = Object.keys(config.components).flatMap((componentName) => (0, declared_1.getDeclaredLocalAccessEnvs)(config, componentName).map((env) => ({
54
+ env,
55
+ componentName,
56
+ secretName: (0, pipeline_1.getSecretVarName)("local", componentName, (0, pipeline_1.getLocalAccessGcpSecretName)(env)),
57
+ fileName: (0, exports.getLocalAccessKeyFileName)(env, componentName),
58
+ })));
59
+ const folder = await getFolder();
60
+ if (wanted.length === 0 && !(0, fs_1.existsSync)(folder))
61
+ return;
62
+ try {
63
+ const secrets = wanted.length > 0
64
+ ? await (await io.getVaultManager()).readSecrets(wanted.map((w) => w.secretName), io)
65
+ : {};
66
+ await (0, promises_1.mkdir)(folder, { recursive: true, mode: 0o700 });
67
+ // the parent folder ignores itself
68
+ await (0, promises_1.writeFile)((0, path_1.join)(folder, "..", ".gitignore"), "*\n");
69
+ const written = new Set();
70
+ for (const { secretName, fileName, env, componentName } of wanted) {
71
+ const key = secrets[secretName];
72
+ if (!key) {
73
+ io.log(`⚠️ no local access key for ${env}:${componentName} in the secret store — run \`catladder project setup\` (or \`catenv --vault-mode refresh\` if it was set up on another machine)`);
74
+ continue;
75
+ }
76
+ const path = (0, path_1.join)(folder, fileName);
77
+ await (0, writePrivateFile_1.writePrivateFile)(path, key);
78
+ written.add(fileName);
79
+ }
80
+ for (const file of await (0, promises_1.readdir)(folder)) {
81
+ if (!written.has(file)) {
82
+ await (0, promises_1.rm)((0, path_1.join)(folder, file), { force: true });
83
+ }
84
+ }
85
+ }
86
+ catch (e) {
87
+ io.log(`⚠️ could not write local access keys: ${e.message}`);
88
+ }
89
+ };
90
+ exports.writeLocalAccessKeyFiles = writeLocalAccessKeyFiles;
91
+ //# sourceMappingURL=keyFiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyFiles.js","sourceRoot":"","sources":["../../../../../src/localAccess/keyFiles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * writes a file readable by the owner only. Goes through a 0600 temp
3
+ * file and a rename, so the content is never visible with looser
4
+ * permissions (writing first and chmod-ing afterwards would leave an
5
+ * existing 0644 file readable until the chmod).
6
+ */
7
+ export declare const writePrivateFile: (path: string, content: string) => Promise<void>;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.writePrivateFile = void 0;
4
+ const promises_1 = require("fs/promises");
5
+ /**
6
+ * writes a file readable by the owner only. Goes through a 0600 temp
7
+ * file and a rename, so the content is never visible with looser
8
+ * permissions (writing first and chmod-ing afterwards would leave an
9
+ * existing 0644 file readable until the chmod).
10
+ */
11
+ const writePrivateFile = async (path, content) => {
12
+ const tmp = `${path}.${process.pid}.tmp`;
13
+ try {
14
+ await (0, promises_1.writeFile)(tmp, content, { mode: 0o600 });
15
+ // the mode is only applied when the file is created
16
+ await (0, promises_1.chmod)(tmp, 0o600);
17
+ await (0, promises_1.rename)(tmp, path);
18
+ }
19
+ catch (e) {
20
+ await (0, promises_1.rm)(tmp, { force: true });
21
+ throw e;
22
+ }
23
+ };
24
+ exports.writePrivateFile = writePrivateFile;
25
+ //# sourceMappingURL=writePrivateFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writePrivateFile.js","sourceRoot":"","sources":["../../../../../src/utils/writePrivateFile.ts"],"names":[],"mappings":";;;AAAA,0CAA2D;AAE3D;;;;;GAKG;AACI,MAAM,gBAAgB,GAAG,KAAK,EAAE,IAAY,EAAE,OAAe,EAAE,EAAE;IACtE,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC;IACzC,IAAI,CAAC;QACH,MAAM,IAAA,oBAAS,EAAC,GAAG,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/C,oDAAoD;QACpD,MAAM,IAAA,gBAAK,EAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACxB,MAAM,IAAA,iBAAM,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAA,aAAE,EAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/B,MAAM,CAAC,CAAC;IACV,CAAC;AACH,CAAC,CAAC;AAXW,QAAA,gBAAgB,oBAW3B"}
@@ -100,30 +100,21 @@ class BitwardenVault {
100
100
  : {};
101
101
  const notes = (0, yaml_1.stringify)({ ...previous, ...secrets });
102
102
  if (existing) {
103
- await (0, bw_1.runBw)(bwSession, [
104
- "edit",
105
- "item",
106
- existing.id,
107
- encodePayload({ ...existing, notes }),
108
- ]);
103
+ await (0, bw_1.runBw)(bwSession, ["edit", "item", existing.id], encodePayload({ ...existing, notes }));
109
104
  }
110
105
  else {
111
- await (0, bw_1.runBw)(bwSession, [
112
- "create",
113
- "item",
114
- encodePayload({
115
- type: SECURE_NOTE_TYPE,
116
- secureNote: { type: 0 },
117
- name,
118
- notes,
119
- ...(collection.organizationId
120
- ? {
121
- organizationId: collection.organizationId,
122
- collectionIds: [collection.id],
123
- }
124
- : {}),
125
- }),
126
- ]);
106
+ await (0, bw_1.runBw)(bwSession, ["create", "item"], encodePayload({
107
+ type: SECURE_NOTE_TYPE,
108
+ secureNote: { type: 0 },
109
+ name,
110
+ notes,
111
+ ...(collection.organizationId
112
+ ? {
113
+ organizationId: collection.organizationId,
114
+ collectionIds: [collection.id],
115
+ }
116
+ : {}),
117
+ }));
127
118
  }
128
119
  }
129
120
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BitwardenVault.js","sourceRoot":"","sources":["../../../../../src/vault/BitwardenVault.ts"],"names":[],"mappings":";;;AAAA,kDAAuD;AAEvD,+BAAwC;AAExC,6BAAsD;AAGtD,MAAM,kBAAkB,GAAG,WAAW,CAAC;AAEvC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAW3B;;;GAGG;AACH,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAE,GAAW,EAAE,aAAqB,EAAU,EAAE,CAC9E,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,OAAO,IAAI,GAAG,IAAI,aAAa,cAAc,CAAC;AAEjF,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,EAAE,CACpC,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC;AAE9C;;GAEG;AACH,MAAM,aAAa,GAAG,CAAC,MAAc,EAAE,IAAY,EAAE,EAAE;IACrD,MAAM,KAAK,GAAG,IAAI;SACf,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;SAChC,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAC7C,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACnE,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,KAAK,EAC1B,OAAe,EACf,cAAsB,EACC,EAAE;IACzB,MAAM,WAAW,GAAG,MAAM,IAAA,cAAS,EAAiB,OAAO,EAAE;QAC3D,MAAM;QACN,aAAa;QACb,UAAU;QACV,cAAc;KACf,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;IACtE,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CACb,yBAAyB,cAAc,uDAAuD,CAC/F,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,OAAgB,EAAE,EAAE,CACzC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAEnE,MAAa,cAAc;IAKzB,YACmB,MAAc,EAC/B,OAAgC;IAChC;;;OAGG;IACc,WAAoB;;QANpB,WAAM,GAAN,MAAM,CAAQ;QAMd,gBAAW,GAAX,WAAW,CAAS;QAErC,IAAI,CAAC,cAAc,GAAG,MAAA,OAAO,CAAC,UAAU,mCAAI,kBAAkB,CAAC;QAC/D,IAAI,CAAC,EAAE,GAAG,aAAa,IAAI,CAAC,cAAc,EAAE,CAAC;IAC/C,CAAC;IAEO,OAAO,CAAC,EAAa;QAC3B,OAAO,IAAA,iBAAY,EAAC,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,EAAa;QAChC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;QACxC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG,MAAM,IAAA,cAAS,EAAW,SAAS,EAAE;YACjD,MAAM;YACN,OAAO;YACP,gBAAgB;YAChB,UAAU,CAAC,EAAE;SACd,CAAC,CAAC;QAEH,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAChD,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC3B,SAAS;YACX,CAAC;YACD,MAAM,MAAM,GAAG,IAAA,YAAK,EAAC,IAAI,CAAC,KAAK,CAAmC,CAAC;YACnE,MAAM,CAAC,OAAO,CAAC,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBACpD,OAAO,CAAC,IAAA,2BAAgB,EAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;oBAC9D,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,YAAY,CAChB,EAAM,EACN,GAAW,EACX,aAAqB,EACrB,OAAgC;;QAEhC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;QACxC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QACnE,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;QAElD,MAAM,QAAQ,GAAG,CACf,MAAM,IAAA,cAAS,EAAW,SAAS,EAAE;YACnC,MAAM;YACN,OAAO;YACP,gBAAgB;YAChB,UAAU,CAAC,EAAE;YACb,UAAU;YACV,IAAI;SACL,CAAC,CACH,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAErC,MAAM,QAAQ,GAAG,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK;YAC9B,CAAC,CAAC,CAAC,MAAC,IAAA,YAAK,EAAC,QAAQ,CAAC,KAAK,CAAoC,mCAAI,EAAE,CAAC;YACnE,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,KAAK,GAAG,IAAA,gBAAS,EAAC,EAAE,GAAG,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;QAErD,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAA,UAAK,EAAC,SAAS,EAAE;gBACrB,MAAM;gBACN,MAAM;gBACN,QAAQ,CAAC,EAAE;gBACX,aAAa,CAAC,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,CAAC;aACtC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,IAAA,UAAK,EAAC,SAAS,EAAE;gBACrB,QAAQ;gBACR,MAAM;gBACN,aAAa,CAAC;oBACZ,IAAI,EAAE,gBAAgB;oBACtB,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;oBACvB,IAAI;oBACJ,KAAK;oBACL,GAAG,CAAC,UAAU,CAAC,cAAc;wBAC3B,CAAC,CAAC;4BACE,cAAc,EAAE,UAAU,CAAC,cAAc;4BACzC,aAAa,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;yBAC/B;wBACH,CAAC,CAAC,EAAE,CAAC;iBACR,CAAC;aACH,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF;AA3GD,wCA2GC"}
1
+ {"version":3,"file":"BitwardenVault.js","sourceRoot":"","sources":["../../../../../src/vault/BitwardenVault.ts"],"names":[],"mappings":";;;AAAA,kDAAuD;AAEvD,+BAAwC;AAExC,6BAAsD;AAGtD,MAAM,kBAAkB,GAAG,WAAW,CAAC;AAEvC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAW3B;;;GAGG;AACH,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAE,GAAW,EAAE,aAAqB,EAAU,EAAE,CAC9E,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,OAAO,IAAI,GAAG,IAAI,aAAa,cAAc,CAAC;AAEjF,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,EAAE,CACpC,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC;AAE9C;;GAEG;AACH,MAAM,aAAa,GAAG,CAAC,MAAc,EAAE,IAAY,EAAE,EAAE;IACrD,MAAM,KAAK,GAAG,IAAI;SACf,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;SAChC,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAC7C,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACnE,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,KAAK,EAC1B,OAAe,EACf,cAAsB,EACC,EAAE;IACzB,MAAM,WAAW,GAAG,MAAM,IAAA,cAAS,EAAiB,OAAO,EAAE;QAC3D,MAAM;QACN,aAAa;QACb,UAAU;QACV,cAAc;KACf,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;IACtE,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CACb,yBAAyB,cAAc,uDAAuD,CAC/F,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,OAAgB,EAAE,EAAE,CACzC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAEnE,MAAa,cAAc;IAKzB,YACmB,MAAc,EAC/B,OAAgC;IAChC;;;OAGG;IACc,WAAoB;;QANpB,WAAM,GAAN,MAAM,CAAQ;QAMd,gBAAW,GAAX,WAAW,CAAS;QAErC,IAAI,CAAC,cAAc,GAAG,MAAA,OAAO,CAAC,UAAU,mCAAI,kBAAkB,CAAC;QAC/D,IAAI,CAAC,EAAE,GAAG,aAAa,IAAI,CAAC,cAAc,EAAE,CAAC;IAC/C,CAAC;IAEO,OAAO,CAAC,EAAa;QAC3B,OAAO,IAAA,iBAAY,EAAC,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,EAAa;QAChC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;QACxC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG,MAAM,IAAA,cAAS,EAAW,SAAS,EAAE;YACjD,MAAM;YACN,OAAO;YACP,gBAAgB;YAChB,UAAU,CAAC,EAAE;SACd,CAAC,CAAC;QAEH,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAChD,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC3B,SAAS;YACX,CAAC;YACD,MAAM,MAAM,GAAG,IAAA,YAAK,EAAC,IAAI,CAAC,KAAK,CAAmC,CAAC;YACnE,MAAM,CAAC,OAAO,CAAC,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBACpD,OAAO,CAAC,IAAA,2BAAgB,EAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;oBAC9D,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,YAAY,CAChB,EAAM,EACN,GAAW,EACX,aAAqB,EACrB,OAAgC;;QAEhC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;QACxC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QACnE,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;QAElD,MAAM,QAAQ,GAAG,CACf,MAAM,IAAA,cAAS,EAAW,SAAS,EAAE;YACnC,MAAM;YACN,OAAO;YACP,gBAAgB;YAChB,UAAU,CAAC,EAAE;YACb,UAAU;YACV,IAAI;SACL,CAAC,CACH,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAErC,MAAM,QAAQ,GAAG,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK;YAC9B,CAAC,CAAC,CAAC,MAAC,IAAA,YAAK,EAAC,QAAQ,CAAC,KAAK,CAAoC,mCAAI,EAAE,CAAC;YACnE,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,KAAK,GAAG,IAAA,gBAAS,EAAC,EAAE,GAAG,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;QAErD,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAA,UAAK,EACT,SAAS,EACT,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,EAC7B,aAAa,CAAC,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,CAAC,CACtC,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,IAAA,UAAK,EACT,SAAS,EACT,CAAC,QAAQ,EAAE,MAAM,CAAC,EAClB,aAAa,CAAC;gBACZ,IAAI,EAAE,gBAAgB;gBACtB,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;gBACvB,IAAI;gBACJ,KAAK;gBACL,GAAG,CAAC,UAAU,CAAC,cAAc;oBAC3B,CAAC,CAAC;wBACE,cAAc,EAAE,UAAU,CAAC,cAAc;wBACzC,aAAa,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;qBAC/B;oBACH,CAAC,CAAC,EAAE,CAAC;aACR,CAAC,CACH,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AA1GD,wCA0GC"}
@@ -34,10 +34,16 @@ export declare class VaultManager {
34
34
  * local cache (write-through, "local" env only)
35
35
  */
36
36
  writeSecrets(env: string, componentName: string, secrets: Record<string, unknown>, io?: IO | null, options?: WriteSecretsOptions): Promise<void>;
37
+ /**
38
+ * updates the local cache only (the vault already holds the values),
39
+ * "local" env only
40
+ */
41
+ cacheSecrets(env: string, componentName: string, secrets: Record<string, string>): Promise<void>;
37
42
  /**
38
43
  * the subset of the vault secrets that may be cached: the declared
39
44
  * secrets of the "local" env, per component, as a hierarchy
40
45
  */
41
46
  private cacheableSubset;
42
47
  private declaredSecretKeys;
48
+ private declaredEnvSecretKeys;
43
49
  }
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VaultManager = void 0;
4
4
  const pipeline_1 = require("../../../../packages/pipeline/src/index.js");
5
+ const declared_1 = require("../localAccess/declared");
5
6
  const BitwardenVault_1 = require("./BitwardenVault");
6
7
  const cache_1 = require("./cache");
7
8
  const GitlabVault_1 = require("./GitlabVault");
@@ -84,6 +85,15 @@ class VaultManager {
84
85
  ])));
85
86
  }
86
87
  }
88
+ /**
89
+ * updates the local cache only (the vault already holds the values),
90
+ * "local" env only
91
+ */
92
+ async cacheSecrets(env, componentName, secrets) {
93
+ if (env !== CACHED_ENV)
94
+ return;
95
+ await (0, cache_1.updateSecretsCache)(this.vault.id, env, componentName, secrets);
96
+ }
87
97
  /**
88
98
  * the subset of the vault secrets that may be cached: the declared
89
99
  * secrets of the "local" env, per component, as a hierarchy
@@ -107,6 +117,14 @@ class VaultManager {
107
117
  return Object.keys(local).length > 0 ? { [CACHED_ENV]: local } : {};
108
118
  }
109
119
  async declaredSecretKeys(componentName) {
120
+ return [
121
+ ...(await this.declaredEnvSecretKeys(componentName)),
122
+ // the local access keys `project setup` provisions are not part
123
+ // of any env's vars, but belong to the cached local secrets
124
+ ...(0, declared_1.getDeclaredLocalAccessEnvs)(this.config, componentName).map(pipeline_1.getLocalAccessGcpSecretName),
125
+ ];
126
+ }
127
+ async declaredEnvSecretKeys(componentName) {
110
128
  try {
111
129
  const { secretEnvVarKeys, jobOnlyVars } = await (0, pipeline_1.getEnvironment)({
112
130
  config: this.config,
@@ -1 +1 @@
1
- {"version":3,"file":"VaultManager.js","sourceRoot":"","sources":["../../../../../src/vault/VaultManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VaultManager.js","sourceRoot":"","sources":["../../../../../src/vault/VaultManager.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,11 @@ export declare const getBwSession: (io: IO | null, { allowPrompt }: {
7
7
  allowPrompt: boolean;
8
8
  }) => Promise<string>;
9
9
  /**
10
- * runs a bw command with the given session and returns stdout
10
+ * runs a bw command with the given session and returns stdout.
11
+ *
12
+ * `input` is written to stdin: use it for payloads (e.g. the secrets of
13
+ * `bw create item`), which would otherwise be visible in `ps` and be
14
+ * echoed by node's "Command failed" error.
11
15
  */
12
- export declare const runBw: (session: string, args: string[]) => Promise<string>;
16
+ export declare const runBw: (session: string, args: string[], input?: string) => Promise<string>;
13
17
  export declare const runBwJson: <T>(session: string, args: string[]) => Promise<T>;