fce44ae9 Andy McCall 1 month ago ↶
1
2
b582948f Andy McCall 19 days ago ↶
3
mod approve ;
642da263 Andy McCall 7 days ago ↶
4
mod artifact ;
ff1f62fe Andy McCall 1 month ago ↶
5
mod auth ;
fce44ae9 Andy McCall 1 month ago ↶
6
mod format ;
75167672 Andy McCall 1 month ago
7
mod identity ;
c6aa5bd9 Andy McCall 1 month ago ↶
8
mod json ;
91334b7f Andy McCall 4 days ago ↶
9
mod mcp ;
d82e4409 Andy McCall 1 month ago ↶
10
mod proposal ;
fc1a466a Andy McCall 1 month ago ↶
11
mod receipt ;
fce44ae9 Andy McCall 1 month ago ↶
12
mod sync ;
e59512f2 Andy McCall 18 days ago ↶
13
mod tlog ;
135212de Andy McCall 1 month ago ↶
14
pub mod ui ;
fce44ae9 Andy McCall 1 month ago ↶
15
mod workspace ;
16
17
use anyhow:: { Context, Result } ;
18
use clap:: { Parser, Subcommand} ;
19
use oxy_core:: repo:: Repo;
20
use std:: path:: PathBuf;
21
22
# [ derive ( Parser ) ]
75167672 Andy McCall 1 month ago
23
# [ command (
24
name = " oxy" ,
e293c90d Andy McCall 1 month ago ↶
25
version = env!(" OXY_VERSION_LONG" ) ,
75167672 Andy McCall 1 month ago
26
about = " Oxygen: breathing fresh air into version control"
27
)]
fce44ae9 Andy McCall 1 month ago ↶
28
struct Cli {
135212de Andy McCall 1 month ago ↶
29
30
#[arg(long, global = true)]
31
plain : bool ,
98a1620a Andy McCall 1 month ago ↶
32
33
#[arg(long, global = true, value_name = "OP")]
34
at_op : Option< String> ,
fce44ae9 Andy McCall 1 month ago ↶
35
#[command(subcommand)]
36
cmd : Cmd,
37
}
38
98a1620a Andy McCall 1 month ago ↶
39
40
static AT_OP : std:: sync:: OnceLock< Option< String> > = std:: sync:: OnceLock:: new( ) ;
41
fce44ae9 Andy McCall 1 month ago ↶
42
# [ derive ( Subcommand ) ]
43
enum Cmd {
44
e02bf0cd Andy McCall 1 month ago ↶
45
Init {
d42369ab Andy McCall 1 month ago
46
e02bf0cd Andy McCall 1 month ago ↶
47
path: Option< PathBuf> ,
48
49
# [ arg ( long ) ]
50
bare: bool ,
d069701a Andy McCall 1 month ago ↶
51
52
53
54
# [ arg ( long, value_name = " URL" ) ]
55
store: Option< String> ,
e02bf0cd Andy McCall 1 month ago ↶
56
} ,
fce44ae9 Andy McCall 1 month ago ↶
57
b3c5a59a Andy McCall 1 month ago ↶
58
Clone {
d42369ab Andy McCall 1 month ago
59
b3c5a59a Andy McCall 1 month ago ↶
60
url: String ,
d42369ab Andy McCall 1 month ago
61
b3c5a59a Andy McCall 1 month ago ↶
62
dest: Option< PathBuf> ,
63
64
# [ arg ( long ) ]
65
max_blob: Option< String> ,
7421309f Andy McCall 1 month ago ↶
66
67
# [ arg ( long = " sparse" ) ]
68
sparse: Vec< String> ,
2863456a Andy McCall 1 month ago ↶
69
70
# [ arg ( long ) ]
71
depth: Option< u32 > ,
14edbaaf Andy McCall 1 month ago ↶
72
73
# [ arg ( long ) ]
74
recursive: bool ,
b3c5a59a Andy McCall 1 month ago ↶
75
} ,
2863456a Andy McCall 1 month ago ↶
76
77
Deepen {
d42369ab Andy McCall 1 month ago
78
2863456a Andy McCall 1 month ago ↶
79
# [ arg ( default_value_t = 10 ) ]
80
depth: u32 ,
d42369ab Andy McCall 1 month ago
81
2863456a Andy McCall 1 month ago ↶
82
# [ arg ( long, default_value = " origin" ) ]
83
remote: String ,
84
} ,
7421309f Andy McCall 1 month ago ↶
85
d42369ab Andy McCall 1 month ago
86
Sparse {
87
88
paths: Vec< String> ,
89
} ,
fce44ae9 Andy McCall 1 month ago ↶
90
50a046e4 Andy McCall 1 month ago ↶
91
Status {
92
93
# [ arg ( long ) ]
94
json: bool ,
95
} ,
135212de Andy McCall 1 month ago ↶
96
97
Prompt {
694805cc Andy McCall 1 month ago ↶
98
135212de Andy McCall 1 month ago ↶
99
# [ arg ( long, default_value = oxy_core::repo::DEFAULT_PROMPT_FORMAT ) ]
100
format: String ,
694805cc Andy McCall 1 month ago ↶
101
102
# [ arg ( long ) ]
103
glyphs: bool ,
104
105
# [ arg ( long, value_parser = [" raw" , " bash" , " zsh" ] ) ]
106
color: Option< String> ,
135212de Andy McCall 1 month ago ↶
107
} ,
fce44ae9 Andy McCall 1 month ago ↶
108
109
Commit {
d42369ab Andy McCall 1 month ago
110
6a81dbab Andy McCall 1 month ago ↶
111
# [ arg ( short, long, required_unless_present = " file" , conflicts_with = " file" ) ]
112
message: Option< String> ,
113
114
# [ arg ( short = 'F', long, value_name = " FILE" ) ]
115
file: Option< PathBuf> ,
fce44ae9 Andy McCall 1 month ago ↶
116
117
# [ arg ( long = " depends-on" ) ]
118
depends_on: Vec< String> ,
957fee30 Andy McCall 1 month ago ↶
119
120
paths: Vec< String> ,
121
122
# [ arg ( short, long ) ]
123
interactive: bool ,
c6aa5bd9 Andy McCall 1 month ago ↶
124
125
# [ arg ( long, value_delimiter = ', ' ) ]
126
hunks: Vec< usize > ,
fce44ae9 Andy McCall 1 month ago ↶
127
} ,
728da0f9 Andy McCall 1 month ago ↶
128
129
Squash {
d42369ab Andy McCall 1 month ago
130
728da0f9 Andy McCall 1 month ago ↶
131
change: String ,
d42369ab Andy McCall 1 month ago
132
728da0f9 Andy McCall 1 month ago ↶
133
# [ arg ( long ) ]
134
into: String ,
135
} ,
136
137
Rebase {
d42369ab Andy McCall 1 month ago
138
728da0f9 Andy McCall 1 month ago ↶
139
change: String ,
140
141
# [ arg ( long, required = true, num_args = 1.. ) ]
142
onto: Vec< String> ,
e266b7d4 Andy McCall 1 month ago ↶
143
144
145
146
# [ arg ( long ) ]
147
into_working_copy: bool ,
728da0f9 Andy McCall 1 month ago ↶
148
} ,
957fee30 Andy McCall 1 month ago ↶
149
150
Blame {
d42369ab Andy McCall 1 month ago
151
957fee30 Andy McCall 1 month ago ↶
152
path: String ,
d42369ab Andy McCall 1 month ago
153
957fee30 Andy McCall 1 month ago ↶
154
# [ arg ( long ) ]
155
json: bool ,
156
} ,
157
158
Bisect {
159
# [ command ( subcommand ) ]
160
cmd: BisectCmd,
161
} ,
fce44ae9 Andy McCall 1 month ago ↶
162
94084087 Andy McCall 1 month ago ↶
163
Log {
bf3a6781 Andy McCall 1 month ago ↶
164
165
166
167
47ce8b8e Andy McCall 1 month ago ↶
168
# [ arg ( short = 'r', long, value_name = " REVSET" , conflicts_with_all = [" path" , " lines" ] ) ]
169
revset: Option< String> ,
94084087 Andy McCall 1 month ago ↶
170
171
# [ arg ( short = 'n', long ) ]
172
limit: Option< usize > ,
173
174
# [ arg ( short, long ) ]
175
verbose: bool ,
c6aa5bd9 Andy McCall 1 month ago ↶
176
177
# [ arg ( long ) ]
178
path: Option< String> ,
83d61e80 Andy McCall 1 month ago ↶
179
180
181
182
# [ arg ( short = 'L', value_name = " START,END:PATH" , conflicts_with = " path" ) ]
183
lines: Option< String> ,
d42369ab Andy McCall 1 month ago
184
c6aa5bd9 Andy McCall 1 month ago ↶
185
# [ arg ( long ) ]
186
json: bool ,
94084087 Andy McCall 1 month ago ↶
187
} ,
fce44ae9 Andy McCall 1 month ago ↶
188
c6aa5bd9 Andy McCall 1 month ago ↶
189
Diff {
190
191
change: Option< String> ,
d42369ab Andy McCall 1 month ago
192
c6aa5bd9 Andy McCall 1 month ago ↶
193
# [ arg ( long ) ]
194
json: bool ,
195
} ,
196
197
Cat {
d42369ab Andy McCall 1 month ago
198
c6aa5bd9 Andy McCall 1 month ago ↶
199
path: String ,
b0a0c9af Andy McCall 1 month ago ↶
200
201
202
c6aa5bd9 Andy McCall 1 month ago ↶
203
# [ arg ( short = 'r', long ) ]
204
change: Option< String> ,
205
} ,
206
207
Root {
d42369ab Andy McCall 1 month ago
208
c6aa5bd9 Andy McCall 1 month ago ↶
209
# [ arg ( long ) ]
210
json: bool ,
211
} ,
91334b7f Andy McCall 4 days ago ↶
212
213
Mcp {
214
215
dir: Option< PathBuf> ,
216
217
# [ arg ( long ) ]
218
allow_destructive: bool ,
219
} ,
c6aa5bd9 Andy McCall 1 month ago ↶
220
221
Version {
d42369ab Andy McCall 1 month ago
222
c6aa5bd9 Andy McCall 1 month ago ↶
223
# [ arg ( long ) ]
224
json: bool ,
225
} ,
226
227
Discard {
d42369ab Andy McCall 1 month ago
228
c6aa5bd9 Andy McCall 1 month ago ↶
229
paths: Vec< String> ,
230
231
# [ arg ( long, value_delimiter = ', ' ) ]
232
hunks: Vec< usize > ,
233
} ,
234
235
Hunks {
d42369ab Andy McCall 1 month ago
236
c6aa5bd9 Andy McCall 1 month ago ↶
237
# [ arg ( long ) ]
238
json: bool ,
239
} ,
6a81dbab Andy McCall 1 month ago ↶
240
241
242
614541c3 Andy McCall 1 month ago ↶
243
Describe {
d42369ab Andy McCall 1 month ago
244
614541c3 Andy McCall 1 month ago ↶
245
# [ arg ( short, long ) ]
6a81dbab Andy McCall 1 month ago ↶
246
message: Option< String> ,
d42369ab Andy McCall 1 month ago
247
614541c3 Andy McCall 1 month ago ↶
248
change: Option< String> ,
6a81dbab Andy McCall 1 month ago ↶
249
250
# [ arg ( long, conflicts_with = " message" ) ]
251
json: bool ,
614541c3 Andy McCall 1 month ago ↶
252
} ,
23b217d7 Andy McCall 1 month ago ↶
253
614541c3 Andy McCall 1 month ago ↶
254
Amend {
d42369ab Andy McCall 1 month ago
255
614541c3 Andy McCall 1 month ago ↶
256
# [ arg ( short, long ) ]
257
message: Option< String> ,
23b217d7 Andy McCall 1 month ago ↶
258
69953b50 Andy McCall 17 days ago ↶
259
# [ arg ( long, conflicts_with = " paths" ) ]
23b217d7 Andy McCall 1 month ago ↶
260
into: Option< String> ,
69953b50 Andy McCall 17 days ago ↶
261
262
paths: Vec< String> ,
614541c3 Andy McCall 1 month ago ↶
263
} ,
23b217d7 Andy McCall 1 month ago ↶
264
d42369ab Andy McCall 1 month ago
265
Split {
266
267
change: String ,
268
269
paths: Vec< String> ,
270
} ,
2c9ddac3 Andy McCall 1 month ago ↶
271
d42369ab Andy McCall 1 month ago
272
Abandon {
2c9ddac3 Andy McCall 1 month ago ↶
273
274
# [ arg ( required_unless_present = " revset" ) ]
275
change: Option< String> ,
276
277
# [ arg ( short = 'r', long, value_name = " REVSET" , conflicts_with = " change" ) ]
278
revset: Option< String> ,
279
280
# [ arg ( long, short = 'y' ) ]
281
yes: bool ,
d42369ab Andy McCall 1 month ago
282
} ,
2c9ddac3 Andy McCall 1 month ago ↶
283
c6aa5bd9 Andy McCall 1 month ago ↶
284
Show {
d42369ab Andy McCall 1 month ago
285
2c9ddac3 Andy McCall 1 month ago ↶
286
# [ arg ( required_unless_present = " revset" ) ]
287
change: Option< String> ,
288
289
# [ arg ( short = 'r', long, value_name = " REVSET" , conflicts_with = " change" ) ]
290
revset: Option< String> ,
0299076f Andy McCall 17 days ago ↶
291
292
# [ arg ( long ) ]
293
stat: bool ,
d42369ab Andy McCall 1 month ago
294
c6aa5bd9 Andy McCall 1 month ago ↶
295
# [ arg ( long ) ]
296
json: bool ,
297
} ,
fce44ae9 Andy McCall 1 month ago ↶
298
299
Checkout {
d42369ab Andy McCall 1 month ago
300
fce44ae9 Andy McCall 1 month ago ↶
301
changes: Vec< String> ,
302
303
# [ arg ( long ) ]
304
discard: bool ,
1c2bd9ab Andy McCall 1 month ago ↶
305
306
307
# [ arg ( long, conflicts_with = " discard" ) ]
308
carry: bool ,
fce44ae9 Andy McCall 1 month ago ↶
309
} ,
157d02e9 Andy McCall 10 days ago ↶
310
311
312
c6aa5bd9 Andy McCall 1 month ago ↶
313
Resolve {
9bd98cfb Andy McCall 9 days ago ↶
314
315
157d02e9 Andy McCall 10 days ago ↶
316
paths: Vec< String> ,
9bd98cfb Andy McCall 9 days ago ↶
317
318
319
# [ arg ( long ) ]
320
both: bool ,
321
322
# [ arg ( long, requires = " both" ) ]
323
reverse: bool ,
d42369ab Andy McCall 1 month ago
324
c6aa5bd9 Andy McCall 1 month ago ↶
325
# [ arg ( long ) ]
326
json: bool ,
327
} ,
fce44ae9 Andy McCall 1 month ago ↶
328
329
Undo,
252e8cb2 Andy McCall 1 month ago ↶
330
331
Checkpoint,
d42369ab Andy McCall 1 month ago
332
333
Completions {
334
335
shell: clap_complete:: Shell,
336
} ,
337
338
Man {
339
340
# [ arg ( long ) ]
341
dir: Option< PathBuf> ,
342
} ,
3e5772cc Andy McCall 1 month ago ↶
343
344
Doctor {
345
346
# [ arg ( long ) ]
347
offline: bool ,
d42369ab Andy McCall 1 month ago
348
3e5772cc Andy McCall 1 month ago ↶
349
# [ arg ( long ) ]
350
json: bool ,
351
} ,
387335ff Andy McCall 1 month ago ↶
352
353
Fsck {
d42369ab Andy McCall 1 month ago
354
387335ff Andy McCall 1 month ago ↶
355
# [ arg ( long ) ]
356
json: bool ,
357
} ,
da652d63 Andy McCall 1 month ago ↶
358
ba160f60 Andy McCall 1 month ago ↶
359
Gc {
360
361
# [ arg ( long ) ]
362
now: bool ,
b689779e Andy McCall 24 days ago ↶
363
364
# [ arg ( long ) ]
365
expire_snapshots: bool ,
d8d93678 Andy McCall 1 month ago ↶
366
367
# [ arg ( long, value_name = " NAME" ) ]
368
remote: Option< String> ,
ba160f60 Andy McCall 1 month ago ↶
369
} ,
fce44ae9 Andy McCall 1 month ago ↶
370
371
# [ command ( name = " op" ) ]
372
Op {
373
# [ command ( subcommand ) ]
374
cmd: OpCmd,
375
} ,
cdb5beba Andy McCall 1 month ago ↶
376
d42369ab Andy McCall 1 month ago
377
Lock {
378
379
path: String ,
380
} ,
cdb5beba Andy McCall 1 month ago ↶
381
d42369ab Andy McCall 1 month ago
382
Unlock {
383
384
path: String ,
385
} ,
4e88e774 Andy McCall 1 month ago ↶
386
387
Workspace {
388
# [ command ( subcommand ) ]
389
cmd: WorkspaceCmd,
390
} ,
7b9809e6 Andy McCall 1 month ago ↶
391
392
Bookmark {
393
# [ command ( subcommand ) ]
394
cmd: BookmarkCmd,
395
} ,
733ea16a Andy McCall 17 days ago ↶
396
397
d42369ab Andy McCall 1 month ago
398
Merge {
399
400
bookmark: String ,
401
} ,
ff1f62fe Andy McCall 1 month ago ↶
402
403
Auth {
404
# [ command ( subcommand ) ]
405
cmd: AuthCmd,
406
} ,
4dee277c Andy McCall 1 month ago ↶
407
408
Submodule {
409
# [ command ( subcommand ) ]
410
cmd: SubmoduleCmd,
411
} ,
51d4862a Andy McCall 18 days ago ↶
412
413
414
Witness {
415
# [ command ( subcommand ) ]
416
cmd: WitnessCmd,
417
} ,
e59512f2 Andy McCall 18 days ago ↶
418
419
420
Tlog {
421
# [ command ( subcommand ) ]
422
cmd: TlogCmd,
423
} ,
642da263 Andy McCall 7 days ago ↶
424
425
Artifact {
426
# [ command ( subcommand ) ]
427
cmd: ArtifactCmd,
428
} ,
fc1a466a Andy McCall 1 month ago ↶
429
430
Receipt {
431
# [ command ( subcommand ) ]
432
cmd: ReceiptCmd,
433
} ,
132b884b Andy McCall 1 month ago ↶
434
435
Tag {
436
# [ command ( subcommand ) ]
437
cmd: TagCmd,
438
} ,
fce44ae9 Andy McCall 1 month ago ↶
439
440
Remote {
441
# [ command ( subcommand ) ]
442
cmd: RemoteCmd,
443
} ,
444
c6aa5bd9 Andy McCall 1 month ago ↶
445
Fetch {
d42369ab Andy McCall 1 month ago
446
c6aa5bd9 Andy McCall 1 month ago ↶
447
remote: Option< String> ,
d42369ab Andy McCall 1 month ago
448
c6aa5bd9 Andy McCall 1 month ago ↶
449
# [ arg ( long ) ]
450
json: bool ,
451
} ,
fce44ae9 Andy McCall 1 month ago ↶
452
c6aa5bd9 Andy McCall 1 month ago ↶
453
Pull {
d42369ab Andy McCall 1 month ago
454
c6aa5bd9 Andy McCall 1 month ago ↶
455
remote: Option< String> ,
d42369ab Andy McCall 1 month ago
456
c6aa5bd9 Andy McCall 1 month ago ↶
457
# [ arg ( long ) ]
458
json: bool ,
459
} ,
fce44ae9 Andy McCall 1 month ago ↶
460
461
Push {
d42369ab Andy McCall 1 month ago
462
fce44ae9 Andy McCall 1 month ago ↶
463
remote: Option< String> ,
464
465
# [ arg ( long ) ]
466
force: bool ,
7b9809e6 Andy McCall 1 month ago ↶
467
468
# [ arg ( short = 'b', long ) ]
469
bookmark: Option< String> ,
f8c69576 Andy McCall 1 month ago ↶
470
b63fc7a7 Andy McCall 11 days ago ↶
471
472
f8c69576 Andy McCall 1 month ago ↶
473
# [ arg ( long, value_name = " NAME" , conflicts_with_all = [" bookmark" , " force" ] ) ]
474
delete: Option< String> ,
d42369ab Andy McCall 1 month ago
475
c6aa5bd9 Andy McCall 1 month ago ↶
476
# [ arg ( long ) ]
477
json: bool ,
fce44ae9 Andy McCall 1 month ago ↶
478
} ,
2b5ee371 Andy McCall 1 month ago ↶
479
fce44ae9 Andy McCall 1 month ago ↶
480
Serve {
481
482
# [ arg ( long, default_value = " ." ) ]
483
root: PathBuf,
d42369ab Andy McCall 1 month ago
484
fce44ae9 Andy McCall 1 month ago ↶
485
# [ arg ( long, default_value = " 127.0.0.1:8890" ) ]
486
bind: String ,
487
488
# [ arg ( long = " token" ) ]
489
tokens: Vec< String> ,
2b5ee371 Andy McCall 1 month ago ↶
490
491
# [ arg ( long, requires = " tls_key" ) ]
492
tls_cert: Option< PathBuf> ,
493
494
# [ arg ( long, requires = " tls_cert" ) ]
495
tls_key: Option< PathBuf> ,
fce44ae9 Andy McCall 1 month ago ↶
496
} ,
497
498
Identity {
499
# [ command ( subcommand ) ]
500
cmd: IdentityCmd,
501
} ,
05e71ed6 Andy McCall 1 month ago ↶
502
503
Seal {
d42369ab Andy McCall 1 month ago
504
05e71ed6 Andy McCall 1 month ago ↶
505
changes: Vec< String> ,
d82e4409 Andy McCall 1 month ago ↶
506
507
# [ arg ( long, conflicts_with = " changes" ) ]
508
proposal: Option< String> ,
b582948f Andy McCall 19 days ago ↶
509
510
# [ arg ( long, conflicts_with_all = [" changes" , " proposal" ], requires = " job" ) ]
511
flow: Option< String> ,
512
513
# [ arg ( long, requires = " flow" ) ]
514
job: Option< String> ,
515
516
# [ arg ( long, requires = " flow" ) ]
517
reject: bool ,
d42369ab Andy McCall 1 month ago
518
05e71ed6 Andy McCall 1 month ago ↶
519
# [ arg ( long ) ]
520
json: bool ,
521
} ,
d82e4409 Andy McCall 1 month ago ↶
522
523
Proposal {
524
# [ command ( subcommand ) ]
525
cmd: ProposalCmd,
526
} ,
fce44ae9 Andy McCall 1 month ago ↶
527
c6aa5bd9 Andy McCall 1 month ago ↶
528
Verify {
d42369ab Andy McCall 1 month ago
529
c6aa5bd9 Andy McCall 1 month ago ↶
530
change: Option< String> ,
2c9ddac3 Andy McCall 1 month ago ↶
531
532
# [ arg ( short = 'r', long, value_name = " REVSET" , conflicts_with = " change" ) ]
533
revset: Option< String> ,
d42369ab Andy McCall 1 month ago
534
c6aa5bd9 Andy McCall 1 month ago ↶
535
# [ arg ( long ) ]
536
json: bool ,
537
} ,
79ab8528 Andy McCall 1 month ago ↶
538
539
Git {
540
# [ command ( subcommand ) ]
541
cmd: GitCmd,
542
} ,
83e0677b Andy McCall 1 month ago ↶
543
544
Policy {
545
# [ command ( subcommand ) ]
546
cmd: PolicyCmd,
547
} ,
c397a8c3 Andy McCall 3 days ago ↶
548
fce44ae9 Andy McCall 1 month ago ↶
549
Config {
d42369ab Andy McCall 1 month ago
550
fce44ae9 Andy McCall 1 month ago ↶
551
key: String ,
8e9c64d1 Andy McCall 20 days ago ↶
552
614f55e1 Andy McCall 1 month ago ↶
553
# [ arg ( required_unless_present = " unset" ) ]
554
value: Option< String> ,
fce44ae9 Andy McCall 1 month ago ↶
555
556
# [ arg ( long ) ]
557
user: bool ,
614f55e1 Andy McCall 1 month ago ↶
558
559
# [ arg ( long ) ]
560
unset: bool ,
fce44ae9 Andy McCall 1 month ago ↶
561
} ,
562
}
563
564
# [ derive ( Subcommand ) ]
565
enum OpCmd {
98a1620a Andy McCall 1 month ago ↶
566
c6aa5bd9 Andy McCall 1 month ago ↶
567
Log {
98a1620a Andy McCall 1 month ago ↶
568
569
# [ arg ( short = 'n', long ) ]
570
limit: Option< usize > ,
d42369ab Andy McCall 1 month ago
571
c6aa5bd9 Andy McCall 1 month ago ↶
572
# [ arg ( long ) ]
573
json: bool ,
98a1620a Andy McCall 1 month ago ↶
574
} ,
575
576
Restore {
577
578
op: String ,
579
580
# [ arg ( long ) ]
581
discard: bool ,
582
} ,
583
584
Revert {
585
586
op: String ,
c6aa5bd9 Andy McCall 1 month ago ↶
587
} ,
fce44ae9 Andy McCall 1 month ago ↶
588
}
589
590
# [ derive ( Subcommand ) ]
4e88e774 Andy McCall 1 month ago ↶
591
enum WorkspaceCmd {
592
d42369ab Andy McCall 1 month ago
593
Add {
594
595
path: PathBuf,
596
597
changes: Vec< String> ,
598
} ,
599
1196b29b Andy McCall 1 month ago ↶
600
List {
d42369ab Andy McCall 1 month ago
601
1196b29b Andy McCall 1 month ago ↶
602
# [ arg ( long ) ]
603
json: bool ,
604
} ,
4e88e774 Andy McCall 1 month ago ↶
605
d42369ab Andy McCall 1 month ago
606
Forget {
607
608
workspace: String ,
609
} ,
4e88e774 Andy McCall 1 month ago ↶
610
}
611
612
# [ derive ( Subcommand ) ]
957fee30 Andy McCall 1 month ago ↶
613
enum BisectCmd {
614
615
Start,
616
d42369ab Andy McCall 1 month ago
617
Good {
618
619
changes: Vec< String> ,
620
} ,
957fee30 Andy McCall 1 month ago ↶
621
d42369ab Andy McCall 1 month ago
622
Bad {
623
624
changes: Vec< String> ,
625
} ,
957fee30 Andy McCall 1 month ago ↶
626
627
Skip,
628
629
Run {
d42369ab Andy McCall 1 month ago
630
957fee30 Andy McCall 1 month ago ↶
631
# [ arg ( required = true, trailing_var_arg = true ) ]
632
command: Vec< String> ,
633
} ,
634
c6aa5bd9 Andy McCall 1 month ago ↶
635
Status {
d42369ab Andy McCall 1 month ago
636
c6aa5bd9 Andy McCall 1 month ago ↶
637
# [ arg ( long ) ]
638
json: bool ,
639
} ,
957fee30 Andy McCall 1 month ago ↶
640
641
Reset,
642
}
643
644
# [ derive ( Subcommand ) ]
7b9809e6 Andy McCall 1 month ago ↶
645
enum BookmarkCmd {
646
d42369ab Andy McCall 1 month ago
647
Create {
648
649
name: String ,
4fe7d604 Andy McCall 1 month ago ↶
650
651
652
653
d42369ab Andy McCall 1 month ago
654
changes: Vec< String> ,
4fe7d604 Andy McCall 1 month ago ↶
655
656
657
# [ arg ( long, conflicts_with = " only" ) ]
658
upto: bool ,
b9bf7eec Andy McCall 22 days ago ↶
659
660
661
662
4fe7d604 Andy McCall 1 month ago ↶
663
# [ arg ( long ) ]
664
only: bool ,
d42369ab Andy McCall 1 month ago
665
} ,
7b9809e6 Andy McCall 1 month ago ↶
666
d42369ab Andy McCall 1 month ago
667
Set {
668
669
name: String ,
06d16dc2 Andy McCall 1 month ago ↶
670
671
672
d42369ab Andy McCall 1 month ago
673
changes: Vec< String> ,
06d16dc2 Andy McCall 1 month ago ↶
674
675
676
# [ arg ( long, conflicts_with = " only" ) ]
677
upto: bool ,
b9bf7eec Andy McCall 22 days ago ↶
678
679
680
681
06d16dc2 Andy McCall 1 month ago ↶
682
# [ arg ( long ) ]
683
only: bool ,
d42369ab Andy McCall 1 month ago
684
} ,
7b9809e6 Andy McCall 1 month ago ↶
685
d42369ab Andy McCall 1 month ago
686
Delete {
687
688
name: String ,
689
} ,
7b9809e6 Andy McCall 1 month ago ↶
690
c6aa5bd9 Andy McCall 1 month ago ↶
691
List {
14edbaaf Andy McCall 1 month ago ↶
692
693
# [ arg ( long, short ) ]
694
all: bool ,
bf3a6781 Andy McCall 1 month ago ↶
695
696
# [ arg ( long, short ) ]
697
verbose: bool ,
d42369ab Andy McCall 1 month ago
698
c6aa5bd9 Andy McCall 1 month ago ↶
699
# [ arg ( long ) ]
700
json: bool ,
701
} ,
bf3a6781 Andy McCall 1 month ago ↶
702
703
704
705
Show {
706
707
name: Option< String> ,
708
709
# [ arg ( long ) ]
710
json: bool ,
711
} ,
61e3bce7 Andy McCall 1 month ago ↶
712
7b9809e6 Andy McCall 1 month ago ↶
713
Switch {
14edbaaf Andy McCall 1 month ago ↶
714
7b9809e6 Andy McCall 1 month ago ↶
715
name: String ,
716
717
# [ arg ( long ) ]
718
discard: bool ,
61e3bce7 Andy McCall 1 month ago ↶
719
720
721
# [ arg ( long, conflicts_with = " discard" ) ]
722
carry: bool ,
51d4862a Andy McCall 18 days ago ↶
723
} ,
724
}
725
726
# [ derive ( Subcommand ) ]
727
enum WitnessCmd {
728
729
730
Serve {
731
732
# [ arg ( long ) ]
733
name: String ,
734
735
736
# [ arg ( long = " log" , required = true ) ]
737
logs: Vec< String> ,
738
739
# [ arg ( long, default_value = " witness-state" ) ]
740
state: PathBuf,
741
742
# [ arg ( long, default_value = " 127.0.0.1:8891" ) ]
743
bind: String ,
744
745
# [ arg ( long, requires = " tls_key" ) ]
746
tls_cert: Option< PathBuf> ,
747
748
# [ arg ( long, requires = " tls_cert" ) ]
749
tls_key: Option< PathBuf> ,
e59512f2 Andy McCall 18 days ago ↶
750
} ,
751
}
752
753
# [ derive ( Subcommand ) ]
754
enum TlogCmd {
755
756
757
758
Verify {
759
760
hub: Option< String> ,
761
762
# [ arg ( long, conflicts_with = " all" ) ]
763
key: Option< String> ,
764
765
# [ arg ( long ) ]
766
all: bool ,
767
768
# [ arg ( long ) ]
769
json: bool ,
ff1f62fe Andy McCall 1 month ago ↶
770
} ,
771
}
772
773
# [ derive ( Subcommand ) ]
774
enum AuthCmd {
775
776
777
Login {
778
779
hub: Option< String> ,
780
781
# [ arg ( long ) ]
782
with_token: bool ,
783
784
# [ arg ( long ) ]
785
ca: Option< PathBuf> ,
7b9809e6 Andy McCall 1 month ago ↶
786
} ,
ff1f62fe Andy McCall 1 month ago ↶
787
788
Status,
789
790
Logout {
791
792
hub: Option< String> ,
793
} ,
c895bc52 Andy McCall 18 days ago ↶
794
795
796
797
798
799
Grant {
800
801
hub: Option< String> ,
802
} ,
7b9809e6 Andy McCall 1 month ago ↶
803
}
804
805
# [ derive ( Subcommand ) ]
4dee277c Andy McCall 1 month ago ↶
806
enum SubmoduleCmd {
807
808
Add {
d42369ab Andy McCall 1 month ago
809
4dee277c Andy McCall 1 month ago ↶
810
url: String ,
d42369ab Andy McCall 1 month ago
811
4dee277c Andy McCall 1 month ago ↶
812
path: String ,
813
814
# [ arg ( long ) ]
815
bookmark: Option< String> ,
816
} ,
817
818
Update {
819
820
# [ arg ( long ) ]
821
init: bool ,
d42369ab Andy McCall 1 month ago
822
4dee277c Andy McCall 1 month ago ↶
823
paths: Vec< String> ,
824
} ,
825
c6aa5bd9 Andy McCall 1 month ago ↶
826
Status {
d42369ab Andy McCall 1 month ago
827
c6aa5bd9 Andy McCall 1 month ago ↶
828
# [ arg ( long ) ]
829
json: bool ,
830
} ,
4dee277c Andy McCall 1 month ago ↶
831
d42369ab Andy McCall 1 month ago
832
Remove {
833
834
path: String ,
284fe47d Andy McCall 1 day ago ↶
835
836
# [ arg ( long ) ]
837
delete: bool ,
838
839
# [ arg ( long, requires = " delete" ) ]
840
force: bool ,
d42369ab Andy McCall 1 month ago
841
} ,
4dee277c Andy McCall 1 month ago ↶
842
}
843
844
# [ derive ( Subcommand ) ]
642da263 Andy McCall 7 days ago ↶
845
enum ArtifactCmd {
846
847
Pack {
848
849
dir: std:: path:: PathBuf,
850
851
# [ arg ( long, default_value = " archive" ) ]
852
kind: String ,
853
854
# [ arg ( long ) ]
855
arch: Option< String> ,
856
857
# [ arg ( long ) ]
858
os: Option< String> ,
859
860
# [ arg ( long = " entrypoint" , value_name = " WORD" ) ]
861
entrypoint: Vec< String> ,
862
863
# [ arg ( long = " env" , value_name = " KEY=VALUE" ) ]
864
env: Vec< String> ,
865
866
# [ arg ( long = " label" , value_name = " KEY=VALUE" ) ]
867
labels: Vec< String> ,
868
869
# [ arg ( long ) ]
870
json: bool ,
871
} ,
872
873
List {
874
875
# [ arg ( long ) ]
876
json: bool ,
877
} ,
878
879
Show {
880
881
name: String ,
882
883
# [ arg ( long ) ]
884
json: bool ,
885
} ,
886
887
Unpack {
888
889
name: String ,
890
891
dest: std:: path:: PathBuf,
892
} ,
893
894
Verify {
895
896
name: String ,
897
} ,
898
}
899
900
# [ derive ( Subcommand ) ]
fc1a466a Andy McCall 1 month ago ↶
901
enum ReceiptCmd {
902
903
List {
904
905
rev: Option< String> ,
906
907
# [ arg ( long ) ]
908
json: bool ,
909
} ,
910
911
Show {
912
913
receipt: String ,
914
915
# [ arg ( long ) ]
916
rev: Option< String> ,
917
918
# [ arg ( long ) ]
919
json: bool ,
920
} ,
921
922
Export {
923
924
receipt: String ,
925
926
file: String ,
927
928
# [ arg ( long ) ]
929
rev: Option< String> ,
a39754d0 Andy McCall 18 days ago ↶
930
931
932
933
934
# [ arg ( long, default_value = " oxygen" , value_parser = [" oxygen" , " slsa" ] ) ]
935
format: String ,
fc1a466a Andy McCall 1 month ago ↶
936
} ,
937
938
Verify {
939
940
file: String ,
941
942
# [ arg ( long ) ]
943
json: bool ,
944
} ,
945
946
Import {
947
948
file: String ,
949
} ,
950
}
951
952
# [ derive ( Subcommand ) ]
132b884b Andy McCall 1 month ago ↶
953
enum TagCmd {
954
955
Create {
d42369ab Andy McCall 1 month ago
956
132b884b Andy McCall 1 month ago ↶
957
name: String ,
d42369ab Andy McCall 1 month ago
958
132b884b Andy McCall 1 month ago ↶
959
changes: Vec< String> ,
d42369ab Andy McCall 1 month ago
960
132b884b Andy McCall 1 month ago ↶
961
# [ arg ( short, long, default_value = " " ) ]
962
message: String ,
963
} ,
b63fc7a7 Andy McCall 11 days ago ↶
964
965
966
967
Delete {
968
969
name: String ,
970
971
# [ arg ( short, long, default_value = " " ) ]
972
reason: String ,
973
} ,
d42369ab Andy McCall 1 month ago
974
1196b29b Andy McCall 1 month ago ↶
975
List {
d42369ab Andy McCall 1 month ago
976
1196b29b Andy McCall 1 month ago ↶
977
# [ arg ( long ) ]
978
json: bool ,
979
} ,
132b884b Andy McCall 1 month ago ↶
980
}
981
982
# [ derive ( Subcommand ) ]
fce44ae9 Andy McCall 1 month ago ↶
983
enum RemoteCmd {
d42369ab Andy McCall 1 month ago
984
75167672 Andy McCall 1 month ago
985
Add {
d42369ab Andy McCall 1 month ago
986
75167672 Andy McCall 1 month ago
987
name: String ,
9aa39904 Andy McCall 1 month ago ↶
988
75167672 Andy McCall 1 month ago
989
url: String ,
9aa39904 Andy McCall 1 month ago ↶
990
991
# [ arg ( long ) ]
992
profile: Option< String> ,
993
994
# [ arg ( long ) ]
995
region: Option< String> ,
996
997
# [ arg ( long ) ]
998
endpoint: Option< String> ,
999
1000
# [ arg ( long ) ]
1001
credentials: Option< String> ,
75167672 Andy McCall 1 month ago
1002
} ,
9aa39904 Andy McCall 1 month ago ↶
1003
1004
Check {
1005
1006
name: String ,
1007
} ,
d42369ab Andy McCall 1 month ago
1008
75167672 Andy McCall 1 month ago
1009
Remove {
d42369ab Andy McCall 1 month ago
1010
75167672 Andy McCall 1 month ago
1011
name: String ,
1012
} ,
d42369ab Andy McCall 1 month ago
1013
c6aa5bd9 Andy McCall 1 month ago ↶
1014
List {
d42369ab Andy McCall 1 month ago
1015
c6aa5bd9 Andy McCall 1 month ago ↶
1016
# [ arg ( long ) ]
1017
json: bool ,
1018
} ,
fce44ae9 Andy McCall 1 month ago ↶
1019
}
1020
1021
# [ derive ( Subcommand ) ]
d82e4409 Andy McCall 1 month ago ↶
1022
enum ProposalCmd {
1023
1024
Show {
d42369ab Andy McCall 1 month ago
1025
d82e4409 Andy McCall 1 month ago ↶
1026
url: String ,
d42369ab Andy McCall 1 month ago
1027
d82e4409 Andy McCall 1 month ago ↶
1028
# [ arg ( long ) ]
1029
json: bool ,
1030
} ,
1031
1032
Land {
d42369ab Andy McCall 1 month ago
1033
d82e4409 Andy McCall 1 month ago ↶
1034
url: String ,
1035
1036
# [ arg ( long ) ]
1037
force: bool ,
1038
} ,
1039
}
1040
1041
# [ derive ( Subcommand ) ]
fce44ae9 Andy McCall 1 month ago ↶
1042
enum IdentityCmd {
1043
1044
Create {
d42369ab Andy McCall 1 month ago
1045
fce44ae9 Andy McCall 1 month ago ↶
1046
# [ arg ( long ) ]
1047
name: Option< String> ,
d42369ab Andy McCall 1 month ago
1048
fce44ae9 Andy McCall 1 month ago ↶
1049
# [ arg ( long ) ]
1050
email: Option< String> ,
1051
1052
# [ arg ( long ) ]
1053
local: bool ,
28fc23d7 Andy McCall 1 month ago ↶
1054
1055
# [ arg ( long ) ]
1056
expires: Option< u64 > ,
fce44ae9 Andy McCall 1 month ago ↶
1057
} ,
1058
1059
Show,
83e0677b Andy McCall 1 month ago ↶
1060
d42369ab Andy McCall 1 month ago
1061
Export {
a39754d0 Andy McCall 18 days ago ↶
1062
d42369ab Andy McCall 1 month ago
1063
path: Option< PathBuf> ,
a39754d0 Andy McCall 18 days ago ↶
1064
1065
1066
# [ arg ( long ) ]
1067
pem: bool ,
d42369ab Andy McCall 1 month ago
1068
} ,
7aa2dc93 Andy McCall 1 month ago ↶
1069
1070
SignChallenge {
d42369ab Andy McCall 1 month ago
1071
7aa2dc93 Andy McCall 1 month ago ↶
1072
challenge: String ,
d42369ab Andy McCall 1 month ago
1073
7aa2dc93 Andy McCall 1 month ago ↶
1074
# [ arg ( long ) ]
1075
json: bool ,
1076
} ,
28fc23d7 Andy McCall 1 month ago ↶
1077
1078
Rotate,
1079
1080
Renew {
d42369ab Andy McCall 1 month ago
1081
28fc23d7 Andy McCall 1 month ago ↶
1082
# [ arg ( long ) ]
1083
expires: u64 ,
1084
} ,
1085
1086
Revoke {
1087
1088
key: Option< String> ,
d42369ab Andy McCall 1 month ago
1089
28fc23d7 Andy McCall 1 month ago ↶
1090
# [ arg ( long, default_value = " " ) ]
1091
reason: String ,
1092
} ,
1093
1094
Delegate {
1095
# [ command ( subcommand ) ]
1096
cmd: DelegateCmd,
1097
} ,
1098
}
1099
1100
# [ derive ( Subcommand ) ]
1101
enum DelegateCmd {
1102
d42369ab Andy McCall 1 month ago
1103
Add {
614f55e1 Andy McCall 1 month ago ↶
1104
1105
# [ arg ( required = true ) ]
1106
identity_file: Vec< PathBuf> ,
7ba155f2 Andy McCall 1 month ago ↶
1107
1108
1109
# [ arg ( long, default_value = " changes" ) ]
1110
scope: String ,
1111
1112
# [ arg ( long ) ]
1113
expires: Option< String> ,
d42369ab Andy McCall 1 month ago
1114
} ,
28fc23d7 Andy McCall 1 month ago ↶
1115
d42369ab Andy McCall 1 month ago
1116
Remove {
1117
1118
key: String ,
1119
} ,
28fc23d7 Andy McCall 1 month ago ↶
1120
1121
List,
fce44ae9 Andy McCall 1 month ago ↶
1122
}
1123
83e0677b Andy McCall 1 month ago ↶
1124
# [ derive ( Subcommand ) ]
79ab8528 Andy McCall 1 month ago ↶
1125
enum GitCmd {
c397a8c3 Andy McCall 3 days ago ↶
1126
1127
Colocate {
1128
1129
# [ arg ( long ) ]
1130
off: bool ,
1131
} ,
79ab8528 Andy McCall 1 month ago ↶
1132
30ea9c1e Andy McCall 1 month ago ↶
1133
Export {
d42369ab Andy McCall 1 month ago
1134
30ea9c1e Andy McCall 1 month ago ↶
1135
git_dir: PathBuf,
1136
1137
# [ arg ( long ) ]
1138
branch: Option< String> ,
1139
} ,
1140
1141
Fetch {
d42369ab Andy McCall 1 month ago
1142
30ea9c1e Andy McCall 1 month ago ↶
1143
url: String ,
d42369ab Andy McCall 1 month ago
1144
30ea9c1e Andy McCall 1 month ago ↶
1145
# [ arg ( long, default_value = " main" ) ]
1146
branch: String ,
d6e0d5b8 Andy McCall 25 days ago ↶
1147
1148
# [ arg ( long ) ]
1149
claim: bool ,
30ea9c1e Andy McCall 1 month ago ↶
1150
} ,
1151
1152
Push {
d42369ab Andy McCall 1 month ago
1153
30ea9c1e Andy McCall 1 month ago ↶
1154
url: String ,
d42369ab Andy McCall 1 month ago
1155
30ea9c1e Andy McCall 1 month ago ↶
1156
# [ arg ( long, default_value = " main" ) ]
1157
branch: String ,
1158
} ,
54e2e630 Andy McCall 29 days ago ↶
1159
1160
Recover,
62794ecc Andy McCall 1 month ago ↶
1161
1162
Verify {
1163
1164
git_dir: PathBuf,
1165
1166
# [ arg ( long, default_value = " main" ) ]
1167
branch: String ,
7eac74ab Andy McCall 1 month ago ↶
1168
1169
# [ arg ( long, value_name = " N" ) ]
1170
last: Option< usize > ,
8b7986dd Andy McCall 26 days ago ↶
1171
1172
# [ arg ( long, value_name = " N" , default_value_t = 50 ) ]
1173
max_differences: usize ,
62794ecc Andy McCall 1 month ago ↶
1174
} ,
c3069537 Andy McCall 1 month ago ↶
1175
1176
Import {
d42369ab Andy McCall 1 month ago
1177
c3069537 Andy McCall 1 month ago ↶
1178
git_dir: PathBuf,
d42369ab Andy McCall 1 month ago
1179
c3069537 Andy McCall 1 month ago ↶
1180
dest: PathBuf,
d42369ab Andy McCall 1 month ago
1181
c3069537 Andy McCall 1 month ago ↶
1182
# [ arg ( long, default_value = " main" ) ]
1183
branch: String ,
d6e0d5b8 Andy McCall 25 days ago ↶
1184
1185
# [ arg ( long ) ]
1186
claim: bool ,
c3069537 Andy McCall 1 month ago ↶
1187
} ,
79ab8528 Andy McCall 1 month ago ↶
1188
}
1189
1190
# [ derive ( Subcommand ) ]
83e0677b Andy McCall 1 month ago ↶
1191
enum PolicyCmd {
1192
1193
Init,
1194
c6aa5bd9 Andy McCall 1 month ago ↶
1195
Show {
d42369ab Andy McCall 1 month ago
1196
c6aa5bd9 Andy McCall 1 month ago ↶
1197
# [ arg ( long ) ]
1198
json: bool ,
1199
} ,
83e0677b Andy McCall 1 month ago ↶
1200
1201
Grant {
d42369ab Andy McCall 1 month ago
1202
83e0677b Andy McCall 1 month ago ↶
1203
identity_file: PathBuf,
1204
1205
# [ arg ( long ) ]
1206
pattern: Option< String> ,
28fc23d7 Andy McCall 1 month ago ↶
1207
1208
# [ arg ( long ) ]
1209
out: Option< PathBuf> ,
83e0677b Andy McCall 1 month ago ↶
1210
} ,
3a6effc7 Andy McCall 18 days ago ↶
1211
1212
GrantSubject {
1213
1214
subject: String ,
1215
1216
# [ arg ( long ) ]
1217
issuer: PathBuf,
1218
1219
# [ arg ( long, default_value = " changes,refs" ) ]
1220
scope: String ,
1221
1222
# [ arg ( long ) ]
1223
pattern: Option< String> ,
1224
1225
# [ arg ( long ) ]
1226
out: Option< PathBuf> ,
1227
} ,
83e0677b Andy McCall 1 month ago ↶
1228
28fc23d7 Andy McCall 1 month ago ↶
1229
Revoke {
d42369ab Andy McCall 1 month ago
1230
28fc23d7 Andy McCall 1 month ago ↶
1231
key: String ,
1232
1233
# [ arg ( long ) ]
1234
out: Option< PathBuf> ,
1235
} ,
1236
1237
Root {
1238
# [ command ( subcommand ) ]
1239
cmd: RootCmd,
1240
} ,
1241
1242
Sign {
d42369ab Andy McCall 1 month ago
1243
28fc23d7 Andy McCall 1 month ago ↶
1244
proposal: PathBuf,
1245
1246
# [ arg ( long ) ]
1247
out: Option< PathBuf> ,
1248
} ,
1249
}
1250
1251
# [ derive ( Subcommand ) ]
1252
enum RootCmd {
1253
1254
Add {
d42369ab Andy McCall 1 month ago
1255
28fc23d7 Andy McCall 1 month ago ↶
1256
identity_file: PathBuf,
d42369ab Andy McCall 1 month ago
1257
28fc23d7 Andy McCall 1 month ago ↶
1258
# [ arg ( long ) ]
1259
out: Option< PathBuf> ,
1260
} ,
1261
1262
Remove {
d42369ab Andy McCall 1 month ago
1263
28fc23d7 Andy McCall 1 month ago ↶
1264
key: String ,
d42369ab Andy McCall 1 month ago
1265
28fc23d7 Andy McCall 1 month ago ↶
1266
# [ arg ( long ) ]
1267
out: Option< PathBuf> ,
1268
} ,
1269
1270
Threshold {
d42369ab Andy McCall 1 month ago
1271
28fc23d7 Andy McCall 1 month ago ↶
1272
n: u32 ,
d42369ab Andy McCall 1 month ago
1273
28fc23d7 Andy McCall 1 month ago ↶
1274
# [ arg ( long ) ]
1275
out: Option< PathBuf> ,
1276
} ,
83e0677b Andy McCall 1 month ago ↶
1277
}
1278
c397a8c3 Andy McCall 3 days ago ↶
1279
1280
1281
1282
pub fn after_command ( ) {
1283
if AT_OP .get ( ) .and_then ( | o | o.as_deref ( ) ) .is_some ( ) {
1284
return ;
1285
}
1286
let Ok ( dir) = std:: env:: current_dir( ) else {
1287
return ;
1288
} ;
1289
let Ok ( repo) = Repo:: open( & dir) else { return } ;
1290
if ! repo.config.git_colocate | | repo.is_bare ( ) {
1291
return ;
1292
}
1293
if let Err ( e) = repo.git_colocate_sync ( ) {
1294
eprintln! (
1295
" {} the .git beside this checkout was not updated: {e}" ,
1296
ui:: warn( " !" )
1297
) ;
1298
}
1299
}
1300
fce44ae9 Andy McCall 1 month ago ↶
1301
1302
fn open ( ) -> Result< Repo> {
98a1620a Andy McCall 1 month ago ↶
1303
let repo = Repo:: open( & std:: env:: current_dir( ) ? ) .context ( " opening repository" ) ? ;
1304
match AT_OP .get ( ) .and_then ( | o | o.as_deref ( ) ) {
1305
Some ( op) => Ok ( repo.at_op ( op) ? ) ,
1306
None => Ok ( repo) ,
1307
}
fce44ae9 Andy McCall 1 month ago ↶
1308
}
1309
d42369ab Andy McCall 1 month ago
1310
1311
fn man ( dir : Option< PathBuf> ) -> Result< i32 > {
1312
use clap:: CommandFactory;
1313
let cmd = Cli:: command( ) ;
1314
match dir {
1315
Some ( dir) => {
1316
std:: fs:: create_dir_all( & dir) ? ;
1317
clap_mangen:: generate_to( cmd, & dir) ? ;
1318
let pages = std:: fs:: read_dir( & dir) ?
1319
.filter ( | e | {
1320
e.as_ref ( )
1321
.is_ok_and ( | e | e.path ( ) .extension ( ) .is_some_and ( | x | x = = " 1" ) )
1322
} )
1323
.count ( ) ;
1324
println! (
1325
" {} " ,
1326
ui:: done( format! ( " Wrote {pages} man pages to {} " , dir.display ( ) ) )
1327
) ;
1328
}
1329
None => clap_mangen:: Man:: new( cmd) .render ( & mut std:: io:: stdout( ) ) ? ,
1330
}
1331
Ok ( 0 )
1332
}
1333
fce44ae9 Andy McCall 1 month ago ↶
1334
1335
pub fn run ( ) -> Result< i32 > {
8d803563 Andy McCall 1 month ago ↶
1336
1337
oxy_strata:: register( ) ;
fce44ae9 Andy McCall 1 month ago ↶
1338
let cli = Cli:: parse( ) ;
135212de Andy McCall 1 month ago ↶
1339
ui:: init( cli.plain) ;
98a1620a Andy McCall 1 month ago ↶
1340
AT_OP .set ( cli.at_op.clone ( ) ) .ok ( ) ;
fce44ae9 Andy McCall 1 month ago ↶
1341
match cli.cmd {
d42369ab Andy McCall 1 month ago
1342
Cmd:: Completions { shell } => {
1343
use clap:: CommandFactory;
1344
clap_complete:: generate( shell, & mut Cli:: command( ) , " oxy" , & mut std:: io:: stdout( ) ) ;
1345
Ok ( 0 )
1346
}
1347
Cmd:: Man { dir } => man ( dir) ,
d069701a Andy McCall 1 month ago ↶
1348
Cmd:: Init { path, bare, store } => workspace:: init( path, bare, store.as_deref ( ) ) ,
50a046e4 Andy McCall 1 month ago ↶
1349
Cmd:: Status { json } => workspace:: status( json) ,
75167672 Andy McCall 1 month ago
1350
Cmd:: Prompt {
1351
format,
1352
glyphs,
1353
color,
1354
} => workspace:: prompt( & format, glyphs, color.as_deref ( ) ) ,
1355
Cmd:: Commit {
1356
message,
6a81dbab Andy McCall 1 month ago ↶
1357
file,
75167672 Andy McCall 1 month ago
1358
depends_on,
1359
paths,
1360
interactive,
1361
hunks,
6a81dbab Andy McCall 1 month ago ↶
1362
} => {
1363
let message = match ( message, file) {
1364
( Some ( m) , _ ) => m,
1365
( None , Some ( f) ) if f.as_os_str ( ) = = " -" => {
1366
let mut s = String :: new( ) ;
1367
std:: io:: Read:: read_to_string( & mut std:: io:: stdin( ) , & mut s) ? ;
1368
s
1369
}
1370
( None , Some ( f) ) => std:: fs:: read_to_string( & f) .map_err ( | e | {
1371
anyhow:: anyhow! ( " reading the message from {}: {e}" , f.display ( ) )
1372
} ) ? ,
1373
( None , None ) => anyhow:: bail! ( " a commit message is required (-m or -F)" ) ,
1374
} ;
1375
workspace:: commit( & message, & depends_on, & paths, interactive, & hunks)
1376
}
c6aa5bd9 Andy McCall 1 month ago ↶
1377
Cmd:: Cat { path, change } => workspace:: cat( & path, change.as_deref ( ) ) ,
1378
Cmd:: Root { json } => workspace:: root( json) ,
91334b7f Andy McCall 4 days ago ↶
1379
Cmd:: Mcp {
1380
dir,
1381
allow_destructive,
1382
} => mcp:: serve( dir, allow_destructive) ,
c6aa5bd9 Andy McCall 1 month ago ↶
1383
Cmd:: Version { json } => workspace:: version( json) ,
1384
Cmd:: Discard { paths, hunks } => workspace:: discard( & paths, & hunks) ,
1385
Cmd:: Hunks { json } => workspace:: hunks( json) ,
728da0f9 Andy McCall 1 month ago ↶
1386
Cmd:: Squash { change, into } => workspace:: squash( & change, & into) ,
e266b7d4 Andy McCall 1 month ago ↶
1387
Cmd:: Rebase {
1388
change,
1389
onto,
1390
into_working_copy,
1391
} => workspace:: rebase( & change, & onto, into_working_copy) ,
957fee30 Andy McCall 1 month ago ↶
1392
Cmd:: Blame { path, json } => workspace:: blame( & path, json) ,
1393
Cmd:: Bisect { cmd } => match cmd {
1394
BisectCmd:: Start => workspace:: bisect_start( ) ,
1395
BisectCmd:: Good { changes } => workspace:: bisect_mark( Some ( true ) , & changes) ,
1396
BisectCmd:: Bad { changes } => workspace:: bisect_mark( Some ( false ) , & changes) ,
1397
BisectCmd:: Skip => workspace:: bisect_mark( None , & [ ] ) ,
1398
BisectCmd:: Run { command } => workspace:: bisect_run( & command) ,
c6aa5bd9 Andy McCall 1 month ago ↶
1399
BisectCmd:: Status { json } => workspace:: bisect_status( json) ,
957fee30 Andy McCall 1 month ago ↶
1400
BisectCmd:: Reset => workspace:: bisect_reset( ) ,
1401
} ,
75167672 Andy McCall 1 month ago
1402
Cmd:: Log {
47ce8b8e Andy McCall 1 month ago ↶
1403
revset,
75167672 Andy McCall 1 month ago
1404
limit,
1405
verbose,
1406
path,
83d61e80 Andy McCall 1 month ago ↶
1407
lines,
75167672 Andy McCall 1 month ago
1408
json,
47ce8b8e Andy McCall 1 month ago ↶
1409
} => workspace:: log(
1410
revset.as_deref ( ) ,
1411
limit,
1412
verbose,
1413
path.as_deref ( ) ,
1414
lines.as_deref ( ) ,
1415
json,
1416
) ,
c6aa5bd9 Andy McCall 1 month ago ↶
1417
Cmd:: Diff { change, json } => workspace:: diff( change.as_deref ( ) , json) ,
6a81dbab Andy McCall 1 month ago ↶
1418
Cmd:: Describe {
1419
message,
1420
change,
1421
json,
1422
} => match message {
1423
Some ( m) => workspace:: describe( & m, change.as_deref ( ) ) ,
1424
None if change.is_some ( ) => {
1425
anyhow:: bail! (
1426
" naming works on the working copy; to change a head's message pass -m"
1427
)
1428
}
1429
None => workspace:: describe_name( json) ,
1430
} ,
69953b50 Andy McCall 17 days ago ↶
1431
Cmd:: Amend {
1432
message,
1433
into,
1434
paths,
1435
} => workspace:: amend( message.as_deref ( ) , into.as_deref ( ) , & paths) ,
23b217d7 Andy McCall 1 month ago ↶
1436
Cmd:: Split { change, paths } => workspace:: split( & change, & paths) ,
2c9ddac3 Andy McCall 1 month ago ↶
1437
Cmd:: Abandon {
1438
change,
1439
revset,
1440
yes,
1441
} => workspace:: abandon( change.as_deref ( ) , revset.as_deref ( ) , yes) ,
1442
Cmd:: Show {
1443
change,
1444
revset,
0299076f Andy McCall 17 days ago ↶
1445
stat,
2c9ddac3 Andy McCall 1 month ago ↶
1446
json,
0299076f Andy McCall 17 days ago ↶
1447
} => workspace:: show( change.as_deref ( ) , revset.as_deref ( ) , stat, json) ,
1c2bd9ab Andy McCall 1 month ago ↶
1448
Cmd:: Checkout {
1449
changes,
1450
discard,
1451
carry,
1452
} => workspace:: checkout( & changes, discard, carry) ,
9bd98cfb Andy McCall 9 days ago ↶
1453
Cmd:: Resolve {
1454
paths,
1455
both,
1456
reverse,
1457
json,
1458
} => workspace:: resolve( & paths, both, reverse, json) ,
fce44ae9 Andy McCall 1 month ago ↶
1459
Cmd:: Undo => workspace:: undo( ) ,
b689779e Andy McCall 24 days ago ↶
1460
Cmd:: Gc {
1461
now,
1462
expire_snapshots,
1463
remote,
1464
} => match remote {
d8d93678 Andy McCall 1 month ago ↶
1465
Some ( name) => workspace:: gc_remote( & name, now) ,
b689779e Andy McCall 24 days ago ↶
1466
None => workspace:: gc( now, expire_snapshots) ,
d8d93678 Andy McCall 1 month ago ↶
1467
} ,
387335ff Andy McCall 1 month ago ↶
1468
Cmd:: Fsck { json } => workspace:: fsck( json) ,
3e5772cc Andy McCall 1 month ago ↶
1469
Cmd:: Doctor { offline, json } => workspace:: doctor( offline, json) ,
252e8cb2 Andy McCall 1 month ago ↶
1470
Cmd:: Checkpoint => workspace:: checkpoint( ) ,
98a1620a Andy McCall 1 month ago ↶
1471
Cmd:: Op { cmd } => match cmd {
1472
OpCmd:: Log { limit, json } => workspace:: op_log( limit, json) ,
1473
OpCmd:: Restore { op, discard } => workspace:: op_restore( & op, discard) ,
1474
OpCmd:: Revert { op } => workspace:: op_revert( & op) ,
1475
} ,
75167672 Andy McCall 1 month ago
1476
Cmd:: Clone {
1477
url,
1478
dest,
1479
max_blob,
1480
sparse,
1481
depth,
14edbaaf Andy McCall 1 month ago ↶
1482
recursive,
1483
} => sync:: clone( & url, dest, max_blob.as_deref ( ) , & sparse, depth, recursive) ,
2863456a Andy McCall 1 month ago ↶
1484
Cmd:: Deepen { depth, remote } => sync:: deepen( & remote, depth) ,
7421309f Andy McCall 1 month ago ↶
1485
Cmd:: Sparse { paths } => workspace:: sparse( & paths) ,
cdb5beba Andy McCall 1 month ago ↶
1486
Cmd:: Lock { path } => workspace:: lock( & path) ,
1487
Cmd:: Unlock { path } => workspace:: unlock( & path) ,
4e88e774 Andy McCall 1 month ago ↶
1488
Cmd:: Workspace { cmd } => match cmd {
1489
WorkspaceCmd:: Add { path, changes } => workspace:: workspace_add( & path, & changes) ,
1196b29b Andy McCall 1 month ago ↶
1490
WorkspaceCmd:: List { json } => workspace:: workspace_list( json) ,
4e88e774 Andy McCall 1 month ago ↶
1491
WorkspaceCmd:: Forget { workspace } => workspace:: workspace_forget( & workspace) ,
1492
} ,
7b9809e6 Andy McCall 1 month ago ↶
1493
Cmd:: Bookmark { cmd } => match cmd {
4fe7d604 Andy McCall 1 month ago ↶
1494
BookmarkCmd:: Create {
1495
name,
1496
changes,
1497
upto,
1498
only,
1499
} => workspace:: bookmark_create( & name, & changes, upto, only) ,
06d16dc2 Andy McCall 1 month ago ↶
1500
BookmarkCmd:: Set {
1501
name,
1502
changes,
1503
upto,
1504
only,
1505
} => workspace:: bookmark_set( & name, & changes, upto, only) ,
7b9809e6 Andy McCall 1 month ago ↶
1506
BookmarkCmd:: Delete { name } => workspace:: bookmark_delete( & name) ,
bf3a6781 Andy McCall 1 month ago ↶
1507
BookmarkCmd:: List { all, verbose, json } => {
1508
workspace:: bookmark_list( all, verbose, json)
1509
}
1510
BookmarkCmd:: Show { name, json } => workspace:: bookmark_show( name.as_deref ( ) , json) ,
61e3bce7 Andy McCall 1 month ago ↶
1511
BookmarkCmd:: Switch {
1512
name,
1513
discard,
1514
carry,
1515
} => workspace:: bookmark_switch( & name, discard, carry) ,
7b9809e6 Andy McCall 1 month ago ↶
1516
} ,
1517
Cmd:: Merge { bookmark } => workspace:: merge( & bookmark) ,
ff1f62fe Andy McCall 1 month ago ↶
1518
Cmd:: Auth { cmd } => match cmd {
1519
AuthCmd:: Login {
1520
hub,
1521
with_token,
1522
ca,
1523
} => auth:: login( hub.as_deref ( ) , with_token, ca) ,
1524
AuthCmd:: Status => auth:: status( ) ,
1525
AuthCmd:: Logout { hub } => auth:: logout( hub.as_deref ( ) ) ,
c895bc52 Andy McCall 18 days ago ↶
1526
AuthCmd:: Grant { hub } => auth:: grant( hub.as_deref ( ) ) ,
ff1f62fe Andy McCall 1 month ago ↶
1527
} ,
4dee277c Andy McCall 1 month ago ↶
1528
Cmd:: Submodule { cmd } => match cmd {
75167672 Andy McCall 1 month ago
1529
SubmoduleCmd:: Add {
1530
url,
1531
path,
1532
bookmark,
1533
} => sync:: submodule_add( & url, & path, bookmark.as_deref ( ) ) ,
4dee277c Andy McCall 1 month ago ↶
1534
SubmoduleCmd:: Update { init, paths } => sync:: submodule_update( init, & paths) ,
c6aa5bd9 Andy McCall 1 month ago ↶
1535
SubmoduleCmd:: Status { json } => sync:: submodule_status( json) ,
284fe47d Andy McCall 1 day ago ↶
1536
SubmoduleCmd:: Remove {
1537
path,
1538
delete,
1539
force,
1540
} => sync:: submodule_remove( & path, delete, force) ,
e59512f2 Andy McCall 18 days ago ↶
1541
} ,
51d4862a Andy McCall 18 days ago ↶
1542
Cmd:: Witness {
1543
cmd:
1544
WitnessCmd:: Serve {
1545
name,
1546
logs,
1547
state,
1548
bind,
1549
tls_cert,
1550
tls_key,
1551
} ,
1552
} => tlog:: witness_serve( & name, & logs, state, & bind, tls_cert.zip ( tls_key) ) ,
e59512f2 Andy McCall 18 days ago ↶
1553
Cmd:: Tlog { cmd } => match cmd {
1554
TlogCmd:: Verify {
1555
hub,
1556
key,
1557
all,
1558
json,
1559
} => tlog:: verify( hub.as_deref ( ) , key.as_deref ( ) , all, json) ,
642da263 Andy McCall 7 days ago ↶
1560
} ,
1561
Cmd:: Artifact { cmd } => match cmd {
1562
ArtifactCmd:: Pack {
1563
dir,
1564
kind,
1565
arch,
1566
os,
1567
entrypoint,
1568
env,
1569
labels,
1570
json,
1571
} => artifact:: pack( & dir, & kind, arch, os, entrypoint, & env, & labels, json) ,
1572
ArtifactCmd:: List { json } => artifact:: list( json) ,
1573
ArtifactCmd:: Show { name, json } => artifact:: show( & name, json) ,
1574
ArtifactCmd:: Unpack { name, dest } => artifact:: unpack( & name, & dest) ,
1575
ArtifactCmd:: Verify { name } => artifact:: verify( & name) ,
fc1a466a Andy McCall 1 month ago ↶
1576
} ,
1577
Cmd:: Receipt { cmd } => match cmd {
1578
ReceiptCmd:: List { rev, json } => receipt:: list( rev.as_deref ( ) , json) ,
1579
ReceiptCmd:: Show {
1580
receipt: r,
1581
rev,
1582
json,
1583
} => receipt:: show( & r, rev.as_deref ( ) , json) ,
1584
ReceiptCmd:: Export {
1585
receipt: r,
1586
file,
1587
rev,
a39754d0 Andy McCall 18 days ago ↶
1588
format,
1589
} => receipt:: export( & r, & file, rev.as_deref ( ) , & format) ,
fc1a466a Andy McCall 1 month ago ↶
1590
ReceiptCmd:: Verify { file, json } => receipt:: verify( & file, json) ,
1591
ReceiptCmd:: Import { file } => receipt:: import( & file) ,
4dee277c Andy McCall 1 month ago ↶
1592
} ,
132b884b Andy McCall 1 month ago ↶
1593
Cmd:: Tag { cmd } => match cmd {
75167672 Andy McCall 1 month ago
1594
TagCmd:: Create {
1595
name,
1596
changes,
1597
message,
1598
} => workspace:: tag_create( & name, & changes, & message) ,
b63fc7a7 Andy McCall 11 days ago ↶
1599
TagCmd:: Delete { name, reason } => workspace:: tag_delete( & name, & reason) ,
1196b29b Andy McCall 1 month ago ↶
1600
TagCmd:: List { json } => workspace:: tag_list( json) ,
132b884b Andy McCall 1 month ago ↶
1601
} ,
fce44ae9 Andy McCall 1 month ago ↶
1602
Cmd:: Remote { cmd } => match cmd {
9aa39904 Andy McCall 1 month ago ↶
1603
RemoteCmd:: Add {
1604
name,
1605
url,
1606
profile,
1607
region,
1608
endpoint,
1609
credentials,
1610
} => sync:: remote_add(
1611
& name,
1612
& url,
1613
& [
1614
( " profile" , profile) ,
1615
( " region" , region) ,
1616
( " endpoint" , endpoint) ,
1617
( " credentials" , credentials) ,
1618
] ,
1619
) ,
1620
RemoteCmd:: Check { name } => sync:: remote_check( & name) ,
fce44ae9 Andy McCall 1 month ago ↶
1621
RemoteCmd:: Remove { name } => sync:: remote_remove( & name) ,
c6aa5bd9 Andy McCall 1 month ago ↶
1622
RemoteCmd:: List { json } => sync:: remote_list( json) ,
fce44ae9 Andy McCall 1 month ago ↶
1623
} ,
c6aa5bd9 Andy McCall 1 month ago ↶
1624
Cmd:: Fetch { remote, json } => sync:: fetch( remote.as_deref ( ) , json) ,
1625
Cmd:: Pull { remote, json } => sync:: pull( remote.as_deref ( ) , json) ,
75167672 Andy McCall 1 month ago
1626
Cmd:: Push {
1627
remote,
1628
force,
1629
bookmark,
f8c69576 Andy McCall 1 month ago ↶
1630
delete,
75167672 Andy McCall 1 month ago
1631
json,
f8c69576 Andy McCall 1 month ago ↶
1632
} => match delete {
1633
Some ( name) => sync:: push_delete( remote.as_deref ( ) , & name, json) ,
1634
None => sync:: push( remote.as_deref ( ) , force, bookmark.as_deref ( ) , json) ,
1635
} ,
75167672 Andy McCall 1 month ago
1636
Cmd:: Serve {
1637
root,
1638
bind,
1639
tokens,
1640
tls_cert,
1641
tls_key,
1642
} => sync:: serve( root, & bind, tokens, tls_cert.zip ( tls_key) ) ,
fce44ae9 Andy McCall 1 month ago ↶
1643
Cmd:: Identity { cmd } => match cmd {
75167672 Andy McCall 1 month ago
1644
IdentityCmd:: Create {
1645
name,
1646
email,
1647
local,
1648
expires,
1649
} => identity:: create( name, email, local, expires) ,
fce44ae9 Andy McCall 1 month ago ↶
1650
IdentityCmd:: Show => identity:: show( ) ,
a39754d0 Andy McCall 18 days ago ↶
1651
IdentityCmd:: Export { path, pem } => identity:: export( path, pem) ,
119bbf50 Andy McCall 1 month ago ↶
1652
IdentityCmd:: SignChallenge { challenge, json } => {
1653
identity:: sign_challenge( & challenge, json)
1654
}
28fc23d7 Andy McCall 1 month ago ↶
1655
IdentityCmd:: Rotate => identity:: rotate( ) ,
1656
IdentityCmd:: Renew { expires } => identity:: renew( expires) ,
1657
IdentityCmd:: Revoke { key, reason } => identity:: revoke( key.as_deref ( ) , & reason) ,
1658
IdentityCmd:: Delegate { cmd } => match cmd {
7ba155f2 Andy McCall 1 month ago ↶
1659
DelegateCmd:: Add {
1660
identity_file,
1661
scope,
1662
expires,
1663
} => identity:: delegate_add( & identity_file, & scope, expires.as_deref ( ) ) ,
28fc23d7 Andy McCall 1 month ago ↶
1664
DelegateCmd:: Remove { key } => identity:: delegate_remove( & key) ,
1665
DelegateCmd:: List => identity:: delegate_list( ) ,
1666
} ,
83e0677b Andy McCall 1 month ago ↶
1667
} ,
c397a8c3 Andy McCall 3 days ago ↶
1668
Cmd:: Git {
1669
cmd: GitCmd:: Colocate { off } ,
1670
} => sync:: git_colocate( off) ,
75167672 Andy McCall 1 month ago
1671
Cmd:: Git {
1672
cmd: GitCmd:: Export { git_dir, branch } ,
1673
} => sync:: git_export( & git_dir, branch.as_deref ( ) ) ,
1674
Cmd:: Git {
d6e0d5b8 Andy McCall 25 days ago ↶
1675
cmd: GitCmd:: Fetch { url, branch, claim } ,
1676
} => sync:: git_fetch( & url, & branch, claim) ,
75167672 Andy McCall 1 month ago
1677
Cmd:: Git {
1678
cmd: GitCmd:: Push { url, branch } ,
1679
} => sync:: git_push( & url, & branch) ,
1680
Cmd:: Git {
54e2e630 Andy McCall 29 days ago ↶
1681
cmd: GitCmd:: Recover,
1682
} => sync:: git_recover( ) ,
1683
Cmd:: Git {
75167672 Andy McCall 1 month ago
1684
cmd:
1685
GitCmd:: Import {
1686
git_dir,
1687
dest,
1688
branch,
d6e0d5b8 Andy McCall 25 days ago ↶
1689
claim,
75167672 Andy McCall 1 month ago
1690
} ,
d6e0d5b8 Andy McCall 25 days ago ↶
1691
} => sync:: git_import( & git_dir, & dest, & branch, claim) ,
62794ecc Andy McCall 1 month ago ↶
1692
Cmd:: Git {
7eac74ab Andy McCall 1 month ago ↶
1693
cmd:
1694
GitCmd:: Verify {
1695
git_dir,
1696
branch,
1697
last,
8b7986dd Andy McCall 26 days ago ↶
1698
max_differences,
7eac74ab Andy McCall 1 month ago ↶
1699
} ,
8b7986dd Andy McCall 26 days ago ↶
1700
} => sync:: git_verify( & git_dir, & branch, last, max_differences) ,
83e0677b Andy McCall 1 month ago ↶
1701
Cmd:: Policy { cmd } => match cmd {
1702
PolicyCmd:: Init => identity:: policy_init( ) ,
c6aa5bd9 Andy McCall 1 month ago ↶
1703
PolicyCmd:: Show { json } => identity:: policy_show( json) ,
75167672 Andy McCall 1 month ago
1704
PolicyCmd:: Grant {
1705
identity_file,
1706
pattern,
1707
out,
1708
} => identity:: policy_grant( & identity_file, pattern.as_deref ( ) , out) ,
3a6effc7 Andy McCall 18 days ago ↶
1709
PolicyCmd:: GrantSubject {
1710
subject,
1711
issuer,
1712
scope,
1713
pattern,
1714
out,
1715
} => identity:: policy_grant_subject( & subject, & issuer, & scope, pattern.as_deref ( ) , out) ,
28fc23d7 Andy McCall 1 month ago ↶
1716
PolicyCmd:: Revoke { key, out } => identity:: policy_revoke( & key, out) ,
1717
PolicyCmd:: Root { cmd } => match cmd {
75167672 Andy McCall 1 month ago
1718
RootCmd:: Add { identity_file, out } => {
1719
identity:: policy_root_add( & identity_file, out)
1720
}
28fc23d7 Andy McCall 1 month ago ↶
1721
RootCmd:: Remove { key, out } => identity:: policy_root_remove( & key, out) ,
1722
RootCmd:: Threshold { n, out } => identity:: policy_threshold( n, out) ,
1723
} ,
1724
PolicyCmd:: Sign { proposal, out } => identity:: policy_sign( & proposal, out) ,
fce44ae9 Andy McCall 1 month ago ↶
1725
} ,
4213c41d Andy McCall 1 month ago ↶
1726
Cmd:: Seal {
b582948f Andy McCall 19 days ago ↶
1727
flow: Some ( url) ,
1728
job: Some ( job) ,
1729
reject,
1730
json,
1731
..
1732
} => approve:: seal( & url, & job, reject, json) ,
1733
Cmd:: Seal {
4213c41d Andy McCall 1 month ago ↶
1734
changes,
1735
proposal: Some ( url) ,
1736
json,
b582948f Andy McCall 19 days ago ↶
1737
..
4213c41d Andy McCall 1 month ago ↶
1738
} if changes.is_empty ( ) => proposal:: seal( & url, json) ,
d82e4409 Andy McCall 1 month ago ↶
1739
Cmd:: Seal { changes, json, .. } => identity:: seal( & changes, json) ,
1740
Cmd:: Proposal { cmd } => match cmd {
1741
ProposalCmd:: Show { url, json } => proposal:: show( & url, json) ,
1742
ProposalCmd:: Land { url, force } => proposal:: land( & url, force) ,
1743
} ,
2c9ddac3 Andy McCall 1 month ago ↶
1744
Cmd:: Verify {
1745
change,
1746
revset,
1747
json,
1748
} => identity:: verify( change.as_deref ( ) , revset.as_deref ( ) , json) ,
614f55e1 Andy McCall 1 month ago ↶
1749
Cmd:: Config {
1750
key,
1751
value,
1752
user,
1753
unset,
1754
} => identity:: config( & key, value.as_deref ( ) .unwrap_or ( " " ) , user, unset) ,
fce44ae9 Andy McCall 1 month ago ↶
1755
}
1756
}
d42369ab Andy McCall 1 month ago
1757
1758
# [ cfg ( test ) ]
1759
mod help_tests {
1760
use super :: Cli;
1761
use clap:: CommandFactory;
1762
1763
1764
1765
# [ test ]
1766
fn every_command_and_argument_has_help ( ) {
1767
fn walk ( cmd : & clap:: Command, path : & str , missing : & mut Vec< String> ) {
1768
let here = format! ( " {path} {} " , cmd.get_name ( ) ) .trim ( ) .to_string ( ) ;
99e3e0af Andy McCall 1 month ago ↶
1769
if cmd.get_about ( ) .is_none ( ) & & ! path.is_empty ( ) {
d42369ab Andy McCall 1 month ago
1770
missing.push ( format! ( " {here} (command)" ) ) ;
1771
}
1772
for a in cmd.get_arguments ( ) {
1773
let id = a.get_id ( ) .as_str ( ) ;
99e3e0af Andy McCall 1 month ago ↶
1774
if id = = " help" | | id = = " version" | | ( a.is_global_set ( ) & & ! path.is_empty ( ) ) {
d42369ab Andy McCall 1 month ago
1775
continue ;
1776
}
1777
if a.get_help ( ) .is_none ( ) & & a.get_long_help ( ) .is_none ( ) {
1778
missing.push ( format! ( " {here} {id} " ) ) ;
1779
}
1780
}
1781
for sub in cmd.get_subcommands ( ) {
1782
walk ( sub, & here, missing) ;
1783
}
1784
}
1785
let mut missing = Vec :: new( ) ;
1786
walk ( & Cli:: command( ) , " " , & mut missing) ;
1787
assert! (
1788
missing.is_empty ( ) ,
1789
" {} without help:\n {}" ,
1790
missing.len ( ) ,
1791
missing.join ( " \n " )
1792
) ;
1793
}
1794
}