@tigrisdata/cli 2.6.2 → 2.8.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.
Files changed (77) hide show
  1. package/README.md +242 -80
  2. package/dist/auth/client.js +1 -1
  3. package/dist/auth/config.js +1 -1
  4. package/dist/auth/s3-client.js +1 -1
  5. package/dist/auth/storage.js +1 -1
  6. package/dist/chunk-2BGB3HM3.js +2 -0
  7. package/dist/chunk-2HJMXAYU.js +8 -0
  8. package/dist/{chunk-HE7E7ZMA.js → chunk-4CKYRXYB.js} +1 -1
  9. package/dist/{chunk-6U4U4JM6.js → chunk-7F4WI32C.js} +1 -1
  10. package/dist/chunk-BP52O7NB.js +1 -0
  11. package/dist/chunk-CQCBYE3X.js +6 -0
  12. package/dist/{chunk-QZXBLNMQ.js → chunk-DC3ZKGQV.js} +1 -1
  13. package/dist/{chunk-A3TXP5Y2.js → chunk-I52LJ637.js} +1 -1
  14. package/dist/{chunk-DJIPPZGR.js → chunk-KBDSESA4.js} +1 -1
  15. package/dist/chunk-LY55GPPO.js +1 -0
  16. package/dist/chunk-TF2BX3PY.js +10 -0
  17. package/dist/{chunk-JVB3Y42V.js → chunk-UUITLEOI.js} +1 -1
  18. package/dist/chunk-Y7MJZRR4.js +1 -0
  19. package/dist/cli.js +1 -1
  20. package/dist/constants.js +1 -1
  21. package/dist/index.js +1 -1
  22. package/dist/lib/access-keys/assign.js +2 -2
  23. package/dist/lib/access-keys/create.js +2 -2
  24. package/dist/lib/access-keys/delete.js +2 -2
  25. package/dist/lib/access-keys/get.js +2 -2
  26. package/dist/lib/access-keys/list.js +2 -2
  27. package/dist/lib/buckets/create.js +1 -1
  28. package/dist/lib/buckets/delete.js +1 -1
  29. package/dist/lib/buckets/get.js +1 -1
  30. package/dist/lib/buckets/list.js +1 -1
  31. package/dist/lib/buckets/set.js +1 -1
  32. package/dist/lib/configure/index.js +1 -1
  33. package/dist/lib/cp.js +1 -1
  34. package/dist/lib/credentials/test.js +1 -1
  35. package/dist/lib/forks/create.js +1 -1
  36. package/dist/lib/forks/list.js +1 -1
  37. package/dist/lib/iam/policies/create.js +2 -0
  38. package/dist/lib/iam/policies/delete.js +2 -0
  39. package/dist/lib/iam/policies/edit.js +2 -0
  40. package/dist/lib/iam/policies/get.js +2 -0
  41. package/dist/lib/iam/policies/list.js +2 -0
  42. package/dist/lib/iam/policies/utils.js +1 -0
  43. package/dist/lib/login/credentials.js +1 -1
  44. package/dist/lib/login/oauth.js +1 -1
  45. package/dist/lib/login/select.js +1 -1
  46. package/dist/lib/logout.js +1 -1
  47. package/dist/lib/ls.js +1 -1
  48. package/dist/lib/mk.js +1 -1
  49. package/dist/lib/mv.js +1 -1
  50. package/dist/lib/objects/delete.js +1 -1
  51. package/dist/lib/objects/get.js +1 -1
  52. package/dist/lib/objects/list.js +1 -1
  53. package/dist/lib/objects/put.js +1 -1
  54. package/dist/lib/objects/set.js +1 -0
  55. package/dist/lib/organizations/create.js +2 -2
  56. package/dist/lib/organizations/list.js +2 -2
  57. package/dist/lib/organizations/select.js +3 -3
  58. package/dist/lib/rm.js +1 -1
  59. package/dist/lib/snapshots/list.js +1 -1
  60. package/dist/lib/snapshots/take.js +1 -1
  61. package/dist/lib/stat.js +1 -0
  62. package/dist/lib/touch.js +1 -1
  63. package/dist/lib/whoami.js +1 -1
  64. package/dist/specs.yaml +386 -76
  65. package/dist/utils/format.js +1 -1
  66. package/dist/utils/messages.js +1 -1
  67. package/dist/utils/specs.js +1 -1
  68. package/dist/utils/update-check.js +1 -1
  69. package/package.json +5 -3
  70. package/postinstall.cjs +32 -0
  71. package/dist/chunk-4LGKN5DA.js +0 -1
  72. package/dist/chunk-D63SZLT5.js +0 -1
  73. package/dist/chunk-ESJWTUFN.js +0 -1
  74. package/dist/chunk-HGIJOGCZ.js +0 -6
  75. package/dist/chunk-TPUZYSCZ.js +0 -12
  76. package/dist/chunk-TUJTXB5G.js +0 -8
  77. package/dist/lib/_stat.js +0 -1
package/dist/specs.yaml CHANGED
@@ -79,8 +79,11 @@ commands:
79
79
  #########################
80
80
  # configure
81
81
  - name: configure
82
- description: Save credentials permanently. After running this, all commands uses these credentials.
82
+ description: Save access-key credentials to ~/.tigris/config.json for persistent use across all commands
83
83
  alias: c
84
+ examples:
85
+ - "tigris configure --access-key tid_AaBb --access-secret tsec_XxYy"
86
+ - "tigris configure --endpoint https://custom.endpoint.dev"
84
87
  messages:
85
88
  onStart: 'Saving credentials...'
86
89
  onSuccess: 'Credentials saved to ~/.tigris/config.json. You can now use all tigris commands.'
@@ -101,7 +104,11 @@ commands:
101
104
 
102
105
  # login
103
106
  - name: login
104
- description: Start a session. Use OAuth (default) or temporary credentials that override your saved config
107
+ description: Start a session via OAuth (default) or temporary credentials. Session state is cleared on logout
108
+ examples:
109
+ - "tigris login"
110
+ - "tigris login oauth"
111
+ - "tigris login credentials --access-key tid_AaBb --access-secret tsec_XxYy"
105
112
  messages:
106
113
  onStart: ''
107
114
  onSuccess: 'Login successful'
@@ -116,7 +123,7 @@ commands:
116
123
  description: Secret for temporary credentials
117
124
  alias: secret
118
125
  required: false
119
- operations:
126
+ commands:
120
127
  # login (main interactive operation)
121
128
  - name: select
122
129
  description: Choose how to login - OAuth (browser) or credentials (access key)
@@ -126,8 +133,10 @@ commands:
126
133
  onFailure: 'Login failed'
127
134
  # oauth
128
135
  - name: oauth
129
- description: Login via browser (OAuth2 device flow). Best for interactive use
136
+ description: Login via browser using OAuth2 device flow. Best for interactive use
130
137
  alias: o
138
+ examples:
139
+ - "tigris login oauth"
131
140
  messages:
132
141
  onStart: 'Opening browser for authentication...'
133
142
  onSuccess: "Logged in successfully\nOrganization '{{org}}' selected"
@@ -136,8 +145,11 @@ commands:
136
145
  hint: "You have {{count}} organizations.\nRun \"tigris orgs list\" to switch."
137
146
  # credentials
138
147
  - name: credentials
139
- description: Login with access key + secret. Creates a temporary session (cleared on logout)
148
+ description: Login with an access key and secret. Creates a temporary session that is cleared on logout
140
149
  alias: c
150
+ examples:
151
+ - "tigris login credentials --access-key tid_AaBb --access-secret tsec_XxYy"
152
+ - "tigris login credentials"
141
153
  messages:
142
154
  onStart: 'Authenticating...'
143
155
  onSuccess: 'Logged in with credentials'
@@ -155,8 +167,10 @@ commands:
155
167
 
156
168
  # whoami
157
169
  - name: whoami
158
- description: Show information about the current user
170
+ description: Print the currently authenticated user, organization, and auth method
159
171
  alias: w
172
+ examples:
173
+ - "tigris whoami"
160
174
  messages:
161
175
  onStart: ''
162
176
  onSuccess: ''
@@ -165,7 +179,9 @@ commands:
165
179
 
166
180
  # logout
167
181
  - name: logout
168
- description: End your session. Clears login state but keeps credentials from 'configure'
182
+ description: End the current session and clear login state. Credentials saved via 'configure' are kept
183
+ examples:
184
+ - "tigris logout"
169
185
  messages:
170
186
  onStart: 'Logging out...'
171
187
  onSuccess: 'Logged out. Your configured credentials are still saved.'
@@ -173,12 +189,18 @@ commands:
173
189
 
174
190
  # credentials
175
191
  - name: credentials
176
- description: Manage and test credentials
192
+ description: Test whether your current credentials can reach Tigris and optionally verify access to a specific bucket
177
193
  alias: creds
178
- operations:
194
+ examples:
195
+ - "tigris credentials test"
196
+ - "tigris credentials test --bucket my-bucket"
197
+ commands:
179
198
  - name: test
180
- description: Test if credentials have access to Tigris (optionally to a specific bucket)
199
+ description: Verify that current credentials are valid. Optionally checks access to a specific bucket
181
200
  alias: t
201
+ examples:
202
+ - "tigris credentials test"
203
+ - "tigris credentials test --bucket my-bucket"
182
204
  messages:
183
205
  onStart: 'Testing credentials...'
184
206
  onSuccess: 'Credentials are valid'
@@ -195,12 +217,20 @@ commands:
195
217
  #########################
196
218
  # ls
197
219
  - name: ls
198
- description: List buckets or objects in a bucket or path
220
+ description: List all buckets (no arguments) or objects under a bucket/prefix path. Accepts bare names or t3:// URIs
199
221
  alias: list
222
+ examples:
223
+ - "tigris ls"
224
+ - "tigris ls my-bucket"
225
+ - "tigris ls my-bucket/images/"
226
+ - "tigris ls t3://my-bucket/prefix/"
227
+ messages:
228
+ onFailure: 'Failed to list. Verify the bucket exists and your credentials have access'
229
+ onEmpty: 'No results found. Run "tigris ls" to see all buckets'
200
230
  arguments:
201
231
  - name: path
202
232
  type: positional
203
- description: a bucket or path in a bucket (if not provided, lists all buckets). Supports t3:// and tigris:// prefixes.
233
+ description: A bucket name or bucket/prefix path. Omit to list all buckets. Supports t3:// and tigris:// prefixes
204
234
  examples:
205
235
  - my-bucket
206
236
  - my-bucket/my-path
@@ -209,13 +239,19 @@ commands:
209
239
 
210
240
  # mk
211
241
  - name: mk
212
- description: Create a bucket or a folder in a bucket
242
+ description: Create a bucket (bare name) or a folder inside a bucket (bucket/folder/ with trailing slash)
213
243
  alias: create
244
+ examples:
245
+ - "tigris mk my-bucket"
246
+ - "tigris mk my-bucket/images/"
247
+ - "tigris mk t3://my-bucket"
248
+ messages:
249
+ onFailure: 'Failed to create. Check the name is valid and your credentials have write access'
214
250
  arguments:
215
251
  - name: path
216
252
  required: true
217
253
  type: positional
218
- description: a bucket or a folder in a bucket. Supports t3:// and tigris:// prefixes.
254
+ description: A bucket name or bucket/folder/ path. Trailing slash creates a folder inside the bucket. Supports t3:// and tigris:// prefixes
219
255
  examples:
220
256
  - my-bucket
221
257
  - my-bucket/my-path
@@ -224,40 +260,63 @@ commands:
224
260
 
225
261
  # touch
226
262
  - name: touch
227
- description: Create an empty object in a bucket
263
+ description: Create an empty (zero-byte) object at the given bucket/key path
264
+ examples:
265
+ - "tigris touch my-bucket/placeholder.txt"
266
+ - "tigris touch t3://my-bucket/logs/"
267
+ messages:
268
+ onFailure: 'Failed to create object. Verify the bucket exists and your credentials have write access'
228
269
  arguments:
229
270
  - name: path
230
271
  required: true
231
272
  type: positional
232
- description: path to the object (bucket/key). Supports t3:// and tigris:// prefixes.
273
+ description: Object path as bucket/key. Supports t3:// and tigris:// prefixes
233
274
  examples:
234
275
  - my-bucket/my-file.txt
235
276
  - t3://my-bucket/my-file.txt
236
277
 
237
278
  # stat
238
279
  - name: stat
239
- description: Get the details of a bucket or a folder in a bucket or an object in a bucket or path
280
+ description: Show storage stats (no args), bucket info, or object metadata
281
+ examples:
282
+ - "tigris stat"
283
+ - "tigris stat t3://my-bucket"
284
+ - "tigris stat t3://my-bucket/my-object.json"
285
+ messages:
286
+ onStart: ''
287
+ onSuccess: ''
288
+ onFailure: 'Failed to get stats'
240
289
  arguments:
241
290
  - name: path
242
- required: true
291
+ required: false
243
292
  type: positional
244
- description: a bucket, folder, or object path. Supports t3:// and tigris:// prefixes.
293
+ description: Optional bucket or object path. Without it, shows overall storage stats
245
294
  examples:
246
- - my-bucket
247
- - my-bucket/my-path
248
295
  - t3://my-bucket
249
296
  - t3://my-bucket/my-path
250
- - my-bucket/my-path/my-object.json
297
+ - t3://my-bucket/my-object.json
298
+ - name: format
299
+ description: Output format
300
+ alias: f
301
+ options: [json, table, xml]
302
+ default: table
251
303
 
252
304
  # cp
253
305
  - name: cp
254
- description: Copy files between local filesystem and Tigris, or within Tigris
306
+ description: Copy files between local filesystem and Tigris, or between paths within Tigris. At least one side must be a remote t3:// path
255
307
  alias: copy
308
+ examples:
309
+ - "tigris cp ./file.txt t3://my-bucket/file.txt"
310
+ - "tigris cp t3://my-bucket/file.txt ./local-copy.txt"
311
+ - "tigris cp t3://my-bucket/src/ t3://my-bucket/dest/ -r"
312
+ - "tigris cp ./images/ t3://my-bucket/images/ -r"
313
+ messages:
314
+ onFailure: 'Copy failed. Verify both paths are correct and credentials have access'
256
315
  arguments:
257
316
  - name: src
258
317
  required: true
259
318
  type: positional
260
- description: source path. Use t3:// (or tigris://) prefix for remote Tigris paths, bare paths for local files. At least one side must be remote. Quote wildcard patterns to prevent shell expansion.
319
+ description: Source path. Use t3:// (or tigris://) prefix for remote Tigris paths, bare paths for local files. At least one side must be remote. Quote wildcard patterns to prevent shell expansion
261
320
  examples:
262
321
  - ./file.txt
263
322
  - ./dir/
@@ -267,7 +326,7 @@ commands:
267
326
  - name: dest
268
327
  required: true
269
328
  type: positional
270
- description: destination path. Use t3:// (or tigris://) prefix for remote Tigris paths, bare paths for local files.
329
+ description: Destination path. Use t3:// (or tigris://) prefix for remote Tigris paths, bare paths for local files
271
330
  examples:
272
331
  - .
273
332
  - ./local-dir/
@@ -276,17 +335,23 @@ commands:
276
335
  - name: recursive
277
336
  type: flag
278
337
  alias: r
279
- description: copy directories recursively
338
+ description: Copy directories recursively
280
339
 
281
340
  # mv
282
341
  - name: mv
283
- description: Move objects within Tigris
342
+ description: Move (rename) objects within Tigris. Both source and destination must be remote t3:// paths
284
343
  alias: move
344
+ examples:
345
+ - "tigris mv t3://my-bucket/old.txt t3://my-bucket/new.txt -f"
346
+ - "tigris mv t3://my-bucket/old-dir/ t3://my-bucket/new-dir/ -rf"
347
+ - "tigris mv my-bucket/a.txt my-bucket/b.txt -f"
348
+ messages:
349
+ onFailure: 'Move failed. Verify both paths are remote and credentials have access'
285
350
  arguments:
286
351
  - name: src
287
352
  type: positional
288
353
  required: true
289
- description: remote source path. Use t3:// (or tigris://) prefix. Quote wildcard patterns to prevent shell expansion.
354
+ description: Remote source path. Use t3:// (or tigris://) prefix. Quote wildcard patterns to prevent shell expansion
290
355
  examples:
291
356
  - t3://my-bucket/my-path/my-object.json
292
357
  - t3://my-bucket/my-path/
@@ -294,14 +359,14 @@ commands:
294
359
  - name: dest
295
360
  type: positional
296
361
  required: true
297
- description: remote destination path. Use t3:// (or tigris://) prefix.
362
+ description: Remote destination path. Use t3:// (or tigris://) prefix
298
363
  examples:
299
364
  - t3://my-bucket
300
365
  - t3://my-bucket/new-path/
301
366
  - name: recursive
302
367
  type: flag
303
368
  alias: r
304
- description: move directories recursively
369
+ description: Move directories recursively
305
370
  - name: force
306
371
  type: flag
307
372
  alias: f
@@ -309,13 +374,20 @@ commands:
309
374
 
310
375
  # rm
311
376
  - name: rm
312
- description: Remove a bucket, folder, or object from Tigris
377
+ description: Remove a bucket, folder, or object from Tigris. A bare bucket name deletes the bucket itself
313
378
  alias: remove
379
+ examples:
380
+ - "tigris rm t3://my-bucket/file.txt -f"
381
+ - "tigris rm t3://my-bucket/folder/ -rf"
382
+ - "tigris rm t3://my-bucket -f"
383
+ - 'tigris rm "t3://my-bucket/logs/*.tmp" -f'
384
+ messages:
385
+ onFailure: 'Remove failed. Verify the path exists and credentials have delete access'
314
386
  arguments:
315
387
  - name: path
316
388
  type: positional
317
389
  required: true
318
- description: remote path. Use t3:// (or tigris://) prefix. Bucket-only path removes the bucket. Quote wildcard patterns to prevent shell expansion.
390
+ description: Remote path to remove. A bucket-only path removes the bucket. Use t3:// (or tigris://) prefix. Quote wildcard patterns to prevent shell expansion
319
391
  examples:
320
392
  - t3://my-bucket
321
393
  - t3://my-bucket/my-path/my-object.json
@@ -324,7 +396,7 @@ commands:
324
396
  - name: recursive
325
397
  type: flag
326
398
  alias: r
327
- description: remove directories recursively
399
+ description: Remove directories recursively
328
400
  - name: force
329
401
  type: flag
330
402
  alias: f
@@ -335,12 +407,19 @@ commands:
335
407
  #########################
336
408
  - name: organizations
337
409
  alias: orgs
338
- description: Manage organizations
339
- operations:
410
+ description: List, create, and switch between organizations. An organization is a workspace that contains your resources like buckets and access keys
411
+ examples:
412
+ - "tigris orgs list"
413
+ - "tigris orgs create my-org"
414
+ - "tigris orgs select my-org"
415
+ commands:
340
416
  # list
341
417
  - name: list
342
- description: List organizations
418
+ description: List all organizations you belong to and interactively select one as active
343
419
  alias: l
420
+ examples:
421
+ - "tigris orgs list"
422
+ - "tigris orgs list --format json"
344
423
  messages:
345
424
  onStart: 'Listing organizations...'
346
425
  onSuccess: "Organization '{{name}}' selected"
@@ -348,7 +427,7 @@ commands:
348
427
  onEmpty: "No organizations found. You may need to re-authenticate.\nRun: tigris login"
349
428
  arguments:
350
429
  - name: format
351
- description: Format
430
+ description: Output format
352
431
  alias: f
353
432
  options: [json, table, xml, select]
354
433
  default: select
@@ -357,8 +436,10 @@ commands:
357
436
  alias: i
358
437
  type: flag
359
438
  - name: create
360
- description: Create organization
439
+ description: Create a new organization with the given name
361
440
  alias: c
441
+ examples:
442
+ - "tigris orgs create my-org"
362
443
  messages:
363
444
  onStart: 'Creating organization...'
364
445
  onSuccess: "Organization '{{name}}' created successfully\nOrganization ID: {{id}}"
@@ -372,8 +453,10 @@ commands:
372
453
  examples:
373
454
  - my-organization
374
455
  - name: select
375
- description: Select the organization to use
456
+ description: Set the named organization as your active org for all subsequent commands
376
457
  alias: s
458
+ examples:
459
+ - "tigris orgs select my-org"
377
460
  messages:
378
461
  onStart: ''
379
462
  onSuccess: "Organization '{{name}}' selected"
@@ -390,13 +473,21 @@ commands:
390
473
  # Manage buckets
391
474
  #########################
392
475
  - name: buckets
393
- description: Manage buckets
476
+ description: Create, inspect, update, and delete buckets. Buckets are top-level containers that hold objects
394
477
  alias: b
395
- operations:
478
+ examples:
479
+ - "tigris buckets list"
480
+ - "tigris buckets create my-bucket"
481
+ - "tigris buckets get my-bucket"
482
+ - "tigris buckets delete my-bucket"
483
+ commands:
396
484
  # list
397
485
  - name: list
398
- description: List buckets
486
+ description: List all buckets in the current organization
399
487
  alias: l
488
+ examples:
489
+ - "tigris buckets list"
490
+ - "tigris buckets list --format json"
400
491
  messages:
401
492
  onStart: 'Listing buckets...'
402
493
  onSuccess: 'Found {{count}} bucket(s)'
@@ -404,14 +495,18 @@ commands:
404
495
  onEmpty: 'No buckets found'
405
496
  arguments:
406
497
  - name: format
407
- description: Format
498
+ description: Output format
408
499
  alias: f
409
500
  options: [json, table, xml]
410
501
  default: table
411
502
  # create
412
503
  - name: create
413
- description: Create bucket
504
+ description: Create a new bucket with optional access, tier, consistency, and region settings
414
505
  alias: c
506
+ examples:
507
+ - "tigris buckets create my-bucket"
508
+ - "tigris buckets create my-bucket --access public --region iad"
509
+ - "tigris buckets create my-bucket --enable-snapshots --default-tier STANDARD_IA"
415
510
  messages:
416
511
  onStart: 'Creating bucket...'
417
512
  onSuccess: "Bucket '{{name}}' created successfully"
@@ -450,8 +545,10 @@ commands:
450
545
  default: 'global'
451
546
  # get
452
547
  - name: get
453
- description: Get bucket details
548
+ description: Show details for a bucket including access level, region, tier, and custom domain
454
549
  alias: g
550
+ examples:
551
+ - "tigris buckets get my-bucket"
455
552
  messages:
456
553
  onStart: 'Getting bucket details...'
457
554
  onSuccess: ''
@@ -465,8 +562,11 @@ commands:
465
562
  - my-bucket
466
563
  # delete
467
564
  - name: delete
468
- description: Delete bucket
565
+ description: Delete one or more buckets by name. The bucket must be empty or delete-protection must be off
469
566
  alias: d
567
+ examples:
568
+ - "tigris buckets delete my-bucket"
569
+ - "tigris buckets delete bucket-a,bucket-b"
470
570
  messages:
471
571
  onStart: 'Deleting bucket...'
472
572
  onSuccess: "Bucket '{{name}}' deleted successfully"
@@ -481,8 +581,12 @@ commands:
481
581
  - my-bucket
482
582
  # set
483
583
  - name: set
484
- description: Update bucket settings
584
+ description: Update settings on an existing bucket such as access level, region, caching, or custom domain
485
585
  alias: s
586
+ examples:
587
+ - "tigris buckets set my-bucket --access public"
588
+ - "tigris buckets set my-bucket --region iad,fra --cache-control 'max-age=3600'"
589
+ - "tigris buckets set my-bucket --custom-domain assets.example.com"
486
590
  messages:
487
591
  onStart: 'Updating bucket...'
488
592
  onSuccess: 'Bucket {{name}} updated successfully'
@@ -519,13 +623,19 @@ commands:
519
623
  # Manage forks
520
624
  #########################
521
625
  - name: forks
522
- description: Manage forks
626
+ description: List and create forks. A fork is a writable copy-on-write clone of a bucket, useful for testing or branching data
523
627
  alias: f
524
- operations:
628
+ examples:
629
+ - "tigris forks list my-bucket"
630
+ - "tigris forks create my-bucket my-fork"
631
+ commands:
525
632
  # list
526
633
  - name: list
527
- description: List forks of a bucket
634
+ description: List all forks created from the given source bucket
528
635
  alias: l
636
+ examples:
637
+ - "tigris forks list my-bucket"
638
+ - "tigris forks list my-bucket --format json"
529
639
  messages:
530
640
  onStart: 'Listing forks...'
531
641
  onSuccess: 'Found {{count}} fork(s)'
@@ -545,8 +655,11 @@ commands:
545
655
  default: table
546
656
  # create
547
657
  - name: create
548
- description: Create a fork of a bucket
658
+ description: Create a new fork (copy-on-write clone) of the source bucket. Optionally fork from a specific snapshot
549
659
  alias: c
660
+ examples:
661
+ - "tigris forks create my-bucket my-fork"
662
+ - "tigris forks create my-bucket my-fork --snapshot snap-2025-01-01"
550
663
  messages:
551
664
  onStart: 'Creating fork...'
552
665
  onSuccess: "Fork '{{forkName}}' created from '{{name}}'"
@@ -572,13 +685,19 @@ commands:
572
685
  # Manage snapshots
573
686
  #########################
574
687
  - name: snapshots
575
- description: Manage snapshots
688
+ description: List and take snapshots. A snapshot is a point-in-time, read-only copy of a bucket's state
576
689
  alias: s
577
- operations:
690
+ examples:
691
+ - "tigris snapshots list my-bucket"
692
+ - "tigris snapshots take my-bucket"
693
+ commands:
578
694
  # list
579
695
  - name: list
580
- description: List snapshots of a bucket
696
+ description: List all snapshots for the given bucket, ordered by creation time
581
697
  alias: l
698
+ examples:
699
+ - "tigris snapshots list my-bucket"
700
+ - "tigris snapshots list my-bucket --format json"
582
701
  messages:
583
702
  onStart: 'Listing snapshots...'
584
703
  onSuccess: 'Found {{count}} snapshot(s)'
@@ -598,8 +717,11 @@ commands:
598
717
  default: table
599
718
  # take
600
719
  - name: take
601
- description: Take a snapshot of a bucket
720
+ description: Take a new snapshot of the bucket's current state. Optionally provide a name for the snapshot
602
721
  alias: t
722
+ examples:
723
+ - "tigris snapshots take my-bucket"
724
+ - "tigris snapshots take my-bucket my-snapshot"
603
725
  messages:
604
726
  onStart: 'Taking snapshot...'
605
727
  onSuccess: "Snapshot '{{snapshotName}}' taken for bucket '{{name}}'"
@@ -612,7 +734,7 @@ commands:
612
734
  examples:
613
735
  - my-bucket
614
736
  - name: snapshot-name
615
- description: Name of the snapshot (optional)
737
+ description: Name of the snapshot (optional, auto-generated if omitted)
616
738
  type: positional
617
739
  required: false
618
740
  examples:
@@ -622,13 +744,22 @@ commands:
622
744
  # Manage objects
623
745
  #########################
624
746
  - name: objects
625
- description: Manage objects
747
+ description: Low-level object operations for listing, downloading, uploading, and deleting individual objects in a bucket
626
748
  alias: o
627
- operations:
749
+ examples:
750
+ - "tigris objects list my-bucket"
751
+ - "tigris objects get my-bucket report.pdf --output ./report.pdf"
752
+ - "tigris objects put my-bucket report.pdf ./report.pdf"
753
+ - "tigris objects delete my-bucket report.pdf"
754
+ commands:
628
755
  # list
629
756
  - name: list
630
- description: List objects in a bucket
757
+ description: List objects in a bucket, optionally filtered by a key prefix
631
758
  alias: l
759
+ examples:
760
+ - "tigris objects list my-bucket"
761
+ - "tigris objects list my-bucket --prefix images/"
762
+ - "tigris objects list my-bucket --format json"
632
763
  messages:
633
764
  onStart: 'Listing objects...'
634
765
  onSuccess: 'Found {{count}} object(s)'
@@ -642,7 +773,7 @@ commands:
642
773
  examples:
643
774
  - my-bucket
644
775
  - name: prefix
645
- description: Filter objects by prefix
776
+ description: Filter objects by key prefix (e.g. "images/" to list only images)
646
777
  alias: p
647
778
  - name: format
648
779
  description: Output format
@@ -651,8 +782,11 @@ commands:
651
782
  default: table
652
783
  # get
653
784
  - name: get
654
- description: Get an object
785
+ description: Download an object by key. Prints to stdout by default, or saves to a file with --output
655
786
  alias: g
787
+ examples:
788
+ - "tigris objects get my-bucket config.json"
789
+ - "tigris objects get my-bucket archive.zip --output ./archive.zip --mode stream"
656
790
  messages:
657
791
  onStart: 'Getting object...'
658
792
  onSuccess: ''
@@ -674,13 +808,16 @@ commands:
674
808
  description: Output file path (if not specified, prints to stdout)
675
809
  alias: o
676
810
  - name: mode
677
- description: Response mode (auto-detected from extension if not specified)
811
+ description: 'Response mode: "string" loads into memory, "stream" writes in chunks (auto-detected from extension if not specified)'
678
812
  alias: m
679
813
  options: [string, stream]
680
814
  # put
681
815
  - name: put
682
- description: Upload an object
816
+ description: Upload a local file as an object. Content-type is auto-detected from extension unless overridden
683
817
  alias: p
818
+ examples:
819
+ - "tigris objects put my-bucket report.pdf ./report.pdf"
820
+ - "tigris objects put my-bucket logo.png ./logo.png --access public --content-type image/png"
684
821
  messages:
685
822
  onStart: 'Uploading object...'
686
823
  onSuccess: "Object '{{key}}' uploaded successfully"
@@ -699,7 +836,7 @@ commands:
699
836
  examples:
700
837
  - my-file.txt
701
838
  - name: file
702
- description: Path to the file to upload
839
+ description: Path to the local file to upload
703
840
  type: positional
704
841
  examples:
705
842
  - ./my-file.txt
@@ -709,7 +846,7 @@ commands:
709
846
  options: *access_options
710
847
  default: private
711
848
  - name: content-type
712
- description: Content type
849
+ description: Content type (auto-detected from extension if omitted)
713
850
  alias: t
714
851
  - name: format
715
852
  description: Output format
@@ -718,8 +855,11 @@ commands:
718
855
  default: table
719
856
  # delete
720
857
  - name: delete
721
- description: Delete an object
858
+ description: Delete one or more objects by key from the given bucket
722
859
  alias: d
860
+ examples:
861
+ - "tigris objects delete my-bucket old-file.txt"
862
+ - "tigris objects delete my-bucket file-a.txt,file-b.txt"
723
863
  messages:
724
864
  onStart: 'Deleting object...'
725
865
  onSuccess: "Object '{{key}}' deleted successfully"
@@ -738,25 +878,61 @@ commands:
738
878
  multiple: true
739
879
  examples:
740
880
  - my-file.txt
881
+ # set
882
+ - name: set
883
+ description: Update settings on an existing object such as access level
884
+ alias: s
885
+ examples:
886
+ - "tigris objects set my-bucket my-file.txt --access public"
887
+ - "tigris objects set my-bucket my-file.txt --access private"
888
+ messages:
889
+ onStart: 'Updating object...'
890
+ onSuccess: "Object '{{key}}' updated successfully"
891
+ onFailure: 'Failed to update object'
892
+ arguments:
893
+ - name: bucket
894
+ description: Name of the bucket
895
+ type: positional
896
+ required: true
897
+ - name: key
898
+ description: Key of the object
899
+ type: positional
900
+ required: true
901
+ - name: access
902
+ description: Access level
903
+ alias: a
904
+ options: *access_options
905
+ required: true
906
+ - name: new-key
907
+ description: Rename the object to a new key
908
+ alias: n
741
909
 
742
910
  #########################
743
911
  # Manage access keys
744
912
  #########################
745
913
  - name: access-keys
746
- description: Manage access keys
914
+ description: Create, list, inspect, delete, and assign roles to access keys. Access keys are credentials used for programmatic API access
747
915
  alias: keys
748
- operations:
916
+ examples:
917
+ - "tigris access-keys list"
918
+ - "tigris access-keys create my-ci-key"
919
+ - "tigris access-keys assign tid_AaBb --bucket my-bucket --role Editor"
920
+ commands:
749
921
  - name: list
750
- description: List all access keys
922
+ description: List all access keys in the current organization
751
923
  alias: l
924
+ examples:
925
+ - "tigris access-keys list"
752
926
  messages:
753
927
  onStart: ''
754
928
  onSuccess: ''
755
929
  onFailure: 'Failed to list access keys'
756
930
  onEmpty: 'No access keys found'
757
931
  - name: create
758
- description: Create a new access key
932
+ description: Create a new access key with the given name. Returns the key ID and secret (shown only once)
759
933
  alias: c
934
+ examples:
935
+ - "tigris access-keys create my-ci-key"
760
936
  messages:
761
937
  onStart: 'Creating access key...'
762
938
  onSuccess: 'Access key created'
@@ -769,8 +945,10 @@ commands:
769
945
  examples:
770
946
  - my-key
771
947
  - name: delete
772
- description: Delete an access key
948
+ description: Permanently delete an access key by its ID. This revokes all access immediately
773
949
  alias: d
950
+ examples:
951
+ - "tigris access-keys delete tid_AaBbCcDdEeFf"
774
952
  messages:
775
953
  onStart: 'Deleting access key...'
776
954
  onSuccess: 'Access key deleted'
@@ -783,8 +961,10 @@ commands:
783
961
  examples:
784
962
  - tid_AaBbCcDdEeFf
785
963
  - name: get
786
- description: Get details of an access key
964
+ description: Show details for an access key including its name, creation date, and assigned bucket roles
787
965
  alias: g
966
+ examples:
967
+ - "tigris access-keys get tid_AaBbCcDdEeFf"
788
968
  messages:
789
969
  onStart: ''
790
970
  onSuccess: ''
@@ -797,8 +977,13 @@ commands:
797
977
  examples:
798
978
  - tid_AaBbCcDdEeFf
799
979
  - name: assign
800
- description: Assign bucket roles to an access key
980
+ description: Assign per-bucket roles to an access key. Pair each --bucket with a --role (Editor or ReadOnly), or use --admin for org-wide access
801
981
  alias: a
982
+ examples:
983
+ - "tigris access-keys assign tid_AaBb --bucket my-bucket --role Editor"
984
+ - "tigris access-keys assign tid_AaBb --bucket a,b --role Editor,ReadOnly"
985
+ - "tigris access-keys assign tid_AaBb --admin"
986
+ - "tigris access-keys assign tid_AaBb --revoke-roles"
802
987
  messages:
803
988
  onStart: 'Assigning bucket roles...'
804
989
  onSuccess: 'Bucket roles assigned'
@@ -812,11 +997,11 @@ commands:
812
997
  - tid_AaBbCcDdEeFf
813
998
  - name: bucket
814
999
  alias: b
815
- description: Bucket name (can specify multiple)
1000
+ description: Bucket name (can specify multiple, comma-separated). Each bucket is paired positionally with a --role value
816
1001
  multiple: true
817
1002
  - name: role
818
1003
  alias: r
819
- description: Role to assign (can specify multiple to pair with buckets)
1004
+ description: Role to assign (can specify multiple, comma-separated). Each role pairs with the corresponding --bucket value
820
1005
  multiple: true
821
1006
  options:
822
1007
  - Editor
@@ -826,4 +1011,129 @@ commands:
826
1011
  type: flag
827
1012
  - name: revoke-roles
828
1013
  description: Revoke all bucket roles from the access key
829
- type: flag
1014
+ type: flag
1015
+
1016
+ #########################
1017
+ # IAM - Identity and Access Management
1018
+ #########################
1019
+ - name: iam
1020
+ description: Identity and Access Management - manage policies, roles, and permissions
1021
+ examples:
1022
+ - "tigris iam policies list"
1023
+ - "tigris iam policies get arn:aws:iam::org_id:policy/my-policy"
1024
+ - "tigris iam policies create my-policy --document policy.json"
1025
+ commands:
1026
+ - name: policies
1027
+ description: Manage IAM policies. Policies define permissions for access keys
1028
+ alias: p
1029
+ examples:
1030
+ - "tigris iam policies list"
1031
+ - "tigris iam policies get"
1032
+ commands:
1033
+ - name: list
1034
+ description: List all policies in the current organization
1035
+ alias: l
1036
+ examples:
1037
+ - "tigris iam policies list"
1038
+ messages:
1039
+ onStart: ''
1040
+ onSuccess: ''
1041
+ onFailure: 'Failed to list policies'
1042
+ onEmpty: 'No policies found'
1043
+ arguments:
1044
+ - name: format
1045
+ description: Output format
1046
+ alias: f
1047
+ options: [json, table, xml]
1048
+ default: table
1049
+ - name: get
1050
+ description: Show details for a policy including its document and attached users. If no ARN provided, shows interactive selection
1051
+ alias: g
1052
+ examples:
1053
+ - "tigris iam policies get"
1054
+ - "tigris iam policies get arn:aws:iam::org_id:policy/my-policy"
1055
+ messages:
1056
+ onStart: ''
1057
+ onSuccess: ''
1058
+ onFailure: 'Failed to get policy'
1059
+ onEmpty: 'No policies found'
1060
+ arguments:
1061
+ - name: resource
1062
+ description: Policy ARN. If omitted, shows interactive selection
1063
+ type: positional
1064
+ required: false
1065
+ examples:
1066
+ - arn:aws:iam::org_id:policy/my-policy
1067
+ - name: format
1068
+ description: Output format
1069
+ alias: f
1070
+ options: [json, table, xml]
1071
+ default: table
1072
+ - name: create
1073
+ description: Create a new policy with the given name and policy document. Document can be provided via file, inline JSON, or stdin
1074
+ alias: c
1075
+ examples:
1076
+ - "tigris iam policies create my-policy --document policy.json"
1077
+ - "tigris iam policies create my-policy --document '{\"Version\":\"2012-10-17\",\"Statement\":[...]}'"
1078
+ - "cat policy.json | tigris iam policies create my-policy"
1079
+ messages:
1080
+ onStart: 'Creating policy...'
1081
+ onSuccess: "Policy '{{name}}' created"
1082
+ onFailure: 'Failed to create policy'
1083
+ arguments:
1084
+ - name: name
1085
+ description: Policy name
1086
+ type: positional
1087
+ required: true
1088
+ examples:
1089
+ - my-policy
1090
+ - name: document
1091
+ description: Policy document (JSON file path or inline JSON). If omitted, reads from stdin
1092
+ alias: d
1093
+ required: false
1094
+ - name: description
1095
+ description: Policy description
1096
+ - name: edit
1097
+ description: Update an existing policy's document. Document can be provided via file, inline JSON, or stdin. If no ARN provided, shows interactive selection
1098
+ alias: e
1099
+ examples:
1100
+ - "tigris iam policies edit --document policy.json"
1101
+ - "tigris iam policies edit arn:aws:iam::org_id:policy/my-policy --document policy.json"
1102
+ - "cat policy.json | tigris iam policies edit arn:aws:iam::org_id:policy/my-policy"
1103
+ messages:
1104
+ onStart: 'Updating policy...'
1105
+ onSuccess: "Policy '{{resource}}' updated"
1106
+ onFailure: 'Failed to update policy'
1107
+ onEmpty: 'No policies found'
1108
+ arguments:
1109
+ - name: resource
1110
+ description: Policy ARN. If omitted, shows interactive selection
1111
+ type: positional
1112
+ required: false
1113
+ examples:
1114
+ - arn:aws:iam::org_id:policy/my-policy
1115
+ - name: document
1116
+ description: New policy document (JSON file path or inline JSON). If omitted, reads from stdin
1117
+ alias: d
1118
+ required: false
1119
+ - name: description
1120
+ description: Update policy description
1121
+ required: false
1122
+ - name: delete
1123
+ description: Delete a policy. If no ARN provided, shows interactive selection
1124
+ alias: d
1125
+ examples:
1126
+ - "tigris iam policies delete"
1127
+ - "tigris iam policies delete arn:aws:iam::org_id:policy/my-policy"
1128
+ messages:
1129
+ onStart: 'Deleting policy...'
1130
+ onSuccess: "Policy '{{resource}}' deleted"
1131
+ onFailure: 'Failed to delete policy'
1132
+ onEmpty: 'No policies found'
1133
+ arguments:
1134
+ - name: resource
1135
+ description: Policy ARN. If omitted, shows interactive selection
1136
+ type: positional
1137
+ required: false
1138
+ examples:
1139
+ - arn:aws:iam::org_id:policy/my-policy