@1claw/cli 0.50.0 → 0.51.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 +28 -1
- package/dist/src/commands/env.d.ts.map +1 -1
- package/dist/src/commands/env.js +371 -96
- package/dist/src/commands/env.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# @1claw/cli (v0.
|
|
1
|
+
# @1claw/cli (v0.51.0)
|
|
2
2
|
|
|
3
3
|
Command-line interface for [1Claw](https://1claw.xyz).
|
|
4
4
|
|
|
@@ -167,15 +167,42 @@ echo "sk_live_..." | 1claw secret set <path> --stdin # From stdin
|
|
|
167
167
|
|
|
168
168
|
```bash
|
|
169
169
|
1claw env pull # Pull secrets as .env format
|
|
170
|
+
1claw env pull -e production # Pull for a specific environment
|
|
170
171
|
1claw env pull --format json # As JSON
|
|
171
172
|
1claw env pull --format shell # As export statements
|
|
172
173
|
1claw env pull -o .env.local # Write to file
|
|
173
174
|
1claw env push .env # Push .env file to vault
|
|
175
|
+
1claw env push .env -e staging # Push to a specific environment
|
|
174
176
|
1claw env run -- npm start # Run with secrets injected
|
|
177
|
+
1claw env run -e production -- npm start # Run with a specific environment
|
|
175
178
|
1claw env run --prefix config/ -- ./deploy.sh # Only inject matching secrets
|
|
176
179
|
1claw env run --no-cache -- npm start # Skip local cache, always fetch from API
|
|
177
180
|
```
|
|
178
181
|
|
|
182
|
+
### Environment Variables (Structured)
|
|
183
|
+
|
|
184
|
+
Manage per-vault environment variables with environment scoping and precedence-based resolution.
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
1claw env ls # List all env vars
|
|
188
|
+
1claw env ls production # List env vars for a specific environment
|
|
189
|
+
1claw env add DATABASE_URL # Add env var (prompts for value)
|
|
190
|
+
1claw env add DATABASE_URL production # Add env var scoped to an environment
|
|
191
|
+
1claw env add API_KEY --sensitive # Mark as sensitive (write-only)
|
|
192
|
+
1claw env rm DATABASE_URL # Remove env var
|
|
193
|
+
1claw env rm DATABASE_URL preview # Remove env var from a specific environment
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
### Environment Management
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
1claw env environments ls # List environments for the vault
|
|
200
|
+
1claw env environments add staging # Create a custom environment
|
|
201
|
+
1claw env environments rm staging # Delete a custom environment
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
The `-e, --environment` flag is available on `env pull`, `env push`, and `env run` to scope operations to a specific environment.
|
|
205
|
+
|
|
179
206
|
### Environment Cache (Offline Mode)
|
|
180
207
|
|
|
181
208
|
Cache secrets locally in an AES-256-GCM encrypted file for offline `env run`. The encryption key is derived from your authentication token.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../src/commands/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../src/commands/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqKpC,eAAO,MAAM,UAAU,SAEtB,CAAC"}
|
package/dist/src/commands/env.js
CHANGED
|
@@ -3,15 +3,106 @@ import { spawn } from "node:child_process";
|
|
|
3
3
|
import { readFile, writeFile } from "node:fs/promises";
|
|
4
4
|
import chalk from "chalk";
|
|
5
5
|
import ora from "ora";
|
|
6
|
+
import { createInterface } from "node:readline";
|
|
6
7
|
import { api } from "../client.js";
|
|
7
8
|
import { requireToken, resolveVaultId, handleError } from "../middleware.js";
|
|
8
|
-
import { printSuccess, printInfo, printKeyValue } from "../output.js";
|
|
9
|
+
import { printSuccess, printInfo, printError, printKeyValue, printTable, formatDate, } from "../output.js";
|
|
9
10
|
import { writeCache, readCache, clearCache, getCacheInfo, getCachePath, } from "../local-cache.js";
|
|
11
|
+
const DEFAULT_ENVIRONMENTS = ["production", "preview", "development"];
|
|
12
|
+
function validateEnvironment(env) {
|
|
13
|
+
if (!env)
|
|
14
|
+
return undefined;
|
|
15
|
+
return env;
|
|
16
|
+
}
|
|
17
|
+
async function readStdinIfPiped() {
|
|
18
|
+
if (process.stdin.isTTY)
|
|
19
|
+
return null;
|
|
20
|
+
const chunks = [];
|
|
21
|
+
for await (const chunk of process.stdin) {
|
|
22
|
+
chunks.push(chunk);
|
|
23
|
+
}
|
|
24
|
+
return Buffer.concat(chunks).toString("utf-8").trimEnd();
|
|
25
|
+
}
|
|
26
|
+
async function promptMaskedValue(prompt) {
|
|
27
|
+
const rl = createInterface({
|
|
28
|
+
input: process.stdin,
|
|
29
|
+
output: process.stderr,
|
|
30
|
+
terminal: true,
|
|
31
|
+
});
|
|
32
|
+
return new Promise((resolve) => {
|
|
33
|
+
const origWrite = process.stderr.write;
|
|
34
|
+
let masking = false;
|
|
35
|
+
// Suppress echo so typed characters aren't visible
|
|
36
|
+
process.stderr.write = function (...args) {
|
|
37
|
+
if (masking && typeof args[0] === "string") {
|
|
38
|
+
return origWrite.call(this, "*");
|
|
39
|
+
}
|
|
40
|
+
return origWrite.apply(this, args);
|
|
41
|
+
};
|
|
42
|
+
process.stderr.write(prompt);
|
|
43
|
+
masking = true;
|
|
44
|
+
rl.question("", (answer) => {
|
|
45
|
+
masking = false;
|
|
46
|
+
process.stderr.write = origWrite;
|
|
47
|
+
process.stderr.write("\n");
|
|
48
|
+
rl.close();
|
|
49
|
+
resolve(answer);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
async function confirm(message) {
|
|
54
|
+
const rl = createInterface({
|
|
55
|
+
input: process.stdin,
|
|
56
|
+
output: process.stderr,
|
|
57
|
+
terminal: true,
|
|
58
|
+
});
|
|
59
|
+
return new Promise((resolve) => {
|
|
60
|
+
rl.question(`${message} (y/N) `, (answer) => {
|
|
61
|
+
rl.close();
|
|
62
|
+
resolve(answer.trim().toLowerCase() === "y");
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
async function fetchLegacyEnvVars(vaultId, prefix) {
|
|
67
|
+
const query = {};
|
|
68
|
+
if (prefix)
|
|
69
|
+
query.prefix = prefix;
|
|
70
|
+
const response = await api(`/vaults/${vaultId}/secrets`, { query });
|
|
71
|
+
const secrets = response.secrets;
|
|
72
|
+
const envSecrets = secrets.filter((s) => s.type === "env_bundle" ||
|
|
73
|
+
s.type === "api_key" ||
|
|
74
|
+
s.type === "password");
|
|
75
|
+
const values = {};
|
|
76
|
+
for (const s of envSecrets) {
|
|
77
|
+
const detail = await api(`/vaults/${vaultId}/secrets/${encodeURIComponent(s.path)}`);
|
|
78
|
+
if (s.type === "env_bundle") {
|
|
79
|
+
for (const line of detail.value.split("\n")) {
|
|
80
|
+
const trimmed = line.trim();
|
|
81
|
+
if (!trimmed || trimmed.startsWith("#"))
|
|
82
|
+
continue;
|
|
83
|
+
const eqIdx = trimmed.indexOf("=");
|
|
84
|
+
if (eqIdx > 0) {
|
|
85
|
+
values[trimmed.slice(0, eqIdx).trim()] = trimmed
|
|
86
|
+
.slice(eqIdx + 1)
|
|
87
|
+
.trim()
|
|
88
|
+
.replace(/^["']|["']$/g, "");
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
const envKey = s.path.replace(/[/-]/g, "_").toUpperCase();
|
|
94
|
+
values[envKey] = detail.value;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return values;
|
|
98
|
+
}
|
|
10
99
|
export const envCommand = new Command("env").description("Environment variable management for CI/CD");
|
|
100
|
+
// --- env pull ---
|
|
11
101
|
envCommand
|
|
12
102
|
.command("pull")
|
|
13
103
|
.description("Pull secrets from a vault as environment variables")
|
|
14
104
|
.option("-v, --vault <id>", "Vault ID")
|
|
105
|
+
.option("-e, --environment <env>", "Target environment (production, preview, development)")
|
|
15
106
|
.option("--prefix <prefix>", "Only pull secrets under this path prefix")
|
|
16
107
|
.option("-f, --format <format>", "Output format: dotenv, json, shell", "dotenv")
|
|
17
108
|
.option("-o, --output <file>", "Write to file instead of stdout")
|
|
@@ -19,35 +110,15 @@ envCommand
|
|
|
19
110
|
try {
|
|
20
111
|
requireToken();
|
|
21
112
|
const vaultId = resolveVaultId(opts);
|
|
113
|
+
const env = validateEnvironment(opts.environment);
|
|
22
114
|
const spinner = ora("Fetching secrets…").start();
|
|
23
|
-
|
|
24
|
-
if (
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
const values = {};
|
|
31
|
-
for (const s of envSecrets) {
|
|
32
|
-
const detail = await api(`/vaults/${vaultId}/secrets/${encodeURIComponent(s.path)}`);
|
|
33
|
-
if (s.secret_type === "env_bundle") {
|
|
34
|
-
for (const line of detail.value.split("\n")) {
|
|
35
|
-
const trimmed = line.trim();
|
|
36
|
-
if (!trimmed || trimmed.startsWith("#"))
|
|
37
|
-
continue;
|
|
38
|
-
const eqIdx = trimmed.indexOf("=");
|
|
39
|
-
if (eqIdx > 0) {
|
|
40
|
-
values[trimmed.slice(0, eqIdx).trim()] = trimmed
|
|
41
|
-
.slice(eqIdx + 1)
|
|
42
|
-
.trim()
|
|
43
|
-
.replace(/^["']|["']$/g, "");
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
const envKey = s.path.replace(/[/-]/g, "_").toUpperCase();
|
|
49
|
-
values[envKey] = detail.value;
|
|
50
|
-
}
|
|
115
|
+
let values;
|
|
116
|
+
if (env) {
|
|
117
|
+
const response = await api(`/vaults/${vaultId}/env-vars/resolve`, { query: { environment: env } });
|
|
118
|
+
values = response.variables;
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
values = await fetchLegacyEnvVars(vaultId, opts.prefix);
|
|
51
122
|
}
|
|
52
123
|
spinner.stop();
|
|
53
124
|
let output;
|
|
@@ -81,43 +152,79 @@ envCommand
|
|
|
81
152
|
handleError(err);
|
|
82
153
|
}
|
|
83
154
|
});
|
|
155
|
+
// --- env push ---
|
|
84
156
|
envCommand
|
|
85
157
|
.command("push <file>")
|
|
86
|
-
.description("Push a .env file to vault as an env_bundle secret")
|
|
158
|
+
.description("Push a .env file to vault as env vars or an env_bundle secret")
|
|
87
159
|
.option("-v, --vault <id>", "Vault ID")
|
|
88
|
-
.option("-p, --path <path>", "Secret path in vault", "config/env")
|
|
160
|
+
.option("-p, --path <path>", "Secret path in vault (legacy mode)", "config/env")
|
|
161
|
+
.option("-e, --environment <env>", "Target environment (production, preview, development)")
|
|
162
|
+
.option("--sensitive", "Mark all vars as sensitive")
|
|
163
|
+
.option("--no-sensitive", "Mark all vars as not sensitive")
|
|
89
164
|
.action(async (file, opts) => {
|
|
90
165
|
try {
|
|
91
166
|
requireToken();
|
|
92
167
|
const vaultId = resolveVaultId(opts);
|
|
168
|
+
const env = validateEnvironment(opts.environment);
|
|
93
169
|
const content = await readFile(file, "utf-8");
|
|
94
|
-
const
|
|
170
|
+
const lines = content
|
|
95
171
|
.split("\n")
|
|
96
|
-
.filter((l) => l.trim() && !l.trim().startsWith("#"))
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
172
|
+
.filter((l) => l.trim() && !l.trim().startsWith("#"));
|
|
173
|
+
if (env) {
|
|
174
|
+
const spinner = ora("Pushing env vars…").start();
|
|
175
|
+
let count = 0;
|
|
176
|
+
const sensitive = opts.sensitive ?? (env === "production" || env === "preview");
|
|
177
|
+
for (const line of lines) {
|
|
178
|
+
const eqIdx = line.indexOf("=");
|
|
179
|
+
if (eqIdx <= 0)
|
|
180
|
+
continue;
|
|
181
|
+
const key = line.slice(0, eqIdx).trim();
|
|
182
|
+
const value = line
|
|
183
|
+
.slice(eqIdx + 1)
|
|
184
|
+
.trim()
|
|
185
|
+
.replace(/^["']|["']$/g, "");
|
|
186
|
+
await api(`/vaults/${vaultId}/env-vars`, {
|
|
187
|
+
method: "POST",
|
|
188
|
+
body: {
|
|
189
|
+
key,
|
|
190
|
+
value,
|
|
191
|
+
environments: [env],
|
|
192
|
+
sensitive,
|
|
193
|
+
},
|
|
194
|
+
});
|
|
195
|
+
count++;
|
|
196
|
+
}
|
|
197
|
+
spinner.stop();
|
|
198
|
+
printSuccess(`Pushed ${count} env vars from ${chalk.bold(file)} to ${chalk.bold(env)}`);
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
await api(`/vaults/${vaultId}/secrets/${encodeURIComponent(opts.path)}`, {
|
|
202
|
+
method: "PUT",
|
|
203
|
+
body: { value: content, type: "env_bundle" },
|
|
204
|
+
});
|
|
205
|
+
printSuccess(`Pushed ${lines.length} variables from ${chalk.bold(file)} to ${chalk.bold(opts.path)}`);
|
|
206
|
+
}
|
|
102
207
|
}
|
|
103
208
|
catch (err) {
|
|
104
209
|
handleError(err);
|
|
105
210
|
}
|
|
106
211
|
});
|
|
212
|
+
// --- env run ---
|
|
107
213
|
envCommand
|
|
108
214
|
.command("run <command...>")
|
|
109
215
|
.description("Run a command with vault secrets injected as environment variables")
|
|
110
216
|
.option("-v, --vault <id>", "Vault ID")
|
|
217
|
+
.option("-e, --environment <env>", "Target environment (production, preview, development)")
|
|
111
218
|
.option("--prefix <prefix>", "Only inject secrets under this path prefix")
|
|
112
219
|
.option("--no-cache", "Skip local cache, always fetch from API")
|
|
113
220
|
.action(async (commandParts, opts) => {
|
|
114
221
|
try {
|
|
115
222
|
const token = requireToken();
|
|
116
223
|
const vaultId = resolveVaultId(opts);
|
|
224
|
+
const env = validateEnvironment(opts.environment);
|
|
117
225
|
let envVars = null;
|
|
118
226
|
let source = "api";
|
|
119
|
-
|
|
120
|
-
if (opts.cache !== false) {
|
|
227
|
+
if (!env && opts.cache !== false) {
|
|
121
228
|
const cached = readCache(token, vaultId);
|
|
122
229
|
if (cached) {
|
|
123
230
|
envVars = cached;
|
|
@@ -126,33 +233,12 @@ envCommand
|
|
|
126
233
|
}
|
|
127
234
|
if (!envVars) {
|
|
128
235
|
const spinner = ora("Loading secrets…").start();
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
if (!["env_bundle", "api_key", "password"].includes(s.secret_type))
|
|
136
|
-
continue;
|
|
137
|
-
const detail = await api(`/vaults/${vaultId}/secrets/${encodeURIComponent(s.path)}`);
|
|
138
|
-
if (s.secret_type === "env_bundle") {
|
|
139
|
-
for (const line of detail.value.split("\n")) {
|
|
140
|
-
const trimmed = line.trim();
|
|
141
|
-
if (!trimmed || trimmed.startsWith("#"))
|
|
142
|
-
continue;
|
|
143
|
-
const eqIdx = trimmed.indexOf("=");
|
|
144
|
-
if (eqIdx > 0) {
|
|
145
|
-
envVars[trimmed.slice(0, eqIdx).trim()] = trimmed
|
|
146
|
-
.slice(eqIdx + 1)
|
|
147
|
-
.trim()
|
|
148
|
-
.replace(/^["']|["']$/g, "");
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
else {
|
|
153
|
-
envVars[s.path.replace(/[/-]/g, "_").toUpperCase()] =
|
|
154
|
-
detail.value;
|
|
155
|
-
}
|
|
236
|
+
if (env) {
|
|
237
|
+
const response = await api(`/vaults/${vaultId}/env-vars/resolve`, { query: { environment: env } });
|
|
238
|
+
envVars = response.variables;
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
envVars = await fetchLegacyEnvVars(vaultId, opts.prefix);
|
|
156
242
|
}
|
|
157
243
|
spinner.stop();
|
|
158
244
|
}
|
|
@@ -172,6 +258,133 @@ envCommand
|
|
|
172
258
|
handleError(err);
|
|
173
259
|
}
|
|
174
260
|
});
|
|
261
|
+
// --- env ls ---
|
|
262
|
+
envCommand
|
|
263
|
+
.command("ls [environment]")
|
|
264
|
+
.description("List env vars for the vault")
|
|
265
|
+
.option("-v, --vault <id>", "Vault ID")
|
|
266
|
+
.action(async (environment, opts) => {
|
|
267
|
+
try {
|
|
268
|
+
requireToken();
|
|
269
|
+
const vaultId = resolveVaultId(opts);
|
|
270
|
+
const env = validateEnvironment(environment);
|
|
271
|
+
const spinner = ora("Fetching env vars…").start();
|
|
272
|
+
const query = {};
|
|
273
|
+
if (env)
|
|
274
|
+
query.environment = env;
|
|
275
|
+
const response = await api(`/vaults/${vaultId}/env-vars`, { query });
|
|
276
|
+
spinner.stop();
|
|
277
|
+
const vars = response.env_vars;
|
|
278
|
+
if (vars.length === 0) {
|
|
279
|
+
printInfo(env
|
|
280
|
+
? `No env vars found for ${chalk.bold(env)}.`
|
|
281
|
+
: "No env vars found.");
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
const rows = vars.map((v) => ({
|
|
285
|
+
key: v.key,
|
|
286
|
+
environments: v.environments.join(", "),
|
|
287
|
+
sensitive: v.sensitive ? "Yes" : "No",
|
|
288
|
+
updated: formatDate(v.updated_at),
|
|
289
|
+
}));
|
|
290
|
+
printTable(rows, [
|
|
291
|
+
{ key: "key", header: "KEY", width: 24 },
|
|
292
|
+
{ key: "environments", header: "ENVIRONMENTS", width: 22 },
|
|
293
|
+
{ key: "sensitive", header: "SENSITIVE", width: 10 },
|
|
294
|
+
{ key: "updated", header: "UPDATED" },
|
|
295
|
+
]);
|
|
296
|
+
}
|
|
297
|
+
catch (err) {
|
|
298
|
+
handleError(err);
|
|
299
|
+
}
|
|
300
|
+
});
|
|
301
|
+
// --- env add ---
|
|
302
|
+
envCommand
|
|
303
|
+
.command("add <key> [environment]")
|
|
304
|
+
.description("Add an env var to the vault")
|
|
305
|
+
.option("-v, --vault <id>", "Vault ID")
|
|
306
|
+
.option("--sensitive", "Mark as sensitive (write-only)")
|
|
307
|
+
.option("--no-sensitive", "Explicitly not sensitive")
|
|
308
|
+
.action(async (key, environment, opts) => {
|
|
309
|
+
try {
|
|
310
|
+
requireToken();
|
|
311
|
+
const vaultId = resolveVaultId(opts);
|
|
312
|
+
const env = validateEnvironment(environment);
|
|
313
|
+
const environments = env ? [env] : DEFAULT_ENVIRONMENTS;
|
|
314
|
+
let sensitive;
|
|
315
|
+
if (opts.sensitive === true) {
|
|
316
|
+
sensitive = true;
|
|
317
|
+
}
|
|
318
|
+
else if (opts.sensitive === false) {
|
|
319
|
+
sensitive = false;
|
|
320
|
+
}
|
|
321
|
+
else {
|
|
322
|
+
sensitive = env === "production" || env === "preview";
|
|
323
|
+
}
|
|
324
|
+
const piped = await readStdinIfPiped();
|
|
325
|
+
let value;
|
|
326
|
+
if (piped !== null) {
|
|
327
|
+
value = piped;
|
|
328
|
+
}
|
|
329
|
+
else {
|
|
330
|
+
value = await promptMaskedValue(`Enter value for ${chalk.bold(key)}: `);
|
|
331
|
+
if (!value) {
|
|
332
|
+
printError("Value cannot be empty.");
|
|
333
|
+
process.exit(1);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
const spinner = ora("Adding env var…").start();
|
|
337
|
+
await api(`/vaults/${vaultId}/env-vars`, {
|
|
338
|
+
method: "POST",
|
|
339
|
+
body: {
|
|
340
|
+
key,
|
|
341
|
+
value,
|
|
342
|
+
environments,
|
|
343
|
+
sensitive,
|
|
344
|
+
},
|
|
345
|
+
});
|
|
346
|
+
spinner.stop();
|
|
347
|
+
printSuccess(`Added ${chalk.bold(key)} → ${chalk.dim(environments.join(", "))}` +
|
|
348
|
+
(sensitive ? chalk.dim(" (sensitive)") : ""));
|
|
349
|
+
}
|
|
350
|
+
catch (err) {
|
|
351
|
+
handleError(err);
|
|
352
|
+
}
|
|
353
|
+
});
|
|
354
|
+
// --- env rm ---
|
|
355
|
+
envCommand
|
|
356
|
+
.command("rm <key> [environment]")
|
|
357
|
+
.description("Remove an env var from the vault")
|
|
358
|
+
.option("-v, --vault <id>", "Vault ID")
|
|
359
|
+
.option("-y, --yes", "Skip confirmation prompt")
|
|
360
|
+
.action(async (key, environment, opts) => {
|
|
361
|
+
try {
|
|
362
|
+
requireToken();
|
|
363
|
+
const vaultId = resolveVaultId(opts);
|
|
364
|
+
const env = validateEnvironment(environment);
|
|
365
|
+
const target = env ?? "all environments";
|
|
366
|
+
if (!opts.yes) {
|
|
367
|
+
const ok = await confirm(`Remove ${chalk.bold(key)} from ${chalk.bold(target)}?`);
|
|
368
|
+
if (!ok) {
|
|
369
|
+
printInfo("Cancelled.");
|
|
370
|
+
return;
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
const spinner = ora("Removing env var…").start();
|
|
374
|
+
const query = {};
|
|
375
|
+
if (env)
|
|
376
|
+
query.environment = env;
|
|
377
|
+
await api(`/vaults/${vaultId}/env-vars/${encodeURIComponent(key)}`, {
|
|
378
|
+
method: "DELETE",
|
|
379
|
+
query,
|
|
380
|
+
});
|
|
381
|
+
spinner.stop();
|
|
382
|
+
printSuccess(`Removed ${chalk.bold(key)} from ${chalk.bold(target)}.`);
|
|
383
|
+
}
|
|
384
|
+
catch (err) {
|
|
385
|
+
handleError(err);
|
|
386
|
+
}
|
|
387
|
+
});
|
|
175
388
|
// --- Cache subcommands ---
|
|
176
389
|
envCommand
|
|
177
390
|
.command("cache")
|
|
@@ -184,35 +397,7 @@ envCommand
|
|
|
184
397
|
const token = requireToken();
|
|
185
398
|
const vaultId = resolveVaultId(opts);
|
|
186
399
|
const spinner = ora("Fetching secrets for local cache…").start();
|
|
187
|
-
const
|
|
188
|
-
if (opts.prefix)
|
|
189
|
-
query.prefix = opts.prefix;
|
|
190
|
-
const secrets = await api(`/vaults/${vaultId}/secrets`, { query });
|
|
191
|
-
const envSecrets = secrets.filter((s) => s.secret_type === "env_bundle" ||
|
|
192
|
-
s.secret_type === "api_key" ||
|
|
193
|
-
s.secret_type === "password");
|
|
194
|
-
const values = {};
|
|
195
|
-
for (const s of envSecrets) {
|
|
196
|
-
const detail = await api(`/vaults/${vaultId}/secrets/${encodeURIComponent(s.path)}`);
|
|
197
|
-
if (s.secret_type === "env_bundle") {
|
|
198
|
-
for (const line of detail.value.split("\n")) {
|
|
199
|
-
const trimmed = line.trim();
|
|
200
|
-
if (!trimmed || trimmed.startsWith("#"))
|
|
201
|
-
continue;
|
|
202
|
-
const eqIdx = trimmed.indexOf("=");
|
|
203
|
-
if (eqIdx > 0) {
|
|
204
|
-
values[trimmed.slice(0, eqIdx).trim()] = trimmed
|
|
205
|
-
.slice(eqIdx + 1)
|
|
206
|
-
.trim()
|
|
207
|
-
.replace(/^["']|["']$/g, "");
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
else {
|
|
212
|
-
const envKey = s.path.replace(/[/-]/g, "_").toUpperCase();
|
|
213
|
-
values[envKey] = detail.value;
|
|
214
|
-
}
|
|
215
|
-
}
|
|
400
|
+
const values = await fetchLegacyEnvVars(vaultId, opts.prefix);
|
|
216
401
|
const ttl = parseInt(opts.ttl, 10) || 3600;
|
|
217
402
|
writeCache(token, vaultId, values, ttl);
|
|
218
403
|
spinner.succeed(`Cached ${Object.keys(values).length} secrets locally (TTL: ${ttl}s)`);
|
|
@@ -258,6 +443,96 @@ envCommand
|
|
|
258
443
|
],
|
|
259
444
|
]);
|
|
260
445
|
});
|
|
446
|
+
const environmentsCmd = envCommand
|
|
447
|
+
.command("environments")
|
|
448
|
+
.description("Manage vault environments");
|
|
449
|
+
environmentsCmd
|
|
450
|
+
.command("ls")
|
|
451
|
+
.description("List environments for the vault")
|
|
452
|
+
.option("-v, --vault <id>", "Vault ID")
|
|
453
|
+
.action(async (opts) => {
|
|
454
|
+
try {
|
|
455
|
+
requireToken();
|
|
456
|
+
const vaultId = resolveVaultId(opts);
|
|
457
|
+
const spinner = ora("Fetching environments…").start();
|
|
458
|
+
const response = await api(`/vaults/${vaultId}/environments`);
|
|
459
|
+
spinner.stop();
|
|
460
|
+
const envs = response.environments;
|
|
461
|
+
if (envs.length === 0) {
|
|
462
|
+
printInfo("No environments found.");
|
|
463
|
+
return;
|
|
464
|
+
}
|
|
465
|
+
const rows = envs.map((e) => ({
|
|
466
|
+
slug: e.slug,
|
|
467
|
+
type: e.is_builtin ? "built-in" : "custom",
|
|
468
|
+
copied_from: e.copied_from ?? "-",
|
|
469
|
+
created: formatDate(e.created_at),
|
|
470
|
+
}));
|
|
471
|
+
printTable(rows, [
|
|
472
|
+
{ key: "slug", header: "SLUG", width: 20 },
|
|
473
|
+
{ key: "type", header: "TYPE", width: 10 },
|
|
474
|
+
{ key: "copied_from", header: "COPIED FROM", width: 16 },
|
|
475
|
+
{ key: "created", header: "CREATED" },
|
|
476
|
+
]);
|
|
477
|
+
}
|
|
478
|
+
catch (err) {
|
|
479
|
+
handleError(err);
|
|
480
|
+
}
|
|
481
|
+
});
|
|
482
|
+
environmentsCmd
|
|
483
|
+
.command("add <slug>")
|
|
484
|
+
.description("Create a custom environment")
|
|
485
|
+
.option("-v, --vault <id>", "Vault ID")
|
|
486
|
+
.option("-d, --description <desc>", "Environment description")
|
|
487
|
+
.option("--copy-from <env>", "Copy env vars from an existing environment")
|
|
488
|
+
.action(async (slug, opts) => {
|
|
489
|
+
try {
|
|
490
|
+
requireToken();
|
|
491
|
+
const vaultId = resolveVaultId(opts);
|
|
492
|
+
const spinner = ora(`Creating environment "${slug}"…`).start();
|
|
493
|
+
await api(`/vaults/${vaultId}/environments`, {
|
|
494
|
+
method: "POST",
|
|
495
|
+
body: {
|
|
496
|
+
slug,
|
|
497
|
+
description: opts.description,
|
|
498
|
+
copy_from: opts.copyFrom,
|
|
499
|
+
},
|
|
500
|
+
});
|
|
501
|
+
spinner.stop();
|
|
502
|
+
printSuccess(`Environment ${chalk.bold(slug)} created.` +
|
|
503
|
+
(opts.copyFrom
|
|
504
|
+
? ` Variables copied from ${chalk.bold(opts.copyFrom)}.`
|
|
505
|
+
: ""));
|
|
506
|
+
}
|
|
507
|
+
catch (err) {
|
|
508
|
+
handleError(err);
|
|
509
|
+
}
|
|
510
|
+
});
|
|
511
|
+
environmentsCmd
|
|
512
|
+
.command("rm <slug>")
|
|
513
|
+
.description("Delete a custom environment")
|
|
514
|
+
.option("-v, --vault <id>", "Vault ID")
|
|
515
|
+
.option("-y, --yes", "Skip confirmation prompt")
|
|
516
|
+
.action(async (slug, opts) => {
|
|
517
|
+
try {
|
|
518
|
+
requireToken();
|
|
519
|
+
const vaultId = resolveVaultId(opts);
|
|
520
|
+
if (!opts.yes) {
|
|
521
|
+
const ok = await confirm(`Delete environment ${chalk.bold(slug)}? This cannot be undone.`);
|
|
522
|
+
if (!ok) {
|
|
523
|
+
printInfo("Cancelled.");
|
|
524
|
+
return;
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
const spinner = ora(`Deleting environment "${slug}"…`).start();
|
|
528
|
+
await api(`/vaults/${vaultId}/environments/${encodeURIComponent(slug)}`, { method: "DELETE" });
|
|
529
|
+
spinner.stop();
|
|
530
|
+
printSuccess(`Environment ${chalk.bold(slug)} deleted.`);
|
|
531
|
+
}
|
|
532
|
+
catch (err) {
|
|
533
|
+
handleError(err);
|
|
534
|
+
}
|
|
535
|
+
});
|
|
261
536
|
function shellEscape(s) {
|
|
262
537
|
if (/^[a-zA-Z0-9._\-/:=@]+$/.test(s))
|
|
263
538
|
return s;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../../src/commands/env.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../../src/commands/env.ts"],"names":[],"mappings":"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"}
|