upd-cli 0.1.8__tar.gz → 0.1.10__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.8 → upd_cli-0.1.10}/CHANGELOG.md +14 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/Cargo.lock +312 -4
- {upd_cli-0.1.8 → upd_cli-0.1.10}/Cargo.toml +3 -1
- {upd_cli-0.1.8 → upd_cli-0.1.10}/PKG-INFO +1 -1
- upd_cli-0.1.10/fixtures/clispec-v0.2.json +161 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/cli.rs +71 -3
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/lib.rs +1 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/main.rs +138 -23
- upd_cli-0.1.10/src/schema.rs +418 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/tests/cooldown_e2e.rs +2 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/tests/discovery_no_ignore.rs +15 -2
- {upd_cli-0.1.8 → upd_cli-0.1.10}/tests/format_json.rs +35 -6
- {upd_cli-0.1.8 → upd_cli-0.1.10}/tests/help_text.rs +1 -1
- {upd_cli-0.1.8 → upd_cli-0.1.10}/tests/no_args_scope.rs +2 -2
- {upd_cli-0.1.8 → upd_cli-0.1.10}/tests/output_streams.rs +25 -6
- {upd_cli-0.1.8 → upd_cli-0.1.10}/.mise.toml +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/.pre-commit-config.yaml +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/.pre-commit-hooks.yaml +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/.rumdl.toml +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/LICENSE +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/Makefile +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/README.md +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/assets/logo-wide.svg +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/assets/logo.svg +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/pyproject.toml +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/python/upd_cli/__init__.py +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/python/upd_cli/__main__.py +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/python/upd_cli/py.typed +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/rust-toolchain.toml +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/align.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/audit/cache.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/audit/cvss.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/audit/mod.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/bin/upd-cli.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/cache.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/config.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/cooldown.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/http.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/interactive.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/lockfile.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/output.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/registry/crates_io.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/registry/github_releases.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/registry/go_proxy.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/registry/mock.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/registry/mod.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/registry/npm.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/registry/nuget.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/registry/pypi.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/registry/rubygems.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/registry/terraform.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/registry/utils.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/updater/cargo_toml.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/updater/csproj.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/updater/gemfile.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/updater/github_actions.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/updater/go_mod.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/updater/mise.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/updater/mod.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/updater/npm_range.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/updater/package_json.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/updater/pre_commit.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/updater/pyproject.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/updater/requirements.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/updater/terraform.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/version/compare.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/version/mod.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/version/pep440.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/version/semver_util.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/src/version/tag.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/tests/audit_offline.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/tests/audit_sarif.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/tests/audit_severity.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/tests/bump_filter.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/tests/exit_codes.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/tests/fix_audit.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/tests/interactive_tty.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/tests/invalid_positional.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/tests/package_filter.rs +0 -0
- {upd_cli-0.1.8 → upd_cli-0.1.10}/vership.toml +0 -0
|
@@ -18,6 +18,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
## [0.1.10](https://github.com/rvben/upd/compare/v0.1.9...v0.1.10) - 2026-06-11
|
|
24
|
+
|
|
25
|
+
### Added
|
|
26
|
+
|
|
27
|
+
- **schema**: declare updates_available as an outcome, not an error kind ([4f55a02](https://github.com/rvben/upd/commit/4f55a02e3b80384f19199691302f96ba4deb9246))
|
|
28
|
+
|
|
29
|
+
## [0.1.9](https://github.com/rvben/upd/compare/v0.1.8...v0.1.9) - 2026-06-11
|
|
30
|
+
|
|
31
|
+
### Added
|
|
32
|
+
|
|
33
|
+
- **clispec**: implement clispec v0.2 compliance (24/24) ([1c477cc](https://github.com/rvben/upd/commit/1c477cc11252dbad4f6d46fa7f393dcb48fb170d))
|
|
34
|
+
|
|
21
35
|
## [0.1.8](https://github.com/rvben/upd/compare/v0.1.7...v0.1.8) - 2026-04-30
|
|
22
36
|
|
|
23
37
|
### Added
|
|
@@ -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.10"
|
|
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.10"
|
|
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"
|
|
@@ -66,6 +66,8 @@ futures = "0.3.32"
|
|
|
66
66
|
url = "2.5"
|
|
67
67
|
chrono = { version = "0.4", default-features = false, features = ["serde", "clock"] }
|
|
68
68
|
|
|
69
|
+
jsonschema = { version = "0.46.5", default-features = false }
|
|
70
|
+
|
|
69
71
|
[dev-dependencies]
|
|
70
72
|
tempfile = "3.27.0"
|
|
71
73
|
wiremock = "0.6"
|
|
@@ -0,0 +1,161 @@
|
|
|
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
|
+
"outcomes": {
|
|
43
|
+
"description": "Documented non-zero exit codes that signal a data state rather than a failure (the diff/grep convention). An outcome exit writes no error envelope; stdout carries the result. Codes must not overlap with the exit codes declared in `errors`.",
|
|
44
|
+
"type": "array",
|
|
45
|
+
"items": { "$ref": "#/$defs/outcome" }
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"$defs": {
|
|
49
|
+
"command": {
|
|
50
|
+
"type": "object",
|
|
51
|
+
"required": ["name"],
|
|
52
|
+
"properties": {
|
|
53
|
+
"name": { "type": "string", "minLength": 1 },
|
|
54
|
+
"description": { "type": "string" },
|
|
55
|
+
"mutating": {
|
|
56
|
+
"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.",
|
|
57
|
+
"type": "boolean"
|
|
58
|
+
},
|
|
59
|
+
"stability": {
|
|
60
|
+
"description": "Stability of the command's contract.",
|
|
61
|
+
"type": "string",
|
|
62
|
+
"enum": ["stable", "beta", "experimental", "deprecated"]
|
|
63
|
+
},
|
|
64
|
+
"args": {
|
|
65
|
+
"type": "array",
|
|
66
|
+
"items": { "$ref": "#/$defs/arg" }
|
|
67
|
+
},
|
|
68
|
+
"output_fields": {
|
|
69
|
+
"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.",
|
|
70
|
+
"type": "array",
|
|
71
|
+
"items": { "$ref": "#/$defs/field" }
|
|
72
|
+
},
|
|
73
|
+
"subcommands": {
|
|
74
|
+
"type": "array",
|
|
75
|
+
"items": { "$ref": "#/$defs/command" }
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
"arg": {
|
|
80
|
+
"type": "object",
|
|
81
|
+
"required": ["name", "type"],
|
|
82
|
+
"properties": {
|
|
83
|
+
"name": {
|
|
84
|
+
"description": "Flag (e.g. \"--status\") or positional name.",
|
|
85
|
+
"type": "string",
|
|
86
|
+
"minLength": 1
|
|
87
|
+
},
|
|
88
|
+
"type": {
|
|
89
|
+
"description": "Type name. Common values: \"string\", \"integer\", \"number\", \"boolean\", \"path\", \"string[]\".",
|
|
90
|
+
"type": "string"
|
|
91
|
+
},
|
|
92
|
+
"required": {
|
|
93
|
+
"type": "boolean",
|
|
94
|
+
"default": false
|
|
95
|
+
},
|
|
96
|
+
"default": {},
|
|
97
|
+
"enum": {
|
|
98
|
+
"type": "array"
|
|
99
|
+
},
|
|
100
|
+
"description": {
|
|
101
|
+
"type": "string"
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
"field": {
|
|
106
|
+
"type": "object",
|
|
107
|
+
"required": ["name", "type"],
|
|
108
|
+
"properties": {
|
|
109
|
+
"name": { "type": "string", "minLength": 1 },
|
|
110
|
+
"type": { "type": "string" },
|
|
111
|
+
"description": { "type": "string" }
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
"outcome": {
|
|
115
|
+
"type": "object",
|
|
116
|
+
"required": ["code", "name"],
|
|
117
|
+
"properties": {
|
|
118
|
+
"code": {
|
|
119
|
+
"description": "The exit code the tool returns for this outcome. Consumers can branch on it without parsing anything.",
|
|
120
|
+
"type": "integer",
|
|
121
|
+
"minimum": 1,
|
|
122
|
+
"maximum": 255
|
|
123
|
+
},
|
|
124
|
+
"name": {
|
|
125
|
+
"description": "Stable identifier for the outcome. Snake_case by convention.",
|
|
126
|
+
"type": "string",
|
|
127
|
+
"minLength": 1,
|
|
128
|
+
"pattern": "^[a-z][a-z0-9_]*$"
|
|
129
|
+
},
|
|
130
|
+
"description": {
|
|
131
|
+
"type": "string"
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
"error": {
|
|
136
|
+
"type": "object",
|
|
137
|
+
"required": ["kind"],
|
|
138
|
+
"properties": {
|
|
139
|
+
"kind": {
|
|
140
|
+
"description": "Stable identifier consumers branch on. Snake_case by convention.",
|
|
141
|
+
"type": "string",
|
|
142
|
+
"minLength": 1,
|
|
143
|
+
"pattern": "^[a-z][a-z0-9_]*$"
|
|
144
|
+
},
|
|
145
|
+
"exit_code": {
|
|
146
|
+
"description": "The exit code the tool returns for this error kind. Consumers can branch on the exit code without parsing stderr.",
|
|
147
|
+
"type": "integer",
|
|
148
|
+
"minimum": 1,
|
|
149
|
+
"maximum": 255
|
|
150
|
+
},
|
|
151
|
+
"retryable": {
|
|
152
|
+
"description": "Whether a consumer should retry on this error.",
|
|
153
|
+
"type": "boolean"
|
|
154
|
+
},
|
|
155
|
+
"description": {
|
|
156
|
+
"type": "string"
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|