act-cli 0.7.6__tar.gz → 0.8.1__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.
- {act_cli-0.7.6 → act_cli-0.8.1}/Cargo.lock +148 -44
- {act_cli-0.7.6 → act_cli-0.8.1}/Cargo.toml +2 -2
- {act_cli-0.7.6 → act_cli-0.8.1}/PKG-INFO +1 -1
- {act_cli-0.7.6 → act_cli-0.8.1}/act-cli/Cargo.toml +1 -0
- {act_cli-0.7.6 → act_cli-0.8.1}/act-cli/src/main.rs +143 -26
- act_cli-0.8.1/act-cli/src/resolve.rs +42 -0
- {act_cli-0.7.6 → act_cli-0.8.1}/act-cli/src/rmcp_bridge.rs +23 -1
- act_cli-0.8.1/crates/act-store/Cargo.toml +30 -0
- act_cli-0.8.1/crates/act-store/README.md +125 -0
- act_cli-0.8.1/crates/act-store/src/fetch.rs +605 -0
- act_cli-0.8.1/crates/act-store/src/index.rs +302 -0
- act_cli-0.8.1/crates/act-store/src/layout.rs +111 -0
- act_cli-0.8.1/crates/act-store/src/lib.rs +61 -0
- act_cli-0.8.1/crates/act-store/src/lock.rs +76 -0
- act_cli-0.8.1/crates/act-store/src/provenance.rs +172 -0
- act_cli-0.8.1/crates/act-store/src/reference.rs +181 -0
- act_cli-0.8.1/crates/act-store/src/referrer.rs +64 -0
- act_cli-0.8.1/crates/act-store/src/store.rs +626 -0
- act_cli-0.7.6/act-cli/src/resolve.rs +0 -418
- {act_cli-0.7.6 → act_cli-0.8.1}/README.md +0 -0
- {act_cli-0.7.6 → act_cli-0.8.1}/act-cli/README.md +0 -0
- {act_cli-0.7.6 → act_cli-0.8.1}/act-cli/build.rs +0 -0
- {act_cli-0.7.6 → act_cli-0.8.1}/act-cli/src/config.rs +0 -0
- {act_cli-0.7.6 → act_cli-0.8.1}/act-cli/src/format.rs +0 -0
- {act_cli-0.7.6 → act_cli-0.8.1}/act-cli/src/http.rs +0 -0
- {act_cli-0.7.6 → act_cli-0.8.1}/act-cli/src/runtime/bindings/mod.rs +0 -0
- {act_cli-0.7.6 → act_cli-0.8.1}/act-cli/src/runtime/effective.rs +0 -0
- {act_cli-0.7.6 → act_cli-0.8.1}/act-cli/src/runtime/fs_matcher.rs +0 -0
- {act_cli-0.7.6 → act_cli-0.8.1}/act-cli/src/runtime/fs_policy.rs +0 -0
- {act_cli-0.7.6 → act_cli-0.8.1}/act-cli/src/runtime/http_client.rs +0 -0
- {act_cli-0.7.6 → act_cli-0.8.1}/act-cli/src/runtime/http_policy.rs +0 -0
- {act_cli-0.7.6 → act_cli-0.8.1}/act-cli/src/runtime/mod.rs +0 -0
- {act_cli-0.7.6 → act_cli-0.8.1}/act-cli/src/runtime/network.rs +0 -0
- {act_cli-0.7.6 → act_cli-0.8.1}/act-cli/src/runtime/sessions.rs +0 -0
- {act_cli-0.7.6 → act_cli-0.8.1}/act-cli/src/runtime/sockets_policy.rs +0 -0
- {act_cli-0.7.6 → act_cli-0.8.1}/act-cli/wit/deps/act-core/act-core.wit +0 -0
- {act_cli-0.7.6 → act_cli-0.8.1}/act-cli/wit/deps/act-tools/act-tools.wit +0 -0
- {act_cli-0.7.6 → act_cli-0.8.1}/act-cli/wit/deps.lock +0 -0
- {act_cli-0.7.6 → act_cli-0.8.1}/act-cli/wit/deps.toml +0 -0
- {act_cli-0.7.6 → act_cli-0.8.1}/act-cli/wit/world.wit +0 -0
- {act_cli-0.7.6 → act_cli-0.8.1}/pyproject.toml +0 -0
|
@@ -4,7 +4,7 @@ version = 4
|
|
|
4
4
|
|
|
5
5
|
[[package]]
|
|
6
6
|
name = "act-build"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.8.1"
|
|
8
8
|
dependencies = [
|
|
9
9
|
"act-types",
|
|
10
10
|
"anyhow",
|
|
@@ -14,11 +14,13 @@ dependencies = [
|
|
|
14
14
|
"dirs",
|
|
15
15
|
"flate2",
|
|
16
16
|
"globset",
|
|
17
|
+
"http",
|
|
17
18
|
"include_dir",
|
|
18
19
|
"json-patch",
|
|
19
20
|
"minijinja",
|
|
20
21
|
"oci-client",
|
|
21
|
-
"
|
|
22
|
+
"olpc-cjson",
|
|
23
|
+
"reqwest 0.13.4",
|
|
22
24
|
"serde",
|
|
23
25
|
"serde_json",
|
|
24
26
|
"sha2 0.11.0",
|
|
@@ -35,8 +37,9 @@ dependencies = [
|
|
|
35
37
|
|
|
36
38
|
[[package]]
|
|
37
39
|
name = "act-cli"
|
|
38
|
-
version = "0.
|
|
40
|
+
version = "0.8.1"
|
|
39
41
|
dependencies = [
|
|
42
|
+
"act-store",
|
|
40
43
|
"act-types",
|
|
41
44
|
"anyhow",
|
|
42
45
|
"axum",
|
|
@@ -57,7 +60,7 @@ dependencies = [
|
|
|
57
60
|
"owo-colors",
|
|
58
61
|
"path-clean",
|
|
59
62
|
"regex",
|
|
60
|
-
"reqwest",
|
|
63
|
+
"reqwest 0.13.4",
|
|
61
64
|
"rmcp",
|
|
62
65
|
"serde",
|
|
63
66
|
"serde_json",
|
|
@@ -78,6 +81,27 @@ dependencies = [
|
|
|
78
81
|
"wasmtime-wasi-http",
|
|
79
82
|
]
|
|
80
83
|
|
|
84
|
+
[[package]]
|
|
85
|
+
name = "act-store"
|
|
86
|
+
version = "0.1.1"
|
|
87
|
+
dependencies = [
|
|
88
|
+
"chrono",
|
|
89
|
+
"dirs",
|
|
90
|
+
"fs4",
|
|
91
|
+
"oci-client",
|
|
92
|
+
"oci-spec",
|
|
93
|
+
"regex",
|
|
94
|
+
"reqwest 0.12.28",
|
|
95
|
+
"serde",
|
|
96
|
+
"serde_json",
|
|
97
|
+
"sha2 0.11.0",
|
|
98
|
+
"tempfile",
|
|
99
|
+
"thiserror 2.0.18",
|
|
100
|
+
"tokio",
|
|
101
|
+
"tracing",
|
|
102
|
+
"url",
|
|
103
|
+
]
|
|
104
|
+
|
|
81
105
|
[[package]]
|
|
82
106
|
name = "act-types"
|
|
83
107
|
version = "0.7.1"
|
|
@@ -304,9 +328,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
|
|
|
304
328
|
|
|
305
329
|
[[package]]
|
|
306
330
|
name = "bitflags"
|
|
307
|
-
version = "2.
|
|
331
|
+
version = "2.12.1"
|
|
308
332
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
309
|
-
checksum = "
|
|
333
|
+
checksum = "84d7ced0ae9557296835c32bf1b1e02b44c746701f898460fb000d7eaa84f00a"
|
|
310
334
|
|
|
311
335
|
[[package]]
|
|
312
336
|
name = "block-buffer"
|
|
@@ -430,9 +454,9 @@ dependencies = [
|
|
|
430
454
|
|
|
431
455
|
[[package]]
|
|
432
456
|
name = "cc"
|
|
433
|
-
version = "1.2.
|
|
457
|
+
version = "1.2.63"
|
|
434
458
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
435
|
-
checksum = "
|
|
459
|
+
checksum = "556e016178bb5662a08681bbe0f00f8e17631781a4dfc8c45e466e4b185ec27f"
|
|
436
460
|
dependencies = [
|
|
437
461
|
"find-msvc-tools",
|
|
438
462
|
"jobserver",
|
|
@@ -1051,9 +1075,9 @@ dependencies = [
|
|
|
1051
1075
|
|
|
1052
1076
|
[[package]]
|
|
1053
1077
|
name = "displaydoc"
|
|
1054
|
-
version = "0.2.
|
|
1078
|
+
version = "0.2.6"
|
|
1055
1079
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1056
|
-
checksum = "
|
|
1080
|
+
checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f"
|
|
1057
1081
|
dependencies = [
|
|
1058
1082
|
"proc-macro2",
|
|
1059
1083
|
"quote",
|
|
@@ -1203,6 +1227,16 @@ dependencies = [
|
|
|
1203
1227
|
"windows-sys 0.59.0",
|
|
1204
1228
|
]
|
|
1205
1229
|
|
|
1230
|
+
[[package]]
|
|
1231
|
+
name = "fs4"
|
|
1232
|
+
version = "1.1.0"
|
|
1233
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1234
|
+
checksum = "7e72ed92b67c146290f88e9c89d60ca163ea417a446f61ffd7b72df3e7f1dfd5"
|
|
1235
|
+
dependencies = [
|
|
1236
|
+
"rustix",
|
|
1237
|
+
"windows-sys 0.61.2",
|
|
1238
|
+
]
|
|
1239
|
+
|
|
1206
1240
|
[[package]]
|
|
1207
1241
|
name = "fs_extra"
|
|
1208
1242
|
version = "1.3.0"
|
|
@@ -1481,9 +1515,9 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
|
|
|
1481
1515
|
|
|
1482
1516
|
[[package]]
|
|
1483
1517
|
name = "http"
|
|
1484
|
-
version = "1.4.
|
|
1518
|
+
version = "1.4.1"
|
|
1485
1519
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1486
|
-
checksum = "
|
|
1520
|
+
checksum = "8be7462df143984c4598a256ef469b251d7d7f9e271135073e78fc535414f3d0"
|
|
1487
1521
|
dependencies = [
|
|
1488
1522
|
"bytes",
|
|
1489
1523
|
"itoa",
|
|
@@ -1544,9 +1578,9 @@ dependencies = [
|
|
|
1544
1578
|
|
|
1545
1579
|
[[package]]
|
|
1546
1580
|
name = "hyper"
|
|
1547
|
-
version = "1.
|
|
1581
|
+
version = "1.10.1"
|
|
1548
1582
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1549
|
-
checksum = "
|
|
1583
|
+
checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498"
|
|
1550
1584
|
dependencies = [
|
|
1551
1585
|
"atomic-waker",
|
|
1552
1586
|
"bytes",
|
|
@@ -1577,6 +1611,7 @@ dependencies = [
|
|
|
1577
1611
|
"tokio",
|
|
1578
1612
|
"tokio-rustls",
|
|
1579
1613
|
"tower-service",
|
|
1614
|
+
"webpki-roots",
|
|
1580
1615
|
]
|
|
1581
1616
|
|
|
1582
1617
|
[[package]]
|
|
@@ -2026,9 +2061,9 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
|
|
|
2026
2061
|
|
|
2027
2062
|
[[package]]
|
|
2028
2063
|
name = "libredox"
|
|
2029
|
-
version = "0.1.
|
|
2064
|
+
version = "0.1.17"
|
|
2030
2065
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2031
|
-
checksum = "
|
|
2066
|
+
checksum = "f02ab6bace2054fb888a3c16f990117b579d14a3088e472d63c6011fa185c9d3"
|
|
2032
2067
|
dependencies = [
|
|
2033
2068
|
"libc",
|
|
2034
2069
|
]
|
|
@@ -2056,9 +2091,9 @@ dependencies = [
|
|
|
2056
2091
|
|
|
2057
2092
|
[[package]]
|
|
2058
2093
|
name = "log"
|
|
2059
|
-
version = "0.4.
|
|
2094
|
+
version = "0.4.31"
|
|
2060
2095
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2061
|
-
checksum = "
|
|
2096
|
+
checksum = "113b30b4cd05f7c06868fdb2854f66a7b9fece9a48425351cd532e810d74024f"
|
|
2062
2097
|
|
|
2063
2098
|
[[package]]
|
|
2064
2099
|
name = "lru-slab"
|
|
@@ -2098,9 +2133,9 @@ checksum = "4facc753ae494aeb6e3c22f839b158aebd4f9270f55cd3c79906c45476c47ab4"
|
|
|
2098
2133
|
|
|
2099
2134
|
[[package]]
|
|
2100
2135
|
name = "memchr"
|
|
2101
|
-
version = "2.8.
|
|
2136
|
+
version = "2.8.1"
|
|
2102
2137
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2103
|
-
checksum = "
|
|
2138
|
+
checksum = "6b947ae49db0d222b1dbc6b113ce7248a3fc3a6ca21b696717bfc000ba4484d8"
|
|
2104
2139
|
|
|
2105
2140
|
[[package]]
|
|
2106
2141
|
name = "memfd"
|
|
@@ -2145,9 +2180,9 @@ dependencies = [
|
|
|
2145
2180
|
|
|
2146
2181
|
[[package]]
|
|
2147
2182
|
name = "mio"
|
|
2148
|
-
version = "1.2.
|
|
2183
|
+
version = "1.2.1"
|
|
2149
2184
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2150
|
-
checksum = "
|
|
2185
|
+
checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda"
|
|
2151
2186
|
dependencies = [
|
|
2152
2187
|
"libc",
|
|
2153
2188
|
"wasi",
|
|
@@ -2219,7 +2254,7 @@ dependencies = [
|
|
|
2219
2254
|
"oci-spec",
|
|
2220
2255
|
"olpc-cjson",
|
|
2221
2256
|
"regex",
|
|
2222
|
-
"reqwest",
|
|
2257
|
+
"reqwest 0.13.4",
|
|
2223
2258
|
"serde",
|
|
2224
2259
|
"serde_json",
|
|
2225
2260
|
"sha2 0.11.0",
|
|
@@ -2722,9 +2757,47 @@ checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a"
|
|
|
2722
2757
|
|
|
2723
2758
|
[[package]]
|
|
2724
2759
|
name = "reqwest"
|
|
2725
|
-
version = "0.
|
|
2760
|
+
version = "0.12.28"
|
|
2726
2761
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2727
|
-
checksum = "
|
|
2762
|
+
checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147"
|
|
2763
|
+
dependencies = [
|
|
2764
|
+
"base64",
|
|
2765
|
+
"bytes",
|
|
2766
|
+
"futures-core",
|
|
2767
|
+
"http",
|
|
2768
|
+
"http-body",
|
|
2769
|
+
"http-body-util",
|
|
2770
|
+
"hyper",
|
|
2771
|
+
"hyper-rustls",
|
|
2772
|
+
"hyper-util",
|
|
2773
|
+
"js-sys",
|
|
2774
|
+
"log",
|
|
2775
|
+
"percent-encoding",
|
|
2776
|
+
"pin-project-lite",
|
|
2777
|
+
"quinn",
|
|
2778
|
+
"rustls",
|
|
2779
|
+
"rustls-pki-types",
|
|
2780
|
+
"serde",
|
|
2781
|
+
"serde_json",
|
|
2782
|
+
"serde_urlencoded",
|
|
2783
|
+
"sync_wrapper",
|
|
2784
|
+
"tokio",
|
|
2785
|
+
"tokio-rustls",
|
|
2786
|
+
"tower",
|
|
2787
|
+
"tower-http",
|
|
2788
|
+
"tower-service",
|
|
2789
|
+
"url",
|
|
2790
|
+
"wasm-bindgen",
|
|
2791
|
+
"wasm-bindgen-futures",
|
|
2792
|
+
"web-sys",
|
|
2793
|
+
"webpki-roots",
|
|
2794
|
+
]
|
|
2795
|
+
|
|
2796
|
+
[[package]]
|
|
2797
|
+
name = "reqwest"
|
|
2798
|
+
version = "0.13.4"
|
|
2799
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2800
|
+
checksum = "219c5811de6525e5416c7d5d53bb656d3afdbc6c5af816e0802bcfa42dbdc1c3"
|
|
2728
2801
|
dependencies = [
|
|
2729
2802
|
"base64",
|
|
2730
2803
|
"bytes",
|
|
@@ -2873,6 +2946,7 @@ checksum = "ef86cd5876211988985292b91c96a8f2d298df24e75989a43a3c73f2d4d8168b"
|
|
|
2873
2946
|
dependencies = [
|
|
2874
2947
|
"aws-lc-rs",
|
|
2875
2948
|
"once_cell",
|
|
2949
|
+
"ring",
|
|
2876
2950
|
"rustls-pki-types",
|
|
2877
2951
|
"rustls-webpki",
|
|
2878
2952
|
"subtle",
|
|
@@ -2881,9 +2955,9 @@ dependencies = [
|
|
|
2881
2955
|
|
|
2882
2956
|
[[package]]
|
|
2883
2957
|
name = "rustls-native-certs"
|
|
2884
|
-
version = "0.8.
|
|
2958
|
+
version = "0.8.4"
|
|
2885
2959
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2886
|
-
checksum = "
|
|
2960
|
+
checksum = "dab5152771c58876a2146916e53e35057e1a4dfa2b9df0f0305b07f611fdea4d"
|
|
2887
2961
|
dependencies = [
|
|
2888
2962
|
"openssl-probe",
|
|
2889
2963
|
"rustls-pki-types",
|
|
@@ -3207,9 +3281,9 @@ dependencies = [
|
|
|
3207
3281
|
|
|
3208
3282
|
[[package]]
|
|
3209
3283
|
name = "shlex"
|
|
3210
|
-
version = "
|
|
3284
|
+
version = "2.0.1"
|
|
3211
3285
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3212
|
-
checksum = "
|
|
3286
|
+
checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba"
|
|
3213
3287
|
|
|
3214
3288
|
[[package]]
|
|
3215
3289
|
name = "signal-hook-registry"
|
|
@@ -3269,9 +3343,9 @@ dependencies = [
|
|
|
3269
3343
|
|
|
3270
3344
|
[[package]]
|
|
3271
3345
|
name = "socket2"
|
|
3272
|
-
version = "0.6.
|
|
3346
|
+
version = "0.6.4"
|
|
3273
3347
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3274
|
-
checksum = "
|
|
3348
|
+
checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51"
|
|
3275
3349
|
dependencies = [
|
|
3276
3350
|
"libc",
|
|
3277
3351
|
"windows-sys 0.61.2",
|
|
@@ -3761,9 +3835,9 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
|
|
|
3761
3835
|
|
|
3762
3836
|
[[package]]
|
|
3763
3837
|
name = "typenum"
|
|
3764
|
-
version = "1.20.
|
|
3838
|
+
version = "1.20.1"
|
|
3765
3839
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3766
|
-
checksum = "
|
|
3840
|
+
checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20"
|
|
3767
3841
|
|
|
3768
3842
|
[[package]]
|
|
3769
3843
|
name = "unicase"
|
|
@@ -3842,9 +3916,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
|
|
|
3842
3916
|
|
|
3843
3917
|
[[package]]
|
|
3844
3918
|
name = "uuid"
|
|
3845
|
-
version = "1.23.
|
|
3919
|
+
version = "1.23.2"
|
|
3846
3920
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3847
|
-
checksum = "
|
|
3921
|
+
checksum = "d258b83ceec21034727ecee8c382cfa6c3e133699b0742c64571814fb420c9f7"
|
|
3848
3922
|
dependencies = [
|
|
3849
3923
|
"getrandom 0.4.2",
|
|
3850
3924
|
"js-sys",
|
|
@@ -4008,6 +4082,16 @@ dependencies = [
|
|
|
4008
4082
|
"wasmparser 0.250.0",
|
|
4009
4083
|
]
|
|
4010
4084
|
|
|
4085
|
+
[[package]]
|
|
4086
|
+
name = "wasm-encoder"
|
|
4087
|
+
version = "0.251.0"
|
|
4088
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
4089
|
+
checksum = "5a879a421bd17c528b74721b2abf4c62e8f1d1889c2ba8c3c50d02deaf2ce395"
|
|
4090
|
+
dependencies = [
|
|
4091
|
+
"leb128fmt",
|
|
4092
|
+
"wasmparser 0.251.0",
|
|
4093
|
+
]
|
|
4094
|
+
|
|
4011
4095
|
[[package]]
|
|
4012
4096
|
name = "wasm-metadata"
|
|
4013
4097
|
version = "0.244.0"
|
|
@@ -4071,6 +4155,17 @@ dependencies = [
|
|
|
4071
4155
|
"serde",
|
|
4072
4156
|
]
|
|
4073
4157
|
|
|
4158
|
+
[[package]]
|
|
4159
|
+
name = "wasmparser"
|
|
4160
|
+
version = "0.251.0"
|
|
4161
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
4162
|
+
checksum = "437970b35b1a85cfde9c74b2398352d8d653f3bd8e3a3db0c063ea8f5b4b36ff"
|
|
4163
|
+
dependencies = [
|
|
4164
|
+
"bitflags",
|
|
4165
|
+
"indexmap 2.14.0",
|
|
4166
|
+
"semver",
|
|
4167
|
+
]
|
|
4168
|
+
|
|
4074
4169
|
[[package]]
|
|
4075
4170
|
name = "wasmprinter"
|
|
4076
4171
|
version = "0.248.0"
|
|
@@ -4405,22 +4500,22 @@ dependencies = [
|
|
|
4405
4500
|
|
|
4406
4501
|
[[package]]
|
|
4407
4502
|
name = "wast"
|
|
4408
|
-
version = "
|
|
4503
|
+
version = "251.0.0"
|
|
4409
4504
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
4410
|
-
checksum = "
|
|
4505
|
+
checksum = "5cc7467dda0a96142eb2c980329dfb62480b1e1d3622fdeb1a44e2bca6ceed74"
|
|
4411
4506
|
dependencies = [
|
|
4412
4507
|
"bumpalo",
|
|
4413
4508
|
"leb128fmt",
|
|
4414
4509
|
"memchr",
|
|
4415
4510
|
"unicode-width",
|
|
4416
|
-
"wasm-encoder 0.
|
|
4511
|
+
"wasm-encoder 0.251.0",
|
|
4417
4512
|
]
|
|
4418
4513
|
|
|
4419
4514
|
[[package]]
|
|
4420
4515
|
name = "wat"
|
|
4421
|
-
version = "1.
|
|
4516
|
+
version = "1.251.0"
|
|
4422
4517
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
4423
|
-
checksum = "
|
|
4518
|
+
checksum = "81b1086c9e85b95bd6a229a928bc6c6d0662e42af0250c88d067b418831ea4d4"
|
|
4424
4519
|
dependencies = [
|
|
4425
4520
|
"wast",
|
|
4426
4521
|
]
|
|
@@ -4454,6 +4549,15 @@ dependencies = [
|
|
|
4454
4549
|
"rustls-pki-types",
|
|
4455
4550
|
]
|
|
4456
4551
|
|
|
4552
|
+
[[package]]
|
|
4553
|
+
name = "webpki-roots"
|
|
4554
|
+
version = "1.0.7"
|
|
4555
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
4556
|
+
checksum = "52f5ee44c96cf55f1b349600768e3ece3a8f26010c05265ab73f945bb1a2eb9d"
|
|
4557
|
+
dependencies = [
|
|
4558
|
+
"rustls-pki-types",
|
|
4559
|
+
]
|
|
4560
|
+
|
|
4457
4561
|
[[package]]
|
|
4458
4562
|
name = "winapi"
|
|
4459
4563
|
version = "0.3.9"
|
|
@@ -4955,18 +5059,18 @@ dependencies = [
|
|
|
4955
5059
|
|
|
4956
5060
|
[[package]]
|
|
4957
5061
|
name = "zerocopy"
|
|
4958
|
-
version = "0.8.
|
|
5062
|
+
version = "0.8.50"
|
|
4959
5063
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
4960
|
-
checksum = "
|
|
5064
|
+
checksum = "3b065d4f0e55f82fae73202e189638116a87c55ab6b8e6c2721e13dd9d854ad1"
|
|
4961
5065
|
dependencies = [
|
|
4962
5066
|
"zerocopy-derive",
|
|
4963
5067
|
]
|
|
4964
5068
|
|
|
4965
5069
|
[[package]]
|
|
4966
5070
|
name = "zerocopy-derive"
|
|
4967
|
-
version = "0.8.
|
|
5071
|
+
version = "0.8.50"
|
|
4968
5072
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
4969
|
-
checksum = "
|
|
5073
|
+
checksum = "0b631b19d36a892ab55420c92dbc83ccd79274f25be714855d3074aa71cab639"
|
|
4970
5074
|
dependencies = [
|
|
4971
5075
|
"proc-macro2",
|
|
4972
5076
|
"quote",
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
[workspace]
|
|
2
|
-
members = ["act-cli"]
|
|
2
|
+
members = ["act-cli", "crates/act-store"]
|
|
3
3
|
resolver = "3"
|
|
4
4
|
|
|
5
5
|
[workspace.package]
|
|
6
|
-
version = "0.
|
|
6
|
+
version = "0.8.1"
|
|
7
7
|
edition = "2024"
|
|
8
8
|
license = "MIT OR Apache-2.0"
|
|
9
9
|
repository = "https://github.com/actcore/act-cli"
|
|
@@ -185,6 +185,27 @@ enum Command {
|
|
|
185
185
|
/// the session lives as long as the host).
|
|
186
186
|
#[command(subcommand)]
|
|
187
187
|
Session(SessionCommand),
|
|
188
|
+
/// Manage the local component store (list, update, gc).
|
|
189
|
+
#[command(subcommand)]
|
|
190
|
+
Store(StoreCommand),
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
#[derive(clap::Subcommand)]
|
|
194
|
+
enum StoreCommand {
|
|
195
|
+
/// List components in the local store.
|
|
196
|
+
List {
|
|
197
|
+
/// Output format.
|
|
198
|
+
#[arg(long, value_enum, default_value_t = OutputFormat::Text)]
|
|
199
|
+
format: OutputFormat,
|
|
200
|
+
},
|
|
201
|
+
/// Re-resolve stored components and re-pull any whose digest moved.
|
|
202
|
+
Update {
|
|
203
|
+
/// A single ref to update (omit to update all stored components).
|
|
204
|
+
#[arg(name = "ref")]
|
|
205
|
+
reference: Option<ComponentRef>,
|
|
206
|
+
},
|
|
207
|
+
/// Delete store blobs no longer referenced by any component.
|
|
208
|
+
Gc,
|
|
188
209
|
}
|
|
189
210
|
|
|
190
211
|
#[derive(clap::Subcommand)]
|
|
@@ -220,6 +241,7 @@ async fn main() -> Result<()> {
|
|
|
220
241
|
Command::Session(sub) => match sub {
|
|
221
242
|
SessionCommand::OpenArgsSchema { opts, .. } => opts.config.as_deref(),
|
|
222
243
|
},
|
|
244
|
+
Command::Store(_) => None,
|
|
223
245
|
};
|
|
224
246
|
let log_level = config::load_config(config_path)
|
|
225
247
|
.ok()
|
|
@@ -269,6 +291,11 @@ async fn main() -> Result<()> {
|
|
|
269
291
|
cmd_session_open_args_schema(component, opts).await
|
|
270
292
|
}
|
|
271
293
|
},
|
|
294
|
+
Command::Store(sub) => match sub {
|
|
295
|
+
StoreCommand::List { format } => cmd_list(format).await,
|
|
296
|
+
StoreCommand::Update { reference } => cmd_update(reference).await,
|
|
297
|
+
StoreCommand::Gc => cmd_gc().await,
|
|
298
|
+
},
|
|
272
299
|
}
|
|
273
300
|
}
|
|
274
301
|
|
|
@@ -804,42 +831,132 @@ async fn cmd_pull(
|
|
|
804
831
|
output: Option<PathBuf>,
|
|
805
832
|
output_from_ref: bool,
|
|
806
833
|
) -> Result<()> {
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
let
|
|
834
|
+
let store = resolve::open_store()?;
|
|
835
|
+
let reference_str = reference.to_string();
|
|
836
|
+
let stored = act_store::pull(&store, &reference_str)
|
|
837
|
+
.await
|
|
838
|
+
.with_context(|| format!("pulling {reference_str}"))?;
|
|
839
|
+
|
|
840
|
+
// Path to the stored wasm blob (read-through hit; no re-pull).
|
|
841
|
+
let stored_path = act_store::ensure(&store, &reference_str).await?;
|
|
842
|
+
|
|
843
|
+
let export = output.or_else(|| {
|
|
844
|
+
output_from_ref.then(|| {
|
|
845
|
+
let ref_str = reference.to_string();
|
|
846
|
+
let base = ref_str
|
|
847
|
+
.rsplit('/')
|
|
848
|
+
.next()
|
|
849
|
+
.unwrap_or(&ref_str)
|
|
850
|
+
.split(':')
|
|
851
|
+
.next()
|
|
852
|
+
.unwrap_or(&ref_str);
|
|
853
|
+
let filename = if base.ends_with(".wasm") {
|
|
854
|
+
base.to_string()
|
|
855
|
+
} else {
|
|
856
|
+
format!("{base}.wasm")
|
|
857
|
+
};
|
|
858
|
+
PathBuf::from(filename)
|
|
859
|
+
})
|
|
860
|
+
});
|
|
810
861
|
|
|
811
|
-
if let Some(out) =
|
|
812
|
-
tokio::fs::copy(&
|
|
813
|
-
.await
|
|
814
|
-
.with_context(|| format!("copying to {}", out.display()))?;
|
|
815
|
-
println!("{}", out.display());
|
|
816
|
-
} else if output_from_ref {
|
|
817
|
-
let ref_str = reference.to_string();
|
|
818
|
-
let base = ref_str
|
|
819
|
-
.rsplit('/')
|
|
820
|
-
.next()
|
|
821
|
-
.unwrap_or(&ref_str)
|
|
822
|
-
.split(':')
|
|
823
|
-
.next()
|
|
824
|
-
.unwrap_or(&ref_str);
|
|
825
|
-
let filename = if base.ends_with(".wasm") {
|
|
826
|
-
base.to_string()
|
|
827
|
-
} else {
|
|
828
|
-
format!("{base}.wasm")
|
|
829
|
-
};
|
|
830
|
-
let out = PathBuf::from(&filename);
|
|
831
|
-
tokio::fs::copy(&cached_path, &out)
|
|
862
|
+
if let Some(out) = export {
|
|
863
|
+
tokio::fs::copy(&stored_path, &out)
|
|
832
864
|
.await
|
|
833
865
|
.with_context(|| format!("copying to {}", out.display()))?;
|
|
834
866
|
println!("{}", out.display());
|
|
835
867
|
} else {
|
|
836
|
-
|
|
837
|
-
|
|
868
|
+
println!(
|
|
869
|
+
"{} -> {} (sha256:{})",
|
|
870
|
+
reference_str,
|
|
871
|
+
stored_path.display(),
|
|
872
|
+
stored.manifest_digest
|
|
873
|
+
);
|
|
874
|
+
}
|
|
875
|
+
Ok(())
|
|
876
|
+
}
|
|
877
|
+
|
|
878
|
+
// ── Store subcommands ─────────────────────────────────────────────────────────
|
|
879
|
+
|
|
880
|
+
async fn cmd_list(format: OutputFormat) -> Result<()> {
|
|
881
|
+
let store = resolve::open_store()?;
|
|
882
|
+
let mut items = store.list()?;
|
|
883
|
+
items.sort_by(|a, b| source_ref(&a.provenance).cmp(source_ref(&b.provenance)));
|
|
884
|
+
match format {
|
|
885
|
+
OutputFormat::Json => {
|
|
886
|
+
let rows: Vec<_> = items
|
|
887
|
+
.iter()
|
|
888
|
+
.map(|s| {
|
|
889
|
+
serde_json::json!({
|
|
890
|
+
"ref": source_ref(&s.provenance),
|
|
891
|
+
"digest": s.provenance.digest,
|
|
892
|
+
"name": s.provenance.name,
|
|
893
|
+
"version": s.provenance.version,
|
|
894
|
+
"fetched_at": s.provenance.fetched_at,
|
|
895
|
+
})
|
|
896
|
+
})
|
|
897
|
+
.collect();
|
|
898
|
+
println!("{}", serde_json::to_string_pretty(&rows)?);
|
|
899
|
+
}
|
|
900
|
+
OutputFormat::Text => {
|
|
901
|
+
if items.is_empty() {
|
|
902
|
+
println!("(store is empty)");
|
|
903
|
+
}
|
|
904
|
+
for s in &items {
|
|
905
|
+
println!(
|
|
906
|
+
"{}\t{}\t{}",
|
|
907
|
+
source_ref(&s.provenance),
|
|
908
|
+
s.provenance.version.as_deref().unwrap_or("-"),
|
|
909
|
+
s.provenance.digest
|
|
910
|
+
);
|
|
911
|
+
}
|
|
912
|
+
}
|
|
838
913
|
}
|
|
914
|
+
Ok(())
|
|
915
|
+
}
|
|
839
916
|
|
|
917
|
+
async fn cmd_update(reference: Option<ComponentRef>) -> Result<()> {
|
|
918
|
+
let store = resolve::open_store()?;
|
|
919
|
+
let refs: Vec<String> = match reference {
|
|
920
|
+
Some(r) => vec![r.to_string()],
|
|
921
|
+
None => store
|
|
922
|
+
.list()?
|
|
923
|
+
.iter()
|
|
924
|
+
.map(|s| source_ref(&s.provenance).to_string())
|
|
925
|
+
.collect(),
|
|
926
|
+
};
|
|
927
|
+
if refs.is_empty() {
|
|
928
|
+
println!("(store is empty)");
|
|
929
|
+
return Ok(());
|
|
930
|
+
}
|
|
931
|
+
for r in refs {
|
|
932
|
+
match act_store::update(&store, &r).await {
|
|
933
|
+
Ok(act_store::UpdateOutcome::Unchanged) => println!("{r}\tunchanged"),
|
|
934
|
+
Ok(act_store::UpdateOutcome::Updated { from, to }) => {
|
|
935
|
+
println!("{r}\tupdated {from} -> {to}")
|
|
936
|
+
}
|
|
937
|
+
Ok(act_store::UpdateOutcome::NotStored) => println!("{r}\tnot stored"),
|
|
938
|
+
Err(e) => eprintln!("{r}\tERROR: {e}"),
|
|
939
|
+
}
|
|
940
|
+
}
|
|
941
|
+
Ok(())
|
|
942
|
+
}
|
|
943
|
+
|
|
944
|
+
async fn cmd_gc() -> Result<()> {
|
|
945
|
+
let store = resolve::open_store()?;
|
|
946
|
+
let removed = store.gc()?;
|
|
947
|
+
println!("removed {removed} unreferenced blob(s)");
|
|
840
948
|
Ok(())
|
|
841
949
|
}
|
|
842
950
|
|
|
951
|
+
/// The source ref (as typed) recorded in a provenance.
|
|
952
|
+
fn source_ref(p: &act_store::Provenance) -> &str {
|
|
953
|
+
match &p.source {
|
|
954
|
+
act_store::Source::Oci { reference } => reference,
|
|
955
|
+
act_store::Source::Http { url, .. } => url,
|
|
956
|
+
act_store::Source::Local { path } => path,
|
|
957
|
+
}
|
|
958
|
+
}
|
|
959
|
+
|
|
843
960
|
#[cfg(test)]
|
|
844
961
|
mod tests {
|
|
845
962
|
use super::*;
|