@captainsafia/burrow 1.0.0-preview.e3ae96a → 1.0.0-preview.f26ef28

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 CHANGED
@@ -44,8 +44,14 @@ burrow list --format json
44
44
  ### Export to your shell
45
45
 
46
46
  ```bash
47
+ # Auto-detects your shell (bash, fish, powershell, cmd)
47
48
  eval "$(burrow export)"
48
- eval "$(burrow export --format shell)" && npm start
49
+
50
+ # Or specify a format explicitly
51
+ burrow export --format fish
52
+ burrow export --format powershell
53
+ burrow export --format dotenv
54
+ burrow export --format json
49
55
  ```
50
56
 
51
57
  ### Block inheritance
package/dist/api.d.ts CHANGED
@@ -5,7 +5,7 @@ export interface ResolvedSecret {
5
5
  value: string;
6
6
  sourcePath: string;
7
7
  }
8
- export type ExportFormat = "shell" | "dotenv" | "json";
8
+ export type ExportFormat = "shell" | "bash" | "fish" | "powershell" | "cmd" | "dotenv" | "json";
9
9
  /**
10
10
  * Configuration options for creating a BurrowClient instance.
11
11
  */
package/dist/api.js CHANGED
@@ -251,6 +251,9 @@ function escapeShellValue(value) {
251
251
  function escapeDoubleQuotes(value) {
252
252
  return value.replace(/\\/g, "\\\\").replace(/"/g, "\\\"");
253
253
  }
254
+ function escapePowerShellValue(value) {
255
+ return value.replace(/'/g, "''");
256
+ }
254
257
  function formatShell(secrets) {
255
258
  const lines = [];
256
259
  const sortedKeys = Array.from(secrets.keys()).sort();
@@ -263,6 +266,42 @@ function formatShell(secrets) {
263
266
  return lines.join(`
264
267
  `);
265
268
  }
269
+ function formatFish(secrets) {
270
+ const lines = [];
271
+ const sortedKeys = Array.from(secrets.keys()).sort();
272
+ for (const key of sortedKeys) {
273
+ const secret = secrets.get(key);
274
+ assertValidEnvKey(key);
275
+ const escapedValue = escapeShellValue(secret.value);
276
+ lines.push(`set -gx ${key} '${escapedValue}'`);
277
+ }
278
+ return lines.join(`
279
+ `);
280
+ }
281
+ function formatPowerShell(secrets) {
282
+ const lines = [];
283
+ const sortedKeys = Array.from(secrets.keys()).sort();
284
+ for (const key of sortedKeys) {
285
+ const secret = secrets.get(key);
286
+ assertValidEnvKey(key);
287
+ const escapedValue = escapePowerShellValue(secret.value);
288
+ lines.push(`$env:${key} = '${escapedValue}'`);
289
+ }
290
+ return lines.join(`
291
+ `);
292
+ }
293
+ function formatCmd(secrets) {
294
+ const lines = [];
295
+ const sortedKeys = Array.from(secrets.keys()).sort();
296
+ for (const key of sortedKeys) {
297
+ const secret = secrets.get(key);
298
+ assertValidEnvKey(key);
299
+ const escapedValue = secret.value.replace(/([&|<>^])/g, "^$1");
300
+ lines.push(`set ${key}=${escapedValue}`);
301
+ }
302
+ return lines.join(`
303
+ `);
304
+ }
266
305
  function formatDotenv(secrets) {
267
306
  const lines = [];
268
307
  const sortedKeys = Array.from(secrets.keys()).sort();
@@ -300,7 +339,14 @@ function formatJson(secrets, includeSources = false) {
300
339
  function format(secrets, fmt, options = {}) {
301
340
  switch (fmt) {
302
341
  case "shell":
342
+ case "bash":
303
343
  return formatShell(secrets);
344
+ case "fish":
345
+ return formatFish(secrets);
346
+ case "powershell":
347
+ return formatPowerShell(secrets);
348
+ case "cmd":
349
+ return formatCmd(secrets);
304
350
  case "dotenv":
305
351
  return formatDotenv(secrets);
306
352
  case "json":
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@captainsafia/burrow",
3
- "version": "1.0.0-preview.e3ae96a",
3
+ "version": "1.0.0-preview.f26ef28",
4
4
  "description": "Platform-agnostic, directory-scoped secrets manager",
5
5
  "type": "module",
6
6
  "main": "dist/api.js",