dc-ops-cli 1.8.0 → 1.9.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 CHANGED
@@ -10,6 +10,7 @@ Easy secret retrieval from 1Password with smart fallbacks and interactive prompt
10
10
  - 🧠 **Smart field detection** - Auto-detects the right field based on item type (API keys use `credential`, logins use `password`)
11
11
  - 📝 **Interactive prompts** - Create secrets on-the-fly if not found
12
12
  - 🧭 **Interactive mode** - Fuzzy browse vaults and items
13
+ - 🧩 **Templates** - Create common secret sets in one command
13
14
  - 📋 **List & search** - Browse your vault items
14
15
  - ⭐ **Favorites** - Quick access to your most-used secrets
15
16
  - 📤 **Export** - Generate .env files from your vault
@@ -197,6 +198,24 @@ You can also use JSON mapping files with schema validation:
197
198
 
198
199
  Save as `.env.ops.json` and run `ops run -- node app.js` to load it.
199
200
 
201
+ ### Templates
202
+
203
+ Create common secret sets from a template:
204
+
205
+ ```bash
206
+ # List templates
207
+ ops template list
208
+
209
+ # Apply a built-in template
210
+ ops template apply postgres --vault Work
211
+
212
+ # Provide values inline
213
+ ops template apply api --value API_KEY=secret --value API_URL=https://api.example.com
214
+
215
+ # Create a custom template
216
+ ops template create my-service --fields "API_KEY,API_SECRET,WEBHOOK_URL"
217
+ ```
218
+
200
219
  ### Interactive mode
201
220
 
202
221
  Browse vaults and items with a fuzzy finder:
@@ -1 +1 @@
1
- {"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoaH,UAAU,iBAAiB;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CAiCf"}
1
+ {"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAieH,UAAU,iBAAiB;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CAiCf"}
@@ -14,7 +14,7 @@ _ops_completion() {
14
14
  cur="\${COMP_WORDS[COMP_CWORD]}"
15
15
  prev="\${COMP_WORDS[COMP_CWORD-1]}"
16
16
 
17
- commands="get set copy list search favorites vaults inspect export import resolve run interactive completion"
17
+ commands="get set copy list search favorites vaults inspect export import resolve run interactive template completion"
18
18
 
19
19
  case "\${COMP_CWORD}" in
20
20
  1)
@@ -45,6 +45,10 @@ _ops_completion() {
45
45
  COMPREPLY=( $(compgen -W "password credential username notesPlain api-key token" -- "\${cur}") )
46
46
  return 0
47
47
  ;;
48
+ template)
49
+ COMPREPLY=( $(compgen -W "list create apply" -- "\${cur}") )
50
+ return 0
51
+ ;;
48
52
  --format)
49
53
  COMPREPLY=( $(compgen -W "env json" -- "\${cur}") )
50
54
  return 0
@@ -96,6 +100,9 @@ _ops_completion() {
96
100
  interactive)
97
101
  opts="-v --vault -f --field --no-color"
98
102
  ;;
103
+ template)
104
+ opts="list create apply --no-color"
105
+ ;;
99
106
  completion)
100
107
  opts="bash zsh fish"
101
108
  ;;
@@ -133,6 +140,7 @@ _ops() {
133
140
  'resolve:Resolve 1Password share link'
134
141
  'run:Run command with secrets injected'
135
142
  'interactive:Interactive browsing mode'
143
+ 'template:Manage secret templates'
136
144
  'completion:Generate shell completion script'
137
145
  )
138
146
 
@@ -292,6 +300,48 @@ _ops() {
292
300
  '--verbose[Show injected secrets]' \\
293
301
  '--no-color[Disable colors]'
294
302
  ;;
303
+ template)
304
+ _arguments \\
305
+ '1:subcommand:(list create apply)' \\
306
+ '*::arg:->template_args'
307
+ case "$state" in
308
+ template_args)
309
+ case "$words[2]" in
310
+ list)
311
+ _arguments \\
312
+ '-j[Output as JSON]' \\
313
+ '--json[Output as JSON]' \\
314
+ '-q[Suppress output]' \\
315
+ '--quiet[Suppress output]' \\
316
+ '--no-color[Disable colors]'
317
+ ;;
318
+ create)
319
+ _arguments \\
320
+ '1:template name:' \\
321
+ '--fields[Template fields]:fields:' \\
322
+ '--description[Template description]:description:' \\
323
+ '--force[Overwrite existing template]' \\
324
+ '-q[Suppress output]' \\
325
+ '--quiet[Suppress output]' \\
326
+ '--no-color[Disable colors]'
327
+ ;;
328
+ apply)
329
+ _arguments \\
330
+ '1:template name:' \\
331
+ '-v[Vault name]:vault:_ops_vaults' \\
332
+ '--vault[Vault name]:vault:_ops_vaults' \\
333
+ '-f[Field name]:field:(password credential username notesPlain api-key token)' \\
334
+ '--field[Field name]:field:(password credential username notesPlain api-key token)' \\
335
+ '--value[Provide field value]:pair:' \\
336
+ '--no-input[Disable prompts]' \\
337
+ '-q[Suppress output]' \\
338
+ '--quiet[Suppress output]' \\
339
+ '--no-color[Disable colors]'
340
+ ;;
341
+ esac
342
+ ;;
343
+ esac
344
+ ;;
295
345
  interactive)
296
346
  _arguments \\
297
347
  '-v[Vault name]:vault:_ops_vaults' \\
@@ -349,6 +399,7 @@ complete -c ops -n __fish_use_subcommand -a import -d 'Import secrets from .env
349
399
  complete -c ops -n __fish_use_subcommand -a resolve -d 'Resolve 1Password share link'
350
400
  complete -c ops -n __fish_use_subcommand -a run -d 'Run command with secrets injected'
351
401
  complete -c ops -n __fish_use_subcommand -a interactive -d 'Interactive browsing mode'
402
+ complete -c ops -n __fish_use_subcommand -a template -d 'Manage secret templates'
352
403
  complete -c ops -n __fish_use_subcommand -a completion -d 'Generate shell completion script'
353
404
 
354
405
  # Common options
@@ -397,6 +448,16 @@ complete -c ops -n '__fish_seen_subcommand_from run' -l verbose -d 'Show injecte
397
448
  # interactive command options
398
449
  complete -c ops -n '__fish_seen_subcommand_from interactive' -l field -s f -d 'Field name'
399
450
 
451
+ # template command options
452
+ complete -c ops -n '__fish_seen_subcommand_from template' -a 'list create apply' -d 'Template subcommand'
453
+ complete -c ops -n '__fish_seen_subcommand_from template; and __fish_seen_subcommand_from apply' -l vault -s v -d 'Vault name'
454
+ complete -c ops -n '__fish_seen_subcommand_from template; and __fish_seen_subcommand_from apply' -l field -s f -d 'Field name'
455
+ complete -c ops -n '__fish_seen_subcommand_from template; and __fish_seen_subcommand_from apply' -l value -d 'Provide field value'
456
+ complete -c ops -n '__fish_seen_subcommand_from template; and __fish_seen_subcommand_from apply' -l no-input -d 'Disable prompts'
457
+ complete -c ops -n '__fish_seen_subcommand_from template; and __fish_seen_subcommand_from create' -l fields -d 'Template fields'
458
+ complete -c ops -n '__fish_seen_subcommand_from template; and __fish_seen_subcommand_from create' -l description -d 'Template description'
459
+ complete -c ops -n '__fish_seen_subcommand_from template; and __fish_seen_subcommand_from create' -l force -d 'Overwrite existing template'
460
+
400
461
  # completion command - shell argument
401
462
  complete -c ops -n '__fish_seen_subcommand_from completion' -a 'bash zsh fish' -d 'Shell type'
402
463
 
@@ -1 +1 @@
1
- {"version":3,"file":"completion.js","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,yBAAyB;AACzB,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0GtB,CAAC;AAEF,wBAAwB;AACxB,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuNrB,CAAC;AAEF,yBAAyB;AACzB,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwFtB,CAAC;AAOF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAAyB,EACzB,OAA0B;IAE1B,MAAM,WAAW,GAAG,KAAK,IAAI,WAAW,EAAE,CAAC;IAE3C,QAAQ,WAAW,EAAE,CAAC;QACpB,KAAK,MAAM;YACT,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC5B,MAAM;QACR,KAAK,KAAK;YACR,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC3B,MAAM;QACR,KAAK,MAAM;YACT,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC5B,MAAM;QACR;YACE,OAAO,CAAC,KAAK,CAAC,kBAAkB,WAAW,EAAE,CAAC,CAAC;YAC/C,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACnD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;YACnE,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;YAClE,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;YACnE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAC7C,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACjD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC3C,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;YAChD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAC1B,OAAO,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;YAC7E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,SAAS,WAAW;IAClB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;IACtC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAC1C,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAC1C,OAAO,MAAM,CAAC,CAAC,kBAAkB;AACnC,CAAC"}
1
+ {"version":3,"file":"completion.js","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import inquirer from 'inquirer';
2
+ import { applyColorConfig, createSpinner, isInteractiveInput, resolveBooleanOption, resolveField, resolveVault } from '../utils/cli.js';
3
+ import { setSecret, checkOpCli } from '../utils/op.js';
4
+ import { type CustomTemplate } from '../utils/templates.js';
5
+ export interface SecretTemplate {
6
+ name: string;
7
+ description?: string;
8
+ fields: string[];
9
+ source: 'builtin' | 'custom';
10
+ }
11
+ export declare function parseTemplateFields(input: string): string[];
12
+ export interface TemplateListOptions {
13
+ json?: boolean;
14
+ quiet?: boolean;
15
+ color?: boolean;
16
+ }
17
+ export interface TemplateCreateOptions {
18
+ fields?: string;
19
+ description?: string;
20
+ force?: boolean;
21
+ quiet?: boolean;
22
+ color?: boolean;
23
+ }
24
+ export interface TemplateApplyOptions {
25
+ vault?: string;
26
+ field?: string;
27
+ values?: string[];
28
+ input?: boolean;
29
+ quiet?: boolean;
30
+ color?: boolean;
31
+ }
32
+ export interface TemplateDependencies {
33
+ checkOpCli: typeof checkOpCli;
34
+ setSecret: typeof setSecret;
35
+ prompt: typeof inquirer.prompt;
36
+ createSpinner: typeof createSpinner;
37
+ applyColorConfig: typeof applyColorConfig;
38
+ isInteractiveInput: typeof isInteractiveInput;
39
+ resolveBooleanOption: typeof resolveBooleanOption;
40
+ resolveVault: typeof resolveVault;
41
+ resolveField: typeof resolveField;
42
+ parseTemplateFields: typeof parseTemplateFields;
43
+ loadCustomTemplates: () => Record<string, CustomTemplate>;
44
+ saveCustomTemplates: (templates: Record<string, CustomTemplate>) => void;
45
+ isBuiltinTemplate: (name: string) => boolean;
46
+ getTemplateByName: (name: string) => SecretTemplate | undefined;
47
+ mergeTemplates: (custom: Record<string, CustomTemplate>) => SecretTemplate[];
48
+ }
49
+ export declare function createTemplateListCommand(overrides?: Partial<TemplateDependencies>): (options: TemplateListOptions) => Promise<void>;
50
+ export declare function createTemplateCreateCommand(overrides?: Partial<TemplateDependencies>): (name: string, options: TemplateCreateOptions) => Promise<void>;
51
+ export declare function createTemplateApplyCommand(overrides?: Partial<TemplateDependencies>): (name: string, options: TemplateApplyOptions) => Promise<void>;
52
+ export declare const templateListCommand: (options: TemplateListOptions) => Promise<void>;
53
+ export declare const templateCreateCommand: (name: string, options: TemplateCreateOptions) => Promise<void>;
54
+ export declare const templateApplyCommand: (name: string, options: TemplateApplyOptions) => Promise<void>;
55
+ //# sourceMappingURL=template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/commands/template.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,226 @@
1
+ import inquirer from 'inquirer';
2
+ import chalk from 'chalk';
3
+ import { applyColorConfig, createSpinner, isInteractiveInput, resolveBooleanOption, resolveField, resolveVault, } from '../utils/cli.js';
4
+ import { OpError } from '../utils/types.js';
5
+ import { setSecret, checkOpCli } from '../utils/op.js';
6
+ import { createTemplateStore } from '../utils/templates.js';
7
+ import { builtinTemplates, getBuiltinTemplate, } from '../templates/builtins.js';
8
+ export function parseTemplateFields(input) {
9
+ const parts = input
10
+ .split(/[\s,]+/)
11
+ .map((value) => value.trim())
12
+ .filter((value) => value.length > 0);
13
+ if (parts.length === 0) {
14
+ throw new OpError('Template fields are required.', 2);
15
+ }
16
+ const seen = new Set();
17
+ const fields = [];
18
+ for (const part of parts) {
19
+ const normalized = part.toUpperCase();
20
+ if (seen.has(normalized))
21
+ continue;
22
+ seen.add(normalized);
23
+ fields.push(normalized);
24
+ }
25
+ return fields;
26
+ }
27
+ function normalizeTemplateName(name) {
28
+ return name.trim().toLowerCase();
29
+ }
30
+ function toSecretTemplate(template, source) {
31
+ return {
32
+ name: template.name,
33
+ description: template.description,
34
+ fields: template.fields,
35
+ source,
36
+ };
37
+ }
38
+ function mergeTemplates(custom) {
39
+ const customTemplates = Object.values(custom).map((template) => toSecretTemplate(template, 'custom'));
40
+ const builtins = builtinTemplates.map((template) => toSecretTemplate(template, 'builtin'));
41
+ return [...builtins, ...customTemplates];
42
+ }
43
+ function getTemplateByName(name, custom) {
44
+ const normalized = normalizeTemplateName(name);
45
+ const builtin = getBuiltinTemplate(normalized);
46
+ if (builtin)
47
+ return toSecretTemplate(builtin, 'builtin');
48
+ const customTemplate = custom[normalized];
49
+ if (!customTemplate)
50
+ return undefined;
51
+ return toSecretTemplate(customTemplate, 'custom');
52
+ }
53
+ function parseKeyValuePairs(pairs) {
54
+ if (!pairs || pairs.length === 0)
55
+ return {};
56
+ const mapping = {};
57
+ for (const pair of pairs) {
58
+ const separatorIndex = pair.indexOf('=');
59
+ if (separatorIndex <= 0) {
60
+ throw new OpError('Invalid --value format. Use KEY=VALUE (example: --value API_KEY=secret).', 2);
61
+ }
62
+ const key = pair.slice(0, separatorIndex).trim().toUpperCase();
63
+ const value = pair.slice(separatorIndex + 1).trim();
64
+ if (!key || !value) {
65
+ throw new OpError('Invalid --value format. Use KEY=VALUE (example: --value API_KEY=secret).', 2);
66
+ }
67
+ mapping[key] = value;
68
+ }
69
+ return mapping;
70
+ }
71
+ const templateStore = createTemplateStore();
72
+ const defaultDependencies = {
73
+ checkOpCli,
74
+ setSecret,
75
+ prompt: inquirer.prompt,
76
+ createSpinner,
77
+ applyColorConfig,
78
+ isInteractiveInput,
79
+ resolveBooleanOption,
80
+ resolveVault,
81
+ resolveField,
82
+ parseTemplateFields,
83
+ loadCustomTemplates: () => templateStore.loadCustomTemplates(),
84
+ saveCustomTemplates: (templates) => templateStore.saveCustomTemplates(templates),
85
+ isBuiltinTemplate: (name) => Boolean(getBuiltinTemplate(name)),
86
+ getTemplateByName: (name) => getTemplateByName(name, templateStore.loadCustomTemplates()),
87
+ mergeTemplates: (custom) => mergeTemplates(custom),
88
+ };
89
+ export function createTemplateListCommand(overrides = {}) {
90
+ const deps = { ...defaultDependencies, ...overrides };
91
+ return async function templateListCommand(options) {
92
+ try {
93
+ const envNoColor = deps.resolveBooleanOption(undefined, 'OPS_NO_COLOR');
94
+ const noColor = options.color === false || envNoColor;
95
+ deps.applyColorConfig(noColor);
96
+ const customTemplates = deps.loadCustomTemplates();
97
+ const allTemplates = deps.mergeTemplates(customTemplates);
98
+ if (options.json) {
99
+ console.log(JSON.stringify(allTemplates, null, 2));
100
+ return;
101
+ }
102
+ if (!options.quiet) {
103
+ console.log(chalk.cyan('Available templates:'));
104
+ }
105
+ for (const template of allTemplates) {
106
+ const label = template.source === 'builtin' ? 'built-in' : 'custom';
107
+ console.log(chalk.white(` ${template.name} (${label}) - ${template.fields.join(', ')}`));
108
+ }
109
+ }
110
+ catch (error) {
111
+ if (error instanceof OpError) {
112
+ console.error(chalk.red(`Error: ${error.message}`));
113
+ process.exit(error.exitCode);
114
+ }
115
+ throw error;
116
+ }
117
+ };
118
+ }
119
+ export function createTemplateCreateCommand(overrides = {}) {
120
+ const deps = { ...defaultDependencies, ...overrides };
121
+ return async function templateCreateCommand(name, options) {
122
+ try {
123
+ if (!name || name.trim().length === 0) {
124
+ throw new OpError('Template name is required.', 2);
125
+ }
126
+ const envNoColor = deps.resolveBooleanOption(undefined, 'OPS_NO_COLOR');
127
+ const noColor = options.color === false || envNoColor;
128
+ deps.applyColorConfig(noColor);
129
+ if (!options.fields) {
130
+ throw new OpError('Template fields are required (use --fields).', 2);
131
+ }
132
+ const normalizedName = normalizeTemplateName(name);
133
+ if (deps.isBuiltinTemplate(normalizedName)) {
134
+ throw new OpError(`Template "${normalizedName}" is built-in and cannot be overwritten.`, 2);
135
+ }
136
+ const fields = deps.parseTemplateFields(options.fields);
137
+ const templates = deps.loadCustomTemplates();
138
+ if (templates[normalizedName] && !options.force) {
139
+ throw new OpError(`Template "${normalizedName}" already exists. Use --force to overwrite.`, 2);
140
+ }
141
+ templates[normalizedName] = {
142
+ name: normalizedName,
143
+ description: options.description,
144
+ fields,
145
+ };
146
+ deps.saveCustomTemplates(templates);
147
+ if (!options.quiet) {
148
+ console.log(chalk.green(`Template "${normalizedName}" saved.`));
149
+ }
150
+ }
151
+ catch (error) {
152
+ if (error instanceof OpError) {
153
+ console.error(chalk.red(`Error: ${error.message}`));
154
+ process.exit(error.exitCode);
155
+ }
156
+ throw error;
157
+ }
158
+ };
159
+ }
160
+ export function createTemplateApplyCommand(overrides = {}) {
161
+ const deps = { ...defaultDependencies, ...overrides };
162
+ return async function templateApplyCommand(name, options) {
163
+ try {
164
+ if (!name || name.trim().length === 0) {
165
+ throw new OpError('Template name is required.', 2);
166
+ }
167
+ deps.checkOpCli();
168
+ const envNoColor = deps.resolveBooleanOption(undefined, 'OPS_NO_COLOR');
169
+ const envNoInput = deps.resolveBooleanOption(undefined, 'OPS_NO_INPUT');
170
+ const noColor = options.color === false || envNoColor;
171
+ const noInput = options.input === false || envNoInput;
172
+ const canPrompt = !noInput && deps.isInteractiveInput();
173
+ deps.applyColorConfig(noColor);
174
+ const template = deps.getTemplateByName(name);
175
+ if (!template) {
176
+ throw new OpError(`Template "${name}" not found.`, 1);
177
+ }
178
+ const vault = deps.resolveVault(options.vault);
179
+ const field = deps.resolveField(options.field);
180
+ const providedValues = parseKeyValuePairs(options.values);
181
+ const resolvedValues = {};
182
+ for (const templateField of template.fields) {
183
+ const provided = providedValues[templateField];
184
+ if (provided) {
185
+ resolvedValues[templateField] = provided;
186
+ continue;
187
+ }
188
+ if (!canPrompt) {
189
+ throw new OpError(`Missing value for ${templateField}. Use --value ${templateField}=... or enable prompts.`, 2);
190
+ }
191
+ const answer = await deps.prompt([
192
+ {
193
+ type: 'password',
194
+ name: 'value',
195
+ message: `Enter value for ${templateField}:`,
196
+ mask: '*',
197
+ validate: (input) => input.length > 0 || 'Value cannot be empty',
198
+ },
199
+ ]);
200
+ resolvedValues[templateField] = answer.value;
201
+ }
202
+ const spinner = deps.createSpinner(`Saving ${template.fields.length} secret${template.fields.length === 1 ? '' : 's'}...`, options.quiet === true);
203
+ for (const [key, value] of Object.entries(resolvedValues)) {
204
+ deps.setSecret(key, value, vault, field);
205
+ }
206
+ spinner.succeed(chalk.green('Template secrets saved.'));
207
+ if (!options.quiet) {
208
+ console.log(chalk.cyan('\nCreated secrets:'));
209
+ for (const key of Object.keys(resolvedValues)) {
210
+ console.log(chalk.white(` ${key}`));
211
+ }
212
+ }
213
+ }
214
+ catch (error) {
215
+ if (error instanceof OpError) {
216
+ console.error(chalk.red(`Error: ${error.message}`));
217
+ process.exit(error.exitCode);
218
+ }
219
+ throw error;
220
+ }
221
+ };
222
+ }
223
+ export const templateListCommand = createTemplateListCommand();
224
+ export const templateCreateCommand = createTemplateCreateCommand();
225
+ export const templateApplyCommand = createTemplateApplyCommand();
226
+ //# sourceMappingURL=template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/commands/template.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -13,6 +13,7 @@ import { inspectCommand } from './commands/inspect.js';
13
13
  import { vaultsCommand } from './commands/vaults.js';
14
14
  import { completionCommand } from './commands/completion.js';
15
15
  import { getManyCommand } from './commands/get-many.js';
16
+ import { templateApplyCommand, templateCreateCommand, templateListCommand } from './commands/template.js';
16
17
  import { setRetryOptions } from './utils/op.js';
17
18
  import { isRetryDisabled } from './utils/retry.js';
18
19
  import { loadSessionCacheIntoEnv, persistSessionCacheFromEnv } from './utils/session-cache.js';
@@ -208,6 +209,35 @@ program
208
209
  .option('-q, --quiet', 'suppress non-essential output')
209
210
  .option('--no-color', 'disable color output')
210
211
  .action(completionCommand);
212
+ const template = program
213
+ .command('template')
214
+ .description('Manage secret templates');
215
+ template
216
+ .command('list')
217
+ .description('List available templates')
218
+ .option('-j, --json', 'output as JSON')
219
+ .option('-q, --quiet', 'suppress non-essential output')
220
+ .option('--no-color', 'disable color output')
221
+ .action(templateListCommand);
222
+ template
223
+ .command('create <name>')
224
+ .description('Create a custom template')
225
+ .option('--fields <fields>', 'comma or space separated field names (e.g. API_KEY,API_SECRET)')
226
+ .option('--description <description>', 'template description')
227
+ .option('--force', 'overwrite existing custom template')
228
+ .option('-q, --quiet', 'suppress non-essential output')
229
+ .option('--no-color', 'disable color output')
230
+ .action(templateCreateCommand);
231
+ template
232
+ .command('apply <name>')
233
+ .description('Apply a template and create secrets')
234
+ .option('-v, --vault <vault>', 'vault name (default: OPS_VAULT or Private)')
235
+ .option('-f, --field <field>', 'field name (default: OPS_FIELD or password)')
236
+ .option('--value <pair>', 'provide field value (repeatable, e.g. --value API_KEY=secret)', (value, previous = []) => [...previous, value], [])
237
+ .option('--no-input', 'disable prompts (fail if input is required)')
238
+ .option('-q, --quiet', 'suppress non-essential output')
239
+ .option('--no-color', 'disable color output')
240
+ .action(templateApplyCommand);
211
241
  // Error handling
212
242
  process.on('uncaughtException', (error) => {
213
243
  console.error('Unexpected error:', error.message);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export interface SecretTemplateDefinition {
2
+ name: string;
3
+ description: string;
4
+ fields: string[];
5
+ }
6
+ export declare const builtinTemplates: SecretTemplateDefinition[];
7
+ export declare function getBuiltinTemplate(name: string): SecretTemplateDefinition | undefined;
8
+ //# sourceMappingURL=builtins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../src/templates/builtins.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,eAAO,MAAM,gBAAgB,EAAE,wBAAwB,EA+BtD,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,wBAAwB,GAAG,SAAS,CAGrF"}
@@ -0,0 +1,37 @@
1
+ export const builtinTemplates = [
2
+ {
3
+ name: 'postgres',
4
+ description: 'Postgres connection fields',
5
+ fields: ['DB_HOST', 'DB_PORT', 'DB_USER', 'DB_PASSWORD', 'DB_NAME'],
6
+ },
7
+ {
8
+ name: 'mysql',
9
+ description: 'MySQL connection fields',
10
+ fields: ['DB_HOST', 'DB_PORT', 'DB_USER', 'DB_PASSWORD', 'DB_NAME'],
11
+ },
12
+ {
13
+ name: 'redis',
14
+ description: 'Redis connection fields',
15
+ fields: ['REDIS_URL', 'REDIS_PASSWORD'],
16
+ },
17
+ {
18
+ name: 'oauth',
19
+ description: 'OAuth client fields',
20
+ fields: ['CLIENT_ID', 'CLIENT_SECRET', 'REDIRECT_URI'],
21
+ },
22
+ {
23
+ name: 'api',
24
+ description: 'Generic API credentials',
25
+ fields: ['API_KEY', 'API_SECRET', 'API_URL'],
26
+ },
27
+ {
28
+ name: 'smtp',
29
+ description: 'SMTP credentials',
30
+ fields: ['SMTP_HOST', 'SMTP_PORT', 'SMTP_USER', 'SMTP_PASSWORD'],
31
+ },
32
+ ];
33
+ export function getBuiltinTemplate(name) {
34
+ const normalized = name.toLowerCase();
35
+ return builtinTemplates.find((template) => template.name === normalized);
36
+ }
37
+ //# sourceMappingURL=builtins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtins.js","sourceRoot":"","sources":["../../src/templates/builtins.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,gBAAgB,GAA+B;IAC1D;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,4BAA4B;QACzC,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,CAAC;KACpE;IACD;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,yBAAyB;QACtC,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,CAAC;KACpE;IACD;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,yBAAyB;QACtC,MAAM,EAAE,CAAC,WAAW,EAAE,gBAAgB,CAAC;KACxC;IACD;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,qBAAqB;QAClC,MAAM,EAAE,CAAC,WAAW,EAAE,eAAe,EAAE,cAAc,CAAC;KACvD;IACD;QACE,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,yBAAyB;QACtC,MAAM,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC;KAC7C;IACD;QACE,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,kBAAkB;QAC/B,MAAM,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,CAAC;KACjE;CACF,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACtC,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;AAC3E,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
2
+ import { homedir } from 'os';
3
+ import { join, dirname } from 'path';
4
+ export interface CustomTemplate {
5
+ name: string;
6
+ description?: string;
7
+ fields: string[];
8
+ }
9
+ interface TemplateStoreDependencies {
10
+ existsSync: typeof existsSync;
11
+ readFileSync: typeof readFileSync;
12
+ writeFileSync: typeof writeFileSync;
13
+ mkdirSync: typeof mkdirSync;
14
+ homedir: typeof homedir;
15
+ join: typeof join;
16
+ dirname: typeof dirname;
17
+ }
18
+ export declare function createTemplateStore(overrides?: Partial<TemplateStoreDependencies>): {
19
+ loadCustomTemplates: () => Record<string, CustomTemplate>;
20
+ saveCustomTemplates: (templates: Record<string, CustomTemplate>) => void;
21
+ };
22
+ export {};
23
+ //# sourceMappingURL=templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/utils/templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAGrC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAMD,UAAU,yBAAyB;IACjC,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,YAAY,EAAE,OAAO,YAAY,CAAC;IAClC,aAAa,EAAE,OAAO,aAAa,CAAC;IACpC,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,OAAO,EAAE,OAAO,OAAO,CAAC;IACxB,IAAI,EAAE,OAAO,IAAI,CAAC;IAClB,OAAO,EAAE,OAAO,OAAO,CAAC;CACzB;AAqCD,wBAAgB,mBAAmB,CAAC,SAAS,GAAE,OAAO,CAAC,yBAAyB,CAAM;+BAGpD,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC;qCAyBtB,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,KAAG,IAAI;EAkB9E"}
@@ -0,0 +1,76 @@
1
+ import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
2
+ import { homedir } from 'os';
3
+ import { join, dirname } from 'path';
4
+ import { OpError } from './types.js';
5
+ const defaultDeps = {
6
+ existsSync,
7
+ readFileSync,
8
+ writeFileSync,
9
+ mkdirSync,
10
+ homedir,
11
+ join,
12
+ dirname,
13
+ };
14
+ function getTemplatesPath(deps) {
15
+ return deps.join(deps.homedir(), '.config', 'ops-cli', 'templates.json');
16
+ }
17
+ function validateTemplatePayload(payload) {
18
+ if (!payload || typeof payload !== 'object' || Array.isArray(payload)) {
19
+ throw new OpError('Invalid templates file format.', 2);
20
+ }
21
+ if (!payload.templates || typeof payload.templates !== 'object') {
22
+ throw new OpError('Invalid templates file format.', 2);
23
+ }
24
+ for (const [name, template] of Object.entries(payload.templates)) {
25
+ if (!template || !Array.isArray(template.fields)) {
26
+ throw new OpError(`Invalid template "${name}" in templates file.`, 2);
27
+ }
28
+ for (const field of template.fields) {
29
+ if (typeof field !== 'string' || field.trim().length === 0) {
30
+ throw new OpError(`Invalid field in template "${name}".`, 2);
31
+ }
32
+ }
33
+ }
34
+ }
35
+ export function createTemplateStore(overrides = {}) {
36
+ const deps = { ...defaultDeps, ...overrides };
37
+ function loadCustomTemplates() {
38
+ const path = getTemplatesPath(deps);
39
+ if (!deps.existsSync(path))
40
+ return {};
41
+ const content = deps.readFileSync(path, 'utf-8');
42
+ try {
43
+ const parsed = JSON.parse(content);
44
+ validateTemplatePayload(parsed);
45
+ const templates = {};
46
+ for (const [name, template] of Object.entries(parsed.templates)) {
47
+ templates[name] = {
48
+ name,
49
+ description: template.description,
50
+ fields: template.fields,
51
+ };
52
+ }
53
+ return templates;
54
+ }
55
+ catch (error) {
56
+ const message = error instanceof Error ? error.message : 'Unable to parse templates file.';
57
+ throw new OpError(message, 2);
58
+ }
59
+ }
60
+ function saveCustomTemplates(templates) {
61
+ const path = getTemplatesPath(deps);
62
+ const payload = {
63
+ templates: {},
64
+ };
65
+ for (const [name, template] of Object.entries(templates)) {
66
+ payload.templates[name] = {
67
+ description: template.description,
68
+ fields: template.fields,
69
+ };
70
+ }
71
+ deps.mkdirSync(deps.dirname(path), { recursive: true, mode: 0o700 });
72
+ deps.writeFileSync(path, JSON.stringify(payload, null, 2), { mode: 0o600 });
73
+ }
74
+ return { loadCustomTemplates, saveCustomTemplates };
75
+ }
76
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/utils/templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAsBrC,MAAM,WAAW,GAA8B;IAC7C,UAAU;IACV,YAAY;IACZ,aAAa;IACb,SAAS;IACT,OAAO;IACP,IAAI;IACJ,OAAO;CACR,CAAC;AAEF,SAAS,gBAAgB,CAAC,IAA+B;IACvD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAsB;IACrD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,OAAO,CAAC,gCAAgC,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QAChE,MAAM,IAAI,OAAO,CAAC,gCAAgC,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACjE,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACjD,MAAM,IAAI,OAAO,CAAC,qBAAqB,IAAI,sBAAsB,EAAE,CAAC,CAAC,CAAC;QACxE,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3D,MAAM,IAAI,OAAO,CAAC,8BAA8B,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,YAAgD,EAAE;IACpF,MAAM,IAAI,GAA8B,EAAE,GAAG,WAAW,EAAE,GAAG,SAAS,EAAE,CAAC;IAEzE,SAAS,mBAAmB;QAC1B,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QAEtC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAkB,CAAC;YACpD,uBAAuB,CAAC,MAAM,CAAC,CAAC;YAEhC,MAAM,SAAS,GAAmC,EAAE,CAAC;YACrD,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;gBAChE,SAAS,CAAC,IAAI,CAAC,GAAG;oBAChB,IAAI;oBACJ,WAAW,EAAE,QAAQ,CAAC,WAAW;oBACjC,MAAM,EAAE,QAAQ,CAAC,MAAM;iBACxB,CAAC;YACJ,CAAC;YAED,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,iCAAiC,CAAC;YAC3F,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,SAAS,mBAAmB,CAAC,SAAyC;QACpE,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,OAAO,GAAkB;YAC7B,SAAS,EAAE,EAAE;SACd,CAAC;QAEF,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACzD,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG;gBACxB,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,MAAM,EAAE,QAAQ,CAAC,MAAM;aACxB,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,CAAC;AACtD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dc-ops-cli",
3
- "version": "1.8.0",
3
+ "version": "1.9.0",
4
4
  "description": "Easy secret retrieval from 1Password with smart fallbacks",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",