dc-ops-cli 1.1.3 → 1.3.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
@@ -17,6 +17,7 @@ Easy secret retrieval from 1Password with smart fallbacks and interactive prompt
17
17
  - 💡 **Smart suggestions** - Get hints when secrets or fields aren't found
18
18
  - 🎨 **Beautiful UI** - Colored output and progress indicators
19
19
  - 🔒 **Secure** - Never exposes secrets in logs or chat
20
+ - ⌨️ **Shell completion** - Tab completion for bash, zsh, and fish
20
21
 
21
22
  ## Installation
22
23
 
@@ -212,6 +213,33 @@ ops vaults
212
213
  ops vaults --json
213
214
  ```
214
215
 
216
+ ### Shell Completion
217
+
218
+ Generate shell completion scripts for bash, zsh, or fish:
219
+
220
+ ```bash
221
+ # Bash - add to ~/.bashrc
222
+ source <(ops completion bash)
223
+
224
+ # Or append permanently
225
+ ops completion bash >> ~/.bashrc
226
+
227
+ # Zsh - add to ~/.zshrc
228
+ source <(ops completion zsh)
229
+
230
+ # Or save to completions directory
231
+ ops completion zsh > ~/.zsh/completions/_ops
232
+
233
+ # Fish - save to completions directory
234
+ ops completion fish > ~/.config/fish/completions/ops.fish
235
+ ```
236
+
237
+ Features:
238
+ - Tab completion for all commands and options
239
+ - Dynamic vault name completion (from 1Password)
240
+ - Dynamic item name completion (from 1Password)
241
+ - Field name suggestions
242
+
215
243
  ### Smart suggestions
216
244
 
217
245
  When a secret or field isn't found, ops provides helpful suggestions:
@@ -353,6 +381,7 @@ curl -H "Authorization: Bearer $API_KEY" https://api.example.com
353
381
  | `resolve <shareLink>` | Resolve share link to ops reference | `-j, --json` |
354
382
  | `inspect <name>` | Show available fields for a secret | `-v, --vault`, `-j, --json` |
355
383
  | `vaults` | List available vaults | `-j, --json` |
384
+ | `completion [shell]` | Generate shell completion script | Shells: `bash`, `zsh`, `fish` |
356
385
 
357
386
  ## Development
358
387
 
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Shell completion script generator for ops CLI
3
+ * Supports bash, zsh, and fish shells
4
+ */
5
+ interface CompletionOptions {
6
+ quiet?: boolean;
7
+ color?: boolean;
8
+ }
9
+ export declare function completionCommand(shell: string | undefined, options: CompletionOptions): Promise<void>;
10
+ export {};
11
+ //# sourceMappingURL=completion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkZH,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"}
@@ -0,0 +1,445 @@
1
+ /**
2
+ * Shell completion script generator for ops CLI
3
+ * Supports bash, zsh, and fish shells
4
+ */
5
+ // Bash completion script
6
+ const bashCompletion = `# ops CLI bash completion
7
+ # Add to ~/.bashrc or ~/.bash_completion:
8
+ # source <(ops completion bash)
9
+ # # or: ops completion bash >> ~/.bashrc
10
+
11
+ _ops_completion() {
12
+ local cur prev commands
13
+ COMPREPLY=()
14
+ cur="\${COMP_WORDS[COMP_CWORD]}"
15
+ prev="\${COMP_WORDS[COMP_CWORD-1]}"
16
+
17
+ commands="get set copy list search favorites vaults inspect export import resolve run completion"
18
+
19
+ case "\${COMP_CWORD}" in
20
+ 1)
21
+ COMPREPLY=( $(compgen -W "\${commands}" -- "\${cur}") )
22
+ return 0
23
+ ;;
24
+ *)
25
+ case "\${prev}" in
26
+ get|set|copy|inspect)
27
+ # Complete with vault items (expensive, so only if op is fast)
28
+ if command -v op &> /dev/null && [ -z "\${cur}" ]; then
29
+ local items
30
+ items=$(op item list --format=json 2>/dev/null | jq -r '.[].title' 2>/dev/null | head -20)
31
+ COMPREPLY=( $(compgen -W "\${items}" -- "\${cur}") )
32
+ fi
33
+ return 0
34
+ ;;
35
+ -v|--vault)
36
+ # Complete with vault names
37
+ if command -v op &> /dev/null; then
38
+ local vaults
39
+ vaults=$(op vault list --format=json 2>/dev/null | jq -r '.[].name' 2>/dev/null)
40
+ COMPREPLY=( $(compgen -W "\${vaults}" -- "\${cur}") )
41
+ fi
42
+ return 0
43
+ ;;
44
+ -f|--field)
45
+ COMPREPLY=( $(compgen -W "password credential username notesPlain api-key token" -- "\${cur}") )
46
+ return 0
47
+ ;;
48
+ --format)
49
+ COMPREPLY=( $(compgen -W "env json" -- "\${cur}") )
50
+ return 0
51
+ ;;
52
+ import)
53
+ COMPREPLY=( $(compgen -f -- "\${cur}") )
54
+ return 0
55
+ ;;
56
+ *)
57
+ # Complete options based on command
58
+ local opts=""
59
+ case "\${COMP_WORDS[1]}" in
60
+ get)
61
+ opts="-v --vault -f --field -s --silent --plain --json --no-input -q --quiet --no-color"
62
+ ;;
63
+ set)
64
+ opts="-v --vault -f --field --value --value-file --force --no-input -q --quiet --no-color"
65
+ ;;
66
+ copy)
67
+ opts="-v --vault -f --field --ttl -q --quiet --no-color"
68
+ ;;
69
+ list)
70
+ opts="-v --vault -s --search -j --json --plain --favorites -q --quiet --no-color"
71
+ ;;
72
+ search)
73
+ opts="-v --vault -j --json --plain -q --quiet --no-color"
74
+ ;;
75
+ favorites)
76
+ opts="-v --vault -j --json --plain -q --quiet --no-color"
77
+ ;;
78
+ vaults)
79
+ opts="-j --json -q --quiet --no-color"
80
+ ;;
81
+ inspect)
82
+ opts="-v --vault -j --json -q --quiet --no-color"
83
+ ;;
84
+ export)
85
+ opts="-v --vault -f --format -j --json -o --output -q --quiet --no-color"
86
+ ;;
87
+ import)
88
+ opts="-v --vault --dry-run -q --quiet --no-color"
89
+ ;;
90
+ resolve)
91
+ opts="-j --json -q --quiet --no-color"
92
+ ;;
93
+ run)
94
+ opts="-v --vault -f --field -e --env --env-file --verbose --no-color"
95
+ ;;
96
+ completion)
97
+ opts="bash zsh fish"
98
+ ;;
99
+ esac
100
+ COMPREPLY=( $(compgen -W "\${opts}" -- "\${cur}") )
101
+ return 0
102
+ ;;
103
+ esac
104
+ ;;
105
+ esac
106
+ }
107
+
108
+ complete -F _ops_completion ops
109
+ `;
110
+ // Zsh completion script
111
+ const zshCompletion = `#compdef ops
112
+ # ops CLI zsh completion
113
+ # Add to ~/.zshrc:
114
+ # source <(ops completion zsh)
115
+ # # or: ops completion zsh > ~/.zsh/completions/_ops
116
+
117
+ _ops() {
118
+ local -a commands
119
+ commands=(
120
+ 'get:Get a secret from 1Password'
121
+ 'set:Store a secret in 1Password'
122
+ 'copy:Copy a secret to clipboard'
123
+ 'list:List all items in a vault'
124
+ 'search:Search items by title'
125
+ 'favorites:List favorite items'
126
+ 'vaults:List available vaults'
127
+ 'inspect:Inspect item fields'
128
+ 'export:Export secrets as .env or JSON'
129
+ 'import:Import secrets from .env file'
130
+ 'resolve:Resolve 1Password share link'
131
+ 'run:Run command with secrets injected'
132
+ 'completion:Generate shell completion script'
133
+ )
134
+
135
+ local -a common_opts
136
+ common_opts=(
137
+ '-v[Vault name]:vault:_ops_vaults'
138
+ '--vault[Vault name]:vault:_ops_vaults'
139
+ '-q[Suppress non-essential output]'
140
+ '--quiet[Suppress non-essential output]'
141
+ '--no-color[Disable color output]'
142
+ )
143
+
144
+ _arguments -C \\
145
+ '1:command:->command' \\
146
+ '*::arg:->args'
147
+
148
+ case "\$state" in
149
+ command)
150
+ _describe 'ops command' commands
151
+ ;;
152
+ args)
153
+ case "\$words[1]" in
154
+ get)
155
+ _arguments \\
156
+ '1:secret name:_ops_items' \\
157
+ '-v[Vault name]:vault:_ops_vaults' \\
158
+ '--vault[Vault name]:vault:_ops_vaults' \\
159
+ '-f[Field name]:field:(password credential username notesPlain api-key token)' \\
160
+ '--field[Field name]:field:(password credential username notesPlain api-key token)' \\
161
+ '-s[Output only secret value]' \\
162
+ '--silent[Output only secret value]' \\
163
+ '--plain[Output only secret value]' \\
164
+ '--json[Output as JSON]' \\
165
+ '--no-input[Disable prompts]' \\
166
+ '-q[Suppress output]' \\
167
+ '--quiet[Suppress output]' \\
168
+ '--no-color[Disable colors]'
169
+ ;;
170
+ set)
171
+ _arguments \\
172
+ '1:secret name:' \\
173
+ '-v[Vault name]:vault:_ops_vaults' \\
174
+ '--vault[Vault name]:vault:_ops_vaults' \\
175
+ '-f[Field name]:field:(password credential username notesPlain api-key token)' \\
176
+ '--field[Field name]:field:(password credential username notesPlain api-key token)' \\
177
+ '--value[Secret value]:value:' \\
178
+ '--value-file[Read from file]:file:_files' \\
179
+ '--force[Overwrite without confirm]' \\
180
+ '--no-input[Disable prompts]' \\
181
+ '-q[Suppress output]' \\
182
+ '--quiet[Suppress output]' \\
183
+ '--no-color[Disable colors]'
184
+ ;;
185
+ copy)
186
+ _arguments \\
187
+ '1:secret name:_ops_items' \\
188
+ '-v[Vault name]:vault:_ops_vaults' \\
189
+ '--vault[Vault name]:vault:_ops_vaults' \\
190
+ '-f[Field name]:field:(password credential username notesPlain api-key token)' \\
191
+ '--field[Field name]:field:(password credential username notesPlain api-key token)' \\
192
+ '--ttl[Clear after N seconds]:seconds:' \\
193
+ '-q[Suppress output]' \\
194
+ '--quiet[Suppress output]' \\
195
+ '--no-color[Disable colors]'
196
+ ;;
197
+ list)
198
+ _arguments \\
199
+ '-v[Vault name]:vault:_ops_vaults' \\
200
+ '--vault[Vault name]:vault:_ops_vaults' \\
201
+ '-s[Search query]:query:' \\
202
+ '--search[Search query]:query:' \\
203
+ '-j[Output as JSON]' \\
204
+ '--json[Output as JSON]' \\
205
+ '--plain[Tab-delimited output]' \\
206
+ '--favorites[Show favorites only]' \\
207
+ '-q[Suppress output]' \\
208
+ '--quiet[Suppress output]' \\
209
+ '--no-color[Disable colors]'
210
+ ;;
211
+ search)
212
+ _arguments \\
213
+ '1:search query:' \\
214
+ '-v[Vault name]:vault:_ops_vaults' \\
215
+ '--vault[Vault name]:vault:_ops_vaults' \\
216
+ '-j[Output as JSON]' \\
217
+ '--json[Output as JSON]' \\
218
+ '--plain[Tab-delimited output]' \\
219
+ '-q[Suppress output]' \\
220
+ '--quiet[Suppress output]' \\
221
+ '--no-color[Disable colors]'
222
+ ;;
223
+ favorites|vaults)
224
+ _arguments \\
225
+ '-v[Vault name]:vault:_ops_vaults' \\
226
+ '--vault[Vault name]:vault:_ops_vaults' \\
227
+ '-j[Output as JSON]' \\
228
+ '--json[Output as JSON]' \\
229
+ '-q[Suppress output]' \\
230
+ '--quiet[Suppress output]' \\
231
+ '--no-color[Disable colors]'
232
+ ;;
233
+ inspect)
234
+ _arguments \\
235
+ '1:item name:_ops_items' \\
236
+ '-v[Vault name]:vault:_ops_vaults' \\
237
+ '--vault[Vault name]:vault:_ops_vaults' \\
238
+ '-j[Output as JSON]' \\
239
+ '--json[Output as JSON]' \\
240
+ '-q[Suppress output]' \\
241
+ '--quiet[Suppress output]' \\
242
+ '--no-color[Disable colors]'
243
+ ;;
244
+ export)
245
+ _arguments \\
246
+ '-v[Vault name]:vault:_ops_vaults' \\
247
+ '--vault[Vault name]:vault:_ops_vaults' \\
248
+ '-f[Output format]:format:(env json)' \\
249
+ '--format[Output format]:format:(env json)' \\
250
+ '-j[Alias for --format json]' \\
251
+ '--json[Alias for --format json]' \\
252
+ '-o[Output file]:file:_files' \\
253
+ '--output[Output file]:file:_files' \\
254
+ '-q[Suppress output]' \\
255
+ '--quiet[Suppress output]' \\
256
+ '--no-color[Disable colors]'
257
+ ;;
258
+ import)
259
+ _arguments \\
260
+ '1:env file:_files' \\
261
+ '-v[Vault name]:vault:_ops_vaults' \\
262
+ '--vault[Vault name]:vault:_ops_vaults' \\
263
+ '--dry-run[Preview without modifying]' \\
264
+ '-q[Suppress output]' \\
265
+ '--quiet[Suppress output]' \\
266
+ '--no-color[Disable colors]'
267
+ ;;
268
+ resolve)
269
+ _arguments \\
270
+ '1:share link:' \\
271
+ '-j[Output as JSON]' \\
272
+ '--json[Output as JSON]' \\
273
+ '-q[Suppress output]' \\
274
+ '--quiet[Suppress output]' \\
275
+ '--no-color[Disable colors]'
276
+ ;;
277
+ run)
278
+ _arguments \\
279
+ '*:command:_command_names' \\
280
+ '-v[Vault name]:vault:_ops_vaults' \\
281
+ '--vault[Vault name]:vault:_ops_vaults' \\
282
+ '-f[Field name]:field:(password credential username notesPlain api-key token)' \\
283
+ '--field[Field name]:field:(password credential username notesPlain api-key token)' \\
284
+ '*-e[Map env to secret]:mapping:' \\
285
+ '*--env[Map env to secret]:mapping:' \\
286
+ '--env-file[Env mapping file]:file:_files' \\
287
+ '--verbose[Show injected secrets]' \\
288
+ '--no-color[Disable colors]'
289
+ ;;
290
+ completion)
291
+ _arguments '1:shell:(bash zsh fish)'
292
+ ;;
293
+ esac
294
+ ;;
295
+ esac
296
+ }
297
+
298
+ # Dynamic completion functions
299
+ _ops_vaults() {
300
+ local -a vaults
301
+ if command -v op &> /dev/null; then
302
+ vaults=(\${(f)"$(op vault list --format=json 2>/dev/null | jq -r '.[].name' 2>/dev/null)"})
303
+ _describe 'vault' vaults
304
+ fi
305
+ }
306
+
307
+ _ops_items() {
308
+ local -a items
309
+ if command -v op &> /dev/null; then
310
+ items=(\${(f)"$(op item list --format=json 2>/dev/null | jq -r '.[].title' 2>/dev/null | head -20)"})
311
+ _describe 'item' items
312
+ fi
313
+ }
314
+
315
+ compdef _ops ops
316
+ `;
317
+ // Fish completion script
318
+ const fishCompletion = `# ops CLI fish completion
319
+ # Add to ~/.config/fish/completions/ops.fish:
320
+ # ops completion fish > ~/.config/fish/completions/ops.fish
321
+
322
+ # Disable file completion by default
323
+ complete -c ops -f
324
+
325
+ # Commands
326
+ complete -c ops -n __fish_use_subcommand -a get -d 'Get a secret from 1Password'
327
+ complete -c ops -n __fish_use_subcommand -a set -d 'Store a secret in 1Password'
328
+ complete -c ops -n __fish_use_subcommand -a copy -d 'Copy a secret to clipboard'
329
+ complete -c ops -n __fish_use_subcommand -a list -d 'List all items in a vault'
330
+ complete -c ops -n __fish_use_subcommand -a search -d 'Search items by title'
331
+ complete -c ops -n __fish_use_subcommand -a favorites -d 'List favorite items'
332
+ complete -c ops -n __fish_use_subcommand -a vaults -d 'List available vaults'
333
+ complete -c ops -n __fish_use_subcommand -a inspect -d 'Inspect item fields'
334
+ complete -c ops -n __fish_use_subcommand -a export -d 'Export secrets as .env or JSON'
335
+ complete -c ops -n __fish_use_subcommand -a import -d 'Import secrets from .env file'
336
+ complete -c ops -n __fish_use_subcommand -a resolve -d 'Resolve 1Password share link'
337
+ complete -c ops -n __fish_use_subcommand -a run -d 'Run command with secrets injected'
338
+ complete -c ops -n __fish_use_subcommand -a completion -d 'Generate shell completion script'
339
+
340
+ # Common options
341
+ complete -c ops -l vault -s v -d 'Vault name'
342
+ complete -c ops -l quiet -s q -d 'Suppress non-essential output'
343
+ complete -c ops -l no-color -d 'Disable color output'
344
+
345
+ # get command options
346
+ complete -c ops -n '__fish_seen_subcommand_from get' -l field -s f -d 'Field name'
347
+ complete -c ops -n '__fish_seen_subcommand_from get' -l silent -s s -d 'Output only secret value'
348
+ complete -c ops -n '__fish_seen_subcommand_from get' -l plain -d 'Output only secret value'
349
+ complete -c ops -n '__fish_seen_subcommand_from get' -l json -d 'Output as JSON'
350
+ complete -c ops -n '__fish_seen_subcommand_from get' -l no-input -d 'Disable prompts'
351
+
352
+ # set command options
353
+ complete -c ops -n '__fish_seen_subcommand_from set' -l field -s f -d 'Field name'
354
+ complete -c ops -n '__fish_seen_subcommand_from set' -l value -d 'Secret value'
355
+ complete -c ops -n '__fish_seen_subcommand_from set' -l value-file -r -d 'Read from file'
356
+ complete -c ops -n '__fish_seen_subcommand_from set' -l force -d 'Overwrite without confirm'
357
+ complete -c ops -n '__fish_seen_subcommand_from set' -l no-input -d 'Disable prompts'
358
+
359
+ # copy command options
360
+ complete -c ops -n '__fish_seen_subcommand_from copy' -l field -s f -d 'Field name'
361
+ complete -c ops -n '__fish_seen_subcommand_from copy' -l ttl -d 'Clear after N seconds'
362
+
363
+ # list command options
364
+ complete -c ops -n '__fish_seen_subcommand_from list' -l search -s s -d 'Search query'
365
+ complete -c ops -n '__fish_seen_subcommand_from list' -l json -s j -d 'Output as JSON'
366
+ complete -c ops -n '__fish_seen_subcommand_from list' -l plain -d 'Tab-delimited output'
367
+ complete -c ops -n '__fish_seen_subcommand_from list' -l favorites -d 'Show favorites only'
368
+
369
+ # export command options
370
+ complete -c ops -n '__fish_seen_subcommand_from export' -l format -s f -a 'env json' -d 'Output format'
371
+ complete -c ops -n '__fish_seen_subcommand_from export' -l json -s j -d 'Alias for --format json'
372
+ complete -c ops -n '__fish_seen_subcommand_from export' -l output -s o -r -d 'Output file'
373
+
374
+ # import command options
375
+ complete -c ops -n '__fish_seen_subcommand_from import' -l dry-run -d 'Preview without modifying'
376
+
377
+ # run command options
378
+ complete -c ops -n '__fish_seen_subcommand_from run' -l env -s e -d 'Map env to secret'
379
+ complete -c ops -n '__fish_seen_subcommand_from run' -l env-file -r -d 'Env mapping file'
380
+ complete -c ops -n '__fish_seen_subcommand_from run' -l verbose -d 'Show injected secrets'
381
+
382
+ # completion command - shell argument
383
+ complete -c ops -n '__fish_seen_subcommand_from completion' -a 'bash zsh fish' -d 'Shell type'
384
+
385
+ # Dynamic vault completion (if op CLI available)
386
+ function __fish_ops_vaults
387
+ command -v op &>/dev/null; and op vault list --format=json 2>/dev/null | jq -r '.[].name' 2>/dev/null
388
+ end
389
+
390
+ complete -c ops -n '__fish_seen_subcommand_from get set copy list search favorites inspect export import run' -l vault -s v -xa '(__fish_ops_vaults)'
391
+
392
+ # Dynamic item completion (if op CLI available)
393
+ function __fish_ops_items
394
+ command -v op &>/dev/null; and op item list --format=json 2>/dev/null | jq -r '.[].title' 2>/dev/null | head -20
395
+ end
396
+
397
+ complete -c ops -n '__fish_seen_subcommand_from get copy inspect' -xa '(__fish_ops_items)'
398
+
399
+ # Field completion
400
+ complete -c ops -n '__fish_seen_subcommand_from get set copy' -l field -s f -xa 'password credential username notesPlain api-key token'
401
+ `;
402
+ export async function completionCommand(shell, options) {
403
+ const targetShell = shell || detectShell();
404
+ switch (targetShell) {
405
+ case 'bash':
406
+ console.log(bashCompletion);
407
+ break;
408
+ case 'zsh':
409
+ console.log(zshCompletion);
410
+ break;
411
+ case 'fish':
412
+ console.log(fishCompletion);
413
+ break;
414
+ default:
415
+ console.error(`Unknown shell: ${targetShell}`);
416
+ console.error('Supported shells: bash, zsh, fish');
417
+ console.error('');
418
+ console.error('Usage:');
419
+ console.error(' ops completion bash # Generate bash completion');
420
+ console.error(' ops completion zsh # Generate zsh completion');
421
+ console.error(' ops completion fish # Generate fish completion');
422
+ console.error('');
423
+ console.error('Installation:');
424
+ console.error(' # Bash (add to ~/.bashrc)');
425
+ console.error(' source <(ops completion bash)');
426
+ console.error('');
427
+ console.error(' # Zsh (add to ~/.zshrc)');
428
+ console.error(' source <(ops completion zsh)');
429
+ console.error('');
430
+ console.error(' # Fish');
431
+ console.error(' ops completion fish > ~/.config/fish/completions/ops.fish');
432
+ process.exit(1);
433
+ }
434
+ }
435
+ function detectShell() {
436
+ const shell = process.env.SHELL || '';
437
+ if (shell.includes('zsh'))
438
+ return 'zsh';
439
+ if (shell.includes('fish'))
440
+ return 'fish';
441
+ if (shell.includes('bash'))
442
+ return 'bash';
443
+ return 'bash'; // Default to bash
444
+ }
445
+ //# sourceMappingURL=completion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion.js","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,yBAAyB;AACzB,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuGtB,CAAC;AAEF,wBAAwB;AACxB,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6MrB,CAAC;AAEF,yBAAyB;AACzB,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmFtB,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"}
package/dist/index.js CHANGED
@@ -11,6 +11,7 @@ import { resolveCommand } from './commands/resolve.js';
11
11
  import { runCommand } from './commands/run.js';
12
12
  import { inspectCommand } from './commands/inspect.js';
13
13
  import { vaultsCommand } from './commands/vaults.js';
14
+ import { completionCommand } from './commands/completion.js';
14
15
  // Dynamic version from package.json
15
16
  const require = createRequire(import.meta.url);
16
17
  const pkg = require('../package.json');
@@ -152,6 +153,12 @@ program
152
153
  .option('-q, --quiet', 'suppress non-essential output')
153
154
  .option('--no-color', 'disable color output')
154
155
  .action(resolveCommand);
156
+ program
157
+ .command('completion [shell]')
158
+ .description('Generate shell completion script (bash, zsh, fish)')
159
+ .option('-q, --quiet', 'suppress non-essential output')
160
+ .option('--no-color', 'disable color output')
161
+ .action(completionCommand);
155
162
  // Error handling
156
163
  process.on('uncaughtException', (error) => {
157
164
  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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dc-ops-cli",
3
- "version": "1.1.3",
3
+ "version": "1.3.0",
4
4
  "description": "Easy secret retrieval from 1Password with smart fallbacks",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -23,7 +23,10 @@
23
23
  "dev": "TS_NODE_TRANSPILE_ONLY=1 node --loader ts-node/esm src/index.ts",
24
24
  "typecheck": "tsc --noEmit",
25
25
  "lint": "tsc --noEmit",
26
- "test": "TS_NODE_TRANSPILE_ONLY=1 node --test --loader ts-node/esm",
26
+ "test": "TS_NODE_TRANSPILE_ONLY=1 node --test --loader ts-node/esm 'tests/commands/**/*.test.ts' 'tests/utils/**/*.test.ts'",
27
+ "test:unit": "TS_NODE_TRANSPILE_ONLY=1 node --test --loader ts-node/esm 'tests/commands/**/*.test.ts' 'tests/utils/**/*.test.ts'",
28
+ "test:integration": "npm run build && TEST_OP_CLI=1 TS_NODE_TRANSPILE_ONLY=1 node --test --loader ts-node/esm 'tests/integration/**/*.test.ts'",
29
+ "test:all": "npm run test:unit && npm run test:integration",
27
30
  "prepublishOnly": "npm run build",
28
31
  "release": "semantic-release --dry-run",
29
32
  "release:ci": "semantic-release"