upd-cli 0.1.7__tar.gz → 0.1.9__tar.gz
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.
- {upd_cli-0.1.7 → upd_cli-0.1.9}/CHANGELOG.md +14 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/Cargo.lock +312 -4
- {upd_cli-0.1.7 → upd_cli-0.1.9}/Cargo.toml +7 -1
- {upd_cli-0.1.7 → upd_cli-0.1.9}/PKG-INFO +1 -1
- upd_cli-0.1.9/fixtures/clispec-v0.2.json +135 -0
- upd_cli-0.1.9/src/bin/upd-cli.rs +39 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/cli.rs +71 -3
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/lib.rs +1 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/main.rs +138 -23
- upd_cli-0.1.9/src/schema.rs +403 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/tests/cooldown_e2e.rs +2 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/tests/discovery_no_ignore.rs +15 -2
- {upd_cli-0.1.7 → upd_cli-0.1.9}/tests/format_json.rs +35 -6
- {upd_cli-0.1.7 → upd_cli-0.1.9}/tests/help_text.rs +1 -1
- {upd_cli-0.1.7 → upd_cli-0.1.9}/tests/no_args_scope.rs +2 -2
- {upd_cli-0.1.7 → upd_cli-0.1.9}/tests/output_streams.rs +25 -6
- {upd_cli-0.1.7 → upd_cli-0.1.9}/.mise.toml +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/.pre-commit-config.yaml +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/.pre-commit-hooks.yaml +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/.rumdl.toml +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/LICENSE +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/Makefile +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/README.md +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/assets/logo-wide.svg +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/assets/logo.svg +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/pyproject.toml +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/python/upd_cli/__init__.py +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/python/upd_cli/__main__.py +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/python/upd_cli/py.typed +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/rust-toolchain.toml +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/align.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/audit/cache.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/audit/cvss.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/audit/mod.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/cache.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/config.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/cooldown.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/http.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/interactive.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/lockfile.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/output.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/registry/crates_io.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/registry/github_releases.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/registry/go_proxy.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/registry/mock.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/registry/mod.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/registry/npm.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/registry/nuget.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/registry/pypi.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/registry/rubygems.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/registry/terraform.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/registry/utils.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/updater/cargo_toml.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/updater/csproj.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/updater/gemfile.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/updater/github_actions.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/updater/go_mod.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/updater/mise.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/updater/mod.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/updater/npm_range.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/updater/package_json.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/updater/pre_commit.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/updater/pyproject.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/updater/requirements.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/updater/terraform.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/version/compare.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/version/mod.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/version/pep440.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/version/semver_util.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/src/version/tag.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/tests/audit_offline.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/tests/audit_sarif.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/tests/audit_severity.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/tests/bump_filter.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/tests/exit_codes.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/tests/fix_audit.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/tests/interactive_tty.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/tests/invalid_positional.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/tests/package_filter.rs +0 -0
- {upd_cli-0.1.7 → upd_cli-0.1.9}/vership.toml +0 -0
|
@@ -17,6 +17,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
## [0.1.9](https://github.com/rvben/upd/compare/v0.1.8...v0.1.9) - 2026-06-11
|
|
23
|
+
|
|
24
|
+
### Added
|
|
25
|
+
|
|
26
|
+
- **clispec**: implement clispec v0.2 compliance (24/24) ([1c477cc](https://github.com/rvben/upd/commit/1c477cc11252dbad4f6d46fa7f393dcb48fb170d))
|
|
27
|
+
|
|
28
|
+
## [0.1.8](https://github.com/rvben/upd/compare/v0.1.7...v0.1.8) - 2026-04-30
|
|
29
|
+
|
|
30
|
+
### Added
|
|
31
|
+
|
|
32
|
+
- **packaging**: add upd-cli shim binary so `uvx upd-cli` works directly ([17fc581](https://github.com/rvben/upd/commit/17fc581015d2a44dcaa16a547597f4bfd0013751))
|
|
33
|
+
|
|
20
34
|
## [0.1.7](https://github.com/rvben/upd/compare/v0.1.6...v0.1.7) - 2026-04-29
|
|
21
35
|
|
|
22
36
|
### Fixed
|
|
@@ -8,6 +8,20 @@ version = "2.0.1"
|
|
|
8
8
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
9
9
|
checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
|
|
10
10
|
|
|
11
|
+
[[package]]
|
|
12
|
+
name = "ahash"
|
|
13
|
+
version = "0.8.12"
|
|
14
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
15
|
+
checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75"
|
|
16
|
+
dependencies = [
|
|
17
|
+
"cfg-if",
|
|
18
|
+
"getrandom 0.3.4",
|
|
19
|
+
"once_cell",
|
|
20
|
+
"serde",
|
|
21
|
+
"version_check",
|
|
22
|
+
"zerocopy",
|
|
23
|
+
]
|
|
24
|
+
|
|
11
25
|
[[package]]
|
|
12
26
|
name = "aho-corasick"
|
|
13
27
|
version = "1.1.4"
|
|
@@ -17,6 +31,12 @@ dependencies = [
|
|
|
17
31
|
"memchr",
|
|
18
32
|
]
|
|
19
33
|
|
|
34
|
+
[[package]]
|
|
35
|
+
name = "allocator-api2"
|
|
36
|
+
version = "0.2.21"
|
|
37
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
38
|
+
checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923"
|
|
39
|
+
|
|
20
40
|
[[package]]
|
|
21
41
|
name = "android_system_properties"
|
|
22
42
|
version = "0.1.5"
|
|
@@ -134,12 +154,33 @@ version = "0.22.1"
|
|
|
134
154
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
135
155
|
checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
|
|
136
156
|
|
|
157
|
+
[[package]]
|
|
158
|
+
name = "bit-set"
|
|
159
|
+
version = "0.8.0"
|
|
160
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
161
|
+
checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3"
|
|
162
|
+
dependencies = [
|
|
163
|
+
"bit-vec",
|
|
164
|
+
]
|
|
165
|
+
|
|
166
|
+
[[package]]
|
|
167
|
+
name = "bit-vec"
|
|
168
|
+
version = "0.8.0"
|
|
169
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
170
|
+
checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7"
|
|
171
|
+
|
|
137
172
|
[[package]]
|
|
138
173
|
name = "bitflags"
|
|
139
174
|
version = "2.11.1"
|
|
140
175
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
141
176
|
checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3"
|
|
142
177
|
|
|
178
|
+
[[package]]
|
|
179
|
+
name = "borrow-or-share"
|
|
180
|
+
version = "0.2.4"
|
|
181
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
182
|
+
checksum = "dc0b364ead1874514c8c2855ab558056ebfeb775653e7ae45ff72f28f8f3166c"
|
|
183
|
+
|
|
143
184
|
[[package]]
|
|
144
185
|
name = "bstr"
|
|
145
186
|
version = "1.12.1"
|
|
@@ -156,6 +197,12 @@ version = "3.19.0"
|
|
|
156
197
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
157
198
|
checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43"
|
|
158
199
|
|
|
200
|
+
[[package]]
|
|
201
|
+
name = "bytecount"
|
|
202
|
+
version = "0.6.9"
|
|
203
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
204
|
+
checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e"
|
|
205
|
+
|
|
159
206
|
[[package]]
|
|
160
207
|
name = "bytes"
|
|
161
208
|
version = "1.11.0"
|
|
@@ -312,6 +359,12 @@ version = "0.8.21"
|
|
|
312
359
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
313
360
|
checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
|
|
314
361
|
|
|
362
|
+
[[package]]
|
|
363
|
+
name = "data-encoding"
|
|
364
|
+
version = "2.11.0"
|
|
365
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
366
|
+
checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8"
|
|
367
|
+
|
|
315
368
|
[[package]]
|
|
316
369
|
name = "deadpool"
|
|
317
370
|
version = "0.12.3"
|
|
@@ -362,6 +415,15 @@ dependencies = [
|
|
|
362
415
|
"syn",
|
|
363
416
|
]
|
|
364
417
|
|
|
418
|
+
[[package]]
|
|
419
|
+
name = "email_address"
|
|
420
|
+
version = "0.2.9"
|
|
421
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
422
|
+
checksum = "e079f19b08ca6239f47f8ba8509c11cf3ea30095831f7fed61441475edd8c449"
|
|
423
|
+
dependencies = [
|
|
424
|
+
"serde",
|
|
425
|
+
]
|
|
426
|
+
|
|
365
427
|
[[package]]
|
|
366
428
|
name = "equivalent"
|
|
367
429
|
version = "1.0.2"
|
|
@@ -378,6 +440,17 @@ dependencies = [
|
|
|
378
440
|
"windows-sys",
|
|
379
441
|
]
|
|
380
442
|
|
|
443
|
+
[[package]]
|
|
444
|
+
name = "fancy-regex"
|
|
445
|
+
version = "0.18.0"
|
|
446
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
447
|
+
checksum = "e1e1dacd0d2082dfcf1351c4bdd566bbe89a2b263235a2b50058f1e130a47277"
|
|
448
|
+
dependencies = [
|
|
449
|
+
"bit-set",
|
|
450
|
+
"regex-automata",
|
|
451
|
+
"regex-syntax",
|
|
452
|
+
]
|
|
453
|
+
|
|
381
454
|
[[package]]
|
|
382
455
|
name = "fastrand"
|
|
383
456
|
version = "2.3.0"
|
|
@@ -400,12 +473,29 @@ dependencies = [
|
|
|
400
473
|
"miniz_oxide",
|
|
401
474
|
]
|
|
402
475
|
|
|
476
|
+
[[package]]
|
|
477
|
+
name = "fluent-uri"
|
|
478
|
+
version = "0.4.1"
|
|
479
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
480
|
+
checksum = "bc74ac4d8359ae70623506d512209619e5cf8f347124910440dbc221714b328e"
|
|
481
|
+
dependencies = [
|
|
482
|
+
"borrow-or-share",
|
|
483
|
+
"ref-cast",
|
|
484
|
+
"serde",
|
|
485
|
+
]
|
|
486
|
+
|
|
403
487
|
[[package]]
|
|
404
488
|
name = "fnv"
|
|
405
489
|
version = "1.0.7"
|
|
406
490
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
407
491
|
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
|
|
408
492
|
|
|
493
|
+
[[package]]
|
|
494
|
+
name = "foldhash"
|
|
495
|
+
version = "0.2.0"
|
|
496
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
497
|
+
checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"
|
|
498
|
+
|
|
409
499
|
[[package]]
|
|
410
500
|
name = "foreign-types"
|
|
411
501
|
version = "0.3.2"
|
|
@@ -430,6 +520,16 @@ dependencies = [
|
|
|
430
520
|
"percent-encoding",
|
|
431
521
|
]
|
|
432
522
|
|
|
523
|
+
[[package]]
|
|
524
|
+
name = "fraction"
|
|
525
|
+
version = "0.15.4"
|
|
526
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
527
|
+
checksum = "e076045bb43dac435333ed5f04caf35c7463631d0dae2deb2638d94dd0a5b872"
|
|
528
|
+
dependencies = [
|
|
529
|
+
"lazy_static",
|
|
530
|
+
"num",
|
|
531
|
+
]
|
|
532
|
+
|
|
433
533
|
[[package]]
|
|
434
534
|
name = "futures"
|
|
435
535
|
version = "0.3.32"
|
|
@@ -536,9 +636,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
536
636
|
checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
|
|
537
637
|
dependencies = [
|
|
538
638
|
"cfg-if",
|
|
639
|
+
"js-sys",
|
|
539
640
|
"libc",
|
|
540
641
|
"r-efi",
|
|
541
642
|
"wasip2",
|
|
643
|
+
"wasm-bindgen",
|
|
542
644
|
]
|
|
543
645
|
|
|
544
646
|
[[package]]
|
|
@@ -573,6 +675,17 @@ dependencies = [
|
|
|
573
675
|
"tracing",
|
|
574
676
|
]
|
|
575
677
|
|
|
678
|
+
[[package]]
|
|
679
|
+
name = "hashbrown"
|
|
680
|
+
version = "0.16.1"
|
|
681
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
682
|
+
checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
|
|
683
|
+
dependencies = [
|
|
684
|
+
"allocator-api2",
|
|
685
|
+
"equivalent",
|
|
686
|
+
"foldhash",
|
|
687
|
+
]
|
|
688
|
+
|
|
576
689
|
[[package]]
|
|
577
690
|
name = "hashbrown"
|
|
578
691
|
version = "0.17.0"
|
|
@@ -848,7 +961,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
848
961
|
checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9"
|
|
849
962
|
dependencies = [
|
|
850
963
|
"equivalent",
|
|
851
|
-
"hashbrown",
|
|
964
|
+
"hashbrown 0.17.0",
|
|
852
965
|
]
|
|
853
966
|
|
|
854
967
|
[[package]]
|
|
@@ -889,6 +1002,33 @@ dependencies = [
|
|
|
889
1002
|
"wasm-bindgen",
|
|
890
1003
|
]
|
|
891
1004
|
|
|
1005
|
+
[[package]]
|
|
1006
|
+
name = "jsonschema"
|
|
1007
|
+
version = "0.46.5"
|
|
1008
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1009
|
+
checksum = "6a5fe5206f06e589caf25e79fc05ccdf91fca745685fe9fe1a13bbdfb479a631"
|
|
1010
|
+
dependencies = [
|
|
1011
|
+
"ahash",
|
|
1012
|
+
"bytecount",
|
|
1013
|
+
"data-encoding",
|
|
1014
|
+
"email_address",
|
|
1015
|
+
"fancy-regex",
|
|
1016
|
+
"fraction",
|
|
1017
|
+
"getrandom 0.3.4",
|
|
1018
|
+
"idna",
|
|
1019
|
+
"itoa",
|
|
1020
|
+
"num-cmp",
|
|
1021
|
+
"num-traits",
|
|
1022
|
+
"percent-encoding",
|
|
1023
|
+
"referencing",
|
|
1024
|
+
"regex",
|
|
1025
|
+
"regex-syntax",
|
|
1026
|
+
"serde",
|
|
1027
|
+
"serde_json",
|
|
1028
|
+
"unicode-general-category",
|
|
1029
|
+
"uuid-simd",
|
|
1030
|
+
]
|
|
1031
|
+
|
|
892
1032
|
[[package]]
|
|
893
1033
|
name = "lazy_static"
|
|
894
1034
|
version = "1.5.0"
|
|
@@ -944,6 +1084,12 @@ version = "2.7.6"
|
|
|
944
1084
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
945
1085
|
checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
|
|
946
1086
|
|
|
1087
|
+
[[package]]
|
|
1088
|
+
name = "micromap"
|
|
1089
|
+
version = "0.3.0"
|
|
1090
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1091
|
+
checksum = "c2a86d3146ed3995b5913c414f6664344b9617457320782e64f0bb44afd49d74"
|
|
1092
|
+
|
|
947
1093
|
[[package]]
|
|
948
1094
|
name = "miniz_oxide"
|
|
949
1095
|
version = "0.8.9"
|
|
@@ -982,6 +1128,76 @@ dependencies = [
|
|
|
982
1128
|
"tempfile",
|
|
983
1129
|
]
|
|
984
1130
|
|
|
1131
|
+
[[package]]
|
|
1132
|
+
name = "num"
|
|
1133
|
+
version = "0.4.3"
|
|
1134
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1135
|
+
checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23"
|
|
1136
|
+
dependencies = [
|
|
1137
|
+
"num-bigint",
|
|
1138
|
+
"num-complex",
|
|
1139
|
+
"num-integer",
|
|
1140
|
+
"num-iter",
|
|
1141
|
+
"num-rational",
|
|
1142
|
+
"num-traits",
|
|
1143
|
+
]
|
|
1144
|
+
|
|
1145
|
+
[[package]]
|
|
1146
|
+
name = "num-bigint"
|
|
1147
|
+
version = "0.4.6"
|
|
1148
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1149
|
+
checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9"
|
|
1150
|
+
dependencies = [
|
|
1151
|
+
"num-integer",
|
|
1152
|
+
"num-traits",
|
|
1153
|
+
]
|
|
1154
|
+
|
|
1155
|
+
[[package]]
|
|
1156
|
+
name = "num-cmp"
|
|
1157
|
+
version = "0.1.0"
|
|
1158
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1159
|
+
checksum = "63335b2e2c34fae2fb0aa2cecfd9f0832a1e24b3b32ecec612c3426d46dc8aaa"
|
|
1160
|
+
|
|
1161
|
+
[[package]]
|
|
1162
|
+
name = "num-complex"
|
|
1163
|
+
version = "0.4.6"
|
|
1164
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1165
|
+
checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495"
|
|
1166
|
+
dependencies = [
|
|
1167
|
+
"num-traits",
|
|
1168
|
+
]
|
|
1169
|
+
|
|
1170
|
+
[[package]]
|
|
1171
|
+
name = "num-integer"
|
|
1172
|
+
version = "0.1.46"
|
|
1173
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1174
|
+
checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
|
|
1175
|
+
dependencies = [
|
|
1176
|
+
"num-traits",
|
|
1177
|
+
]
|
|
1178
|
+
|
|
1179
|
+
[[package]]
|
|
1180
|
+
name = "num-iter"
|
|
1181
|
+
version = "0.1.45"
|
|
1182
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1183
|
+
checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf"
|
|
1184
|
+
dependencies = [
|
|
1185
|
+
"autocfg",
|
|
1186
|
+
"num-integer",
|
|
1187
|
+
"num-traits",
|
|
1188
|
+
]
|
|
1189
|
+
|
|
1190
|
+
[[package]]
|
|
1191
|
+
name = "num-rational"
|
|
1192
|
+
version = "0.4.2"
|
|
1193
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1194
|
+
checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824"
|
|
1195
|
+
dependencies = [
|
|
1196
|
+
"num-bigint",
|
|
1197
|
+
"num-integer",
|
|
1198
|
+
"num-traits",
|
|
1199
|
+
]
|
|
1200
|
+
|
|
985
1201
|
[[package]]
|
|
986
1202
|
name = "num-traits"
|
|
987
1203
|
version = "0.2.19"
|
|
@@ -1073,6 +1289,12 @@ version = "0.2.0"
|
|
|
1073
1289
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1074
1290
|
checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
|
|
1075
1291
|
|
|
1292
|
+
[[package]]
|
|
1293
|
+
name = "outref"
|
|
1294
|
+
version = "0.5.2"
|
|
1295
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1296
|
+
checksum = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e"
|
|
1297
|
+
|
|
1076
1298
|
[[package]]
|
|
1077
1299
|
name = "parking_lot"
|
|
1078
1300
|
version = "0.12.5"
|
|
@@ -1185,6 +1407,43 @@ dependencies = [
|
|
|
1185
1407
|
"thiserror",
|
|
1186
1408
|
]
|
|
1187
1409
|
|
|
1410
|
+
[[package]]
|
|
1411
|
+
name = "ref-cast"
|
|
1412
|
+
version = "1.0.25"
|
|
1413
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1414
|
+
checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d"
|
|
1415
|
+
dependencies = [
|
|
1416
|
+
"ref-cast-impl",
|
|
1417
|
+
]
|
|
1418
|
+
|
|
1419
|
+
[[package]]
|
|
1420
|
+
name = "ref-cast-impl"
|
|
1421
|
+
version = "1.0.25"
|
|
1422
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1423
|
+
checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da"
|
|
1424
|
+
dependencies = [
|
|
1425
|
+
"proc-macro2",
|
|
1426
|
+
"quote",
|
|
1427
|
+
"syn",
|
|
1428
|
+
]
|
|
1429
|
+
|
|
1430
|
+
[[package]]
|
|
1431
|
+
name = "referencing"
|
|
1432
|
+
version = "0.46.5"
|
|
1433
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1434
|
+
checksum = "69e4e17ef386c5383591d07623d3de49cbc601156e7582973e6db98d66a57de2"
|
|
1435
|
+
dependencies = [
|
|
1436
|
+
"ahash",
|
|
1437
|
+
"fluent-uri",
|
|
1438
|
+
"getrandom 0.3.4",
|
|
1439
|
+
"hashbrown 0.16.1",
|
|
1440
|
+
"itoa",
|
|
1441
|
+
"micromap",
|
|
1442
|
+
"parking_lot",
|
|
1443
|
+
"percent-encoding",
|
|
1444
|
+
"serde_json",
|
|
1445
|
+
]
|
|
1446
|
+
|
|
1188
1447
|
[[package]]
|
|
1189
1448
|
name = "regex"
|
|
1190
1449
|
version = "1.12.3"
|
|
@@ -1199,9 +1458,9 @@ dependencies = [
|
|
|
1199
1458
|
|
|
1200
1459
|
[[package]]
|
|
1201
1460
|
name = "regex-automata"
|
|
1202
|
-
version = "0.4.
|
|
1461
|
+
version = "0.4.14"
|
|
1203
1462
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1204
|
-
checksum = "
|
|
1463
|
+
checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f"
|
|
1205
1464
|
dependencies = [
|
|
1206
1465
|
"aho-corasick",
|
|
1207
1466
|
"memchr",
|
|
@@ -1730,6 +1989,12 @@ version = "0.2.5"
|
|
|
1730
1989
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1731
1990
|
checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
|
|
1732
1991
|
|
|
1992
|
+
[[package]]
|
|
1993
|
+
name = "unicode-general-category"
|
|
1994
|
+
version = "1.1.0"
|
|
1995
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1996
|
+
checksum = "0b993bddc193ae5bd0d623b49ec06ac3e9312875fdae725a975c51db1cc1677f"
|
|
1997
|
+
|
|
1733
1998
|
[[package]]
|
|
1734
1999
|
name = "unicode-ident"
|
|
1735
2000
|
version = "1.0.22"
|
|
@@ -1750,7 +2015,7 @@ checksum = "e9df2af067a7953e9c3831320f35c1cc0600c30d44d9f7a12b01db1cd88d6b47"
|
|
|
1750
2015
|
|
|
1751
2016
|
[[package]]
|
|
1752
2017
|
name = "upd"
|
|
1753
|
-
version = "0.1.
|
|
2018
|
+
version = "0.1.9"
|
|
1754
2019
|
dependencies = [
|
|
1755
2020
|
"anyhow",
|
|
1756
2021
|
"async-trait",
|
|
@@ -1760,6 +2025,7 @@ dependencies = [
|
|
|
1760
2025
|
"directories",
|
|
1761
2026
|
"futures",
|
|
1762
2027
|
"ignore",
|
|
2028
|
+
"jsonschema",
|
|
1763
2029
|
"pep440_rs",
|
|
1764
2030
|
"regex",
|
|
1765
2031
|
"reqwest",
|
|
@@ -1800,12 +2066,34 @@ version = "0.2.2"
|
|
|
1800
2066
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1801
2067
|
checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
|
|
1802
2068
|
|
|
2069
|
+
[[package]]
|
|
2070
|
+
name = "uuid-simd"
|
|
2071
|
+
version = "0.8.0"
|
|
2072
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2073
|
+
checksum = "23b082222b4f6619906941c17eb2297fff4c2fb96cb60164170522942a200bd8"
|
|
2074
|
+
dependencies = [
|
|
2075
|
+
"outref",
|
|
2076
|
+
"vsimd",
|
|
2077
|
+
]
|
|
2078
|
+
|
|
1803
2079
|
[[package]]
|
|
1804
2080
|
name = "vcpkg"
|
|
1805
2081
|
version = "0.2.15"
|
|
1806
2082
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1807
2083
|
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
|
|
1808
2084
|
|
|
2085
|
+
[[package]]
|
|
2086
|
+
name = "version_check"
|
|
2087
|
+
version = "0.9.5"
|
|
2088
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2089
|
+
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
|
|
2090
|
+
|
|
2091
|
+
[[package]]
|
|
2092
|
+
name = "vsimd"
|
|
2093
|
+
version = "0.8.0"
|
|
2094
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2095
|
+
checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64"
|
|
2096
|
+
|
|
1809
2097
|
[[package]]
|
|
1810
2098
|
name = "walkdir"
|
|
1811
2099
|
version = "2.5.0"
|
|
@@ -2052,6 +2340,26 @@ dependencies = [
|
|
|
2052
2340
|
"synstructure",
|
|
2053
2341
|
]
|
|
2054
2342
|
|
|
2343
|
+
[[package]]
|
|
2344
|
+
name = "zerocopy"
|
|
2345
|
+
version = "0.8.52"
|
|
2346
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2347
|
+
checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f"
|
|
2348
|
+
dependencies = [
|
|
2349
|
+
"zerocopy-derive",
|
|
2350
|
+
]
|
|
2351
|
+
|
|
2352
|
+
[[package]]
|
|
2353
|
+
name = "zerocopy-derive"
|
|
2354
|
+
version = "0.8.52"
|
|
2355
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2356
|
+
checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930"
|
|
2357
|
+
dependencies = [
|
|
2358
|
+
"proc-macro2",
|
|
2359
|
+
"quote",
|
|
2360
|
+
"syn",
|
|
2361
|
+
]
|
|
2362
|
+
|
|
2055
2363
|
[[package]]
|
|
2056
2364
|
name = "zerofrom"
|
|
2057
2365
|
version = "0.1.6"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "upd"
|
|
3
|
-
version = "0.1.
|
|
3
|
+
version = "0.1.9"
|
|
4
4
|
edition = "2024"
|
|
5
5
|
rust-version = "1.95.0"
|
|
6
6
|
description = "A fast dependency updater for Python, Node.js, Rust, Go, Ruby, Terraform, GitHub Actions, pre-commit, and Mise projects"
|
|
@@ -28,6 +28,10 @@ crate-type = ["cdylib", "rlib"]
|
|
|
28
28
|
name = "upd"
|
|
29
29
|
path = "src/main.rs"
|
|
30
30
|
|
|
31
|
+
[[bin]]
|
|
32
|
+
name = "upd-cli"
|
|
33
|
+
path = "src/bin/upd-cli.rs"
|
|
34
|
+
|
|
31
35
|
[dependencies]
|
|
32
36
|
# CLI
|
|
33
37
|
clap = { version = "4.6.1", features = ["derive"] }
|
|
@@ -62,6 +66,8 @@ futures = "0.3.32"
|
|
|
62
66
|
url = "2.5"
|
|
63
67
|
chrono = { version = "0.4", default-features = false, features = ["serde", "clock"] }
|
|
64
68
|
|
|
69
|
+
jsonschema = { version = "0.46.5", default-features = false }
|
|
70
|
+
|
|
65
71
|
[dev-dependencies]
|
|
66
72
|
tempfile = "3.27.0"
|
|
67
73
|
wiremock = "0.6"
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://clispec.dev/schema/v0.2.json",
|
|
4
|
+
"title": "The CLI Spec - Schema v0.2",
|
|
5
|
+
"description": "Machine-readable description of a CLI tool that conforms to The CLI Spec (https://clispec.dev). Emitted to stdout by the tool's `schema` subcommand.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["name", "version", "commands"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"clispec": {
|
|
10
|
+
"description": "Version of The CLI Spec schema this document conforms to.",
|
|
11
|
+
"type": "string",
|
|
12
|
+
"pattern": "^[0-9]+\\.[0-9]+$"
|
|
13
|
+
},
|
|
14
|
+
"name": {
|
|
15
|
+
"description": "The tool's invocation name (the binary name, without path).",
|
|
16
|
+
"type": "string",
|
|
17
|
+
"minLength": 1
|
|
18
|
+
},
|
|
19
|
+
"version": {
|
|
20
|
+
"description": "The tool's version. Free-form, but SemVer is recommended.",
|
|
21
|
+
"type": "string",
|
|
22
|
+
"minLength": 1
|
|
23
|
+
},
|
|
24
|
+
"description": {
|
|
25
|
+
"type": "string"
|
|
26
|
+
},
|
|
27
|
+
"global_args": {
|
|
28
|
+
"description": "Arguments accepted by every command (e.g. --output, --quiet, --profile). Listed once here instead of being repeated or omitted per command.",
|
|
29
|
+
"type": "array",
|
|
30
|
+
"items": { "$ref": "#/$defs/arg" }
|
|
31
|
+
},
|
|
32
|
+
"commands": {
|
|
33
|
+
"description": "Commands the tool exposes. Subcommands nest via the `subcommands` field.",
|
|
34
|
+
"type": "array",
|
|
35
|
+
"items": { "$ref": "#/$defs/command" }
|
|
36
|
+
},
|
|
37
|
+
"errors": {
|
|
38
|
+
"description": "The finite set of `kind` values the tool emits in structured errors. Consumers can write exhaustive handlers against this set.",
|
|
39
|
+
"type": "array",
|
|
40
|
+
"items": { "$ref": "#/$defs/error" }
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"$defs": {
|
|
44
|
+
"command": {
|
|
45
|
+
"type": "object",
|
|
46
|
+
"required": ["name"],
|
|
47
|
+
"properties": {
|
|
48
|
+
"name": { "type": "string", "minLength": 1 },
|
|
49
|
+
"description": { "type": "string" },
|
|
50
|
+
"mutating": {
|
|
51
|
+
"description": "Whether the command modifies state. Omitted means unknown - consumers MUST NOT assume an unmarked command is read-only. `mutating: false` is a contract: consumers may grant trust (e.g. auto-approval) based on it.",
|
|
52
|
+
"type": "boolean"
|
|
53
|
+
},
|
|
54
|
+
"stability": {
|
|
55
|
+
"description": "Stability of the command's contract.",
|
|
56
|
+
"type": "string",
|
|
57
|
+
"enum": ["stable", "beta", "experimental", "deprecated"]
|
|
58
|
+
},
|
|
59
|
+
"args": {
|
|
60
|
+
"type": "array",
|
|
61
|
+
"items": { "$ref": "#/$defs/arg" }
|
|
62
|
+
},
|
|
63
|
+
"output_fields": {
|
|
64
|
+
"description": "Fields present in the command's structured output, so consumers know the shape without invoking the command. For list commands, these describe one item of the `items` array, not the envelope.",
|
|
65
|
+
"type": "array",
|
|
66
|
+
"items": { "$ref": "#/$defs/field" }
|
|
67
|
+
},
|
|
68
|
+
"subcommands": {
|
|
69
|
+
"type": "array",
|
|
70
|
+
"items": { "$ref": "#/$defs/command" }
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
"arg": {
|
|
75
|
+
"type": "object",
|
|
76
|
+
"required": ["name", "type"],
|
|
77
|
+
"properties": {
|
|
78
|
+
"name": {
|
|
79
|
+
"description": "Flag (e.g. \"--status\") or positional name.",
|
|
80
|
+
"type": "string",
|
|
81
|
+
"minLength": 1
|
|
82
|
+
},
|
|
83
|
+
"type": {
|
|
84
|
+
"description": "Type name. Common values: \"string\", \"integer\", \"number\", \"boolean\", \"path\", \"string[]\".",
|
|
85
|
+
"type": "string"
|
|
86
|
+
},
|
|
87
|
+
"required": {
|
|
88
|
+
"type": "boolean",
|
|
89
|
+
"default": false
|
|
90
|
+
},
|
|
91
|
+
"default": {},
|
|
92
|
+
"enum": {
|
|
93
|
+
"type": "array"
|
|
94
|
+
},
|
|
95
|
+
"description": {
|
|
96
|
+
"type": "string"
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
"field": {
|
|
101
|
+
"type": "object",
|
|
102
|
+
"required": ["name", "type"],
|
|
103
|
+
"properties": {
|
|
104
|
+
"name": { "type": "string", "minLength": 1 },
|
|
105
|
+
"type": { "type": "string" },
|
|
106
|
+
"description": { "type": "string" }
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
"error": {
|
|
110
|
+
"type": "object",
|
|
111
|
+
"required": ["kind"],
|
|
112
|
+
"properties": {
|
|
113
|
+
"kind": {
|
|
114
|
+
"description": "Stable identifier consumers branch on. Snake_case by convention.",
|
|
115
|
+
"type": "string",
|
|
116
|
+
"minLength": 1,
|
|
117
|
+
"pattern": "^[a-z][a-z0-9_]*$"
|
|
118
|
+
},
|
|
119
|
+
"exit_code": {
|
|
120
|
+
"description": "The exit code the tool returns for this error kind. Consumers can branch on the exit code without parsing stderr.",
|
|
121
|
+
"type": "integer",
|
|
122
|
+
"minimum": 1,
|
|
123
|
+
"maximum": 255
|
|
124
|
+
},
|
|
125
|
+
"retryable": {
|
|
126
|
+
"description": "Whether a consumer should retry on this error.",
|
|
127
|
+
"type": "boolean"
|
|
128
|
+
},
|
|
129
|
+
"description": {
|
|
130
|
+
"type": "string"
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|