Author:
Hash:
Timestamp:
+969 -0 +/-10 browse
Kevin Schoon [me@kevinschoon.com]
6c70103e13ed54b74e2faf20f07fc7fa8257d2d6
Mon, 24 Mar 2025 13:11:11 +0000 (7 months ago)
| 1 | diff --git a/.gitignore b/.gitignore |
| 2 | new file mode 100644 |
| 3 | index 0000000..ea8c4bf |
| 4 | --- /dev/null |
| 5 | +++ b/.gitignore |
| 6 | @@ -0,0 +1 @@ |
| 7 | + /target |
| 8 | diff --git a/Cargo.lock b/Cargo.lock |
| 9 | new file mode 100644 |
| 10 | index 0000000..8d37510 |
| 11 | --- /dev/null |
| 12 | +++ b/Cargo.lock |
| 13 | @@ -0,0 +1,828 @@ |
| 14 | + # This file is automatically @generated by Cargo. |
| 15 | + # It is not intended for manual editing. |
| 16 | + version = 4 |
| 17 | + |
| 18 | + [[package]] |
| 19 | + name = "addr2line" |
| 20 | + version = "0.24.2" |
| 21 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 22 | + checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" |
| 23 | + dependencies = [ |
| 24 | + "gimli", |
| 25 | + ] |
| 26 | + |
| 27 | + [[package]] |
| 28 | + name = "adler2" |
| 29 | + version = "2.0.0" |
| 30 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 31 | + checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" |
| 32 | + |
| 33 | + [[package]] |
| 34 | + name = "aho-corasick" |
| 35 | + version = "1.1.3" |
| 36 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 37 | + checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" |
| 38 | + dependencies = [ |
| 39 | + "memchr", |
| 40 | + ] |
| 41 | + |
| 42 | + [[package]] |
| 43 | + name = "axum" |
| 44 | + version = "0.8.1" |
| 45 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 46 | + checksum = "6d6fd624c75e18b3b4c6b9caf42b1afe24437daaee904069137d8bab077be8b8" |
| 47 | + dependencies = [ |
| 48 | + "axum-core", |
| 49 | + "bytes", |
| 50 | + "form_urlencoded", |
| 51 | + "futures-util", |
| 52 | + "http", |
| 53 | + "http-body", |
| 54 | + "http-body-util", |
| 55 | + "hyper", |
| 56 | + "hyper-util", |
| 57 | + "itoa", |
| 58 | + "matchit", |
| 59 | + "memchr", |
| 60 | + "mime", |
| 61 | + "percent-encoding", |
| 62 | + "pin-project-lite", |
| 63 | + "rustversion", |
| 64 | + "serde", |
| 65 | + "serde_json", |
| 66 | + "serde_path_to_error", |
| 67 | + "serde_urlencoded", |
| 68 | + "sync_wrapper", |
| 69 | + "tokio", |
| 70 | + "tower", |
| 71 | + "tower-layer", |
| 72 | + "tower-service", |
| 73 | + "tracing", |
| 74 | + ] |
| 75 | + |
| 76 | + [[package]] |
| 77 | + name = "axum-core" |
| 78 | + version = "0.5.0" |
| 79 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 80 | + checksum = "df1362f362fd16024ae199c1970ce98f9661bf5ef94b9808fee734bc3698b733" |
| 81 | + dependencies = [ |
| 82 | + "bytes", |
| 83 | + "futures-util", |
| 84 | + "http", |
| 85 | + "http-body", |
| 86 | + "http-body-util", |
| 87 | + "mime", |
| 88 | + "pin-project-lite", |
| 89 | + "rustversion", |
| 90 | + "sync_wrapper", |
| 91 | + "tower-layer", |
| 92 | + "tower-service", |
| 93 | + "tracing", |
| 94 | + ] |
| 95 | + |
| 96 | + [[package]] |
| 97 | + name = "backtrace" |
| 98 | + version = "0.3.74" |
| 99 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 100 | + checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" |
| 101 | + dependencies = [ |
| 102 | + "addr2line", |
| 103 | + "cfg-if", |
| 104 | + "libc", |
| 105 | + "miniz_oxide", |
| 106 | + "object", |
| 107 | + "rustc-demangle", |
| 108 | + "windows-targets", |
| 109 | + ] |
| 110 | + |
| 111 | + [[package]] |
| 112 | + name = "bytes" |
| 113 | + version = "1.10.1" |
| 114 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 115 | + checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" |
| 116 | + |
| 117 | + [[package]] |
| 118 | + name = "cfg-if" |
| 119 | + version = "1.0.0" |
| 120 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 121 | + checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" |
| 122 | + |
| 123 | + [[package]] |
| 124 | + name = "darling" |
| 125 | + version = "0.20.10" |
| 126 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 127 | + checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" |
| 128 | + dependencies = [ |
| 129 | + "darling_core", |
| 130 | + "darling_macro", |
| 131 | + ] |
| 132 | + |
| 133 | + [[package]] |
| 134 | + name = "darling_core" |
| 135 | + version = "0.20.10" |
| 136 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 137 | + checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" |
| 138 | + dependencies = [ |
| 139 | + "fnv", |
| 140 | + "ident_case", |
| 141 | + "proc-macro2", |
| 142 | + "quote", |
| 143 | + "strsim", |
| 144 | + "syn", |
| 145 | + ] |
| 146 | + |
| 147 | + [[package]] |
| 148 | + name = "darling_macro" |
| 149 | + version = "0.20.10" |
| 150 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 151 | + checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" |
| 152 | + dependencies = [ |
| 153 | + "darling_core", |
| 154 | + "quote", |
| 155 | + "syn", |
| 156 | + ] |
| 157 | + |
| 158 | + [[package]] |
| 159 | + name = "derive_builder" |
| 160 | + version = "0.20.2" |
| 161 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 162 | + checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" |
| 163 | + dependencies = [ |
| 164 | + "derive_builder_macro", |
| 165 | + ] |
| 166 | + |
| 167 | + [[package]] |
| 168 | + name = "derive_builder_core" |
| 169 | + version = "0.20.2" |
| 170 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 171 | + checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" |
| 172 | + dependencies = [ |
| 173 | + "darling", |
| 174 | + "proc-macro2", |
| 175 | + "quote", |
| 176 | + "syn", |
| 177 | + ] |
| 178 | + |
| 179 | + [[package]] |
| 180 | + name = "derive_builder_macro" |
| 181 | + version = "0.20.2" |
| 182 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 183 | + checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" |
| 184 | + dependencies = [ |
| 185 | + "derive_builder_core", |
| 186 | + "syn", |
| 187 | + ] |
| 188 | + |
| 189 | + [[package]] |
| 190 | + name = "fnv" |
| 191 | + version = "1.0.7" |
| 192 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 193 | + checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" |
| 194 | + |
| 195 | + [[package]] |
| 196 | + name = "form_urlencoded" |
| 197 | + version = "1.2.1" |
| 198 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 199 | + checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" |
| 200 | + dependencies = [ |
| 201 | + "percent-encoding", |
| 202 | + ] |
| 203 | + |
| 204 | + [[package]] |
| 205 | + name = "futures-channel" |
| 206 | + version = "0.3.31" |
| 207 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 208 | + checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" |
| 209 | + dependencies = [ |
| 210 | + "futures-core", |
| 211 | + ] |
| 212 | + |
| 213 | + [[package]] |
| 214 | + name = "futures-core" |
| 215 | + version = "0.3.31" |
| 216 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 217 | + checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" |
| 218 | + |
| 219 | + [[package]] |
| 220 | + name = "futures-task" |
| 221 | + version = "0.3.31" |
| 222 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 223 | + checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" |
| 224 | + |
| 225 | + [[package]] |
| 226 | + name = "futures-util" |
| 227 | + version = "0.3.31" |
| 228 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 229 | + checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" |
| 230 | + dependencies = [ |
| 231 | + "futures-core", |
| 232 | + "futures-task", |
| 233 | + "pin-project-lite", |
| 234 | + "pin-utils", |
| 235 | + ] |
| 236 | + |
| 237 | + [[package]] |
| 238 | + name = "getset" |
| 239 | + version = "0.1.5" |
| 240 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 241 | + checksum = "f3586f256131df87204eb733da72e3d3eb4f343c639f4b7be279ac7c48baeafe" |
| 242 | + dependencies = [ |
| 243 | + "proc-macro-error2", |
| 244 | + "proc-macro2", |
| 245 | + "quote", |
| 246 | + "syn", |
| 247 | + ] |
| 248 | + |
| 249 | + [[package]] |
| 250 | + name = "gimli" |
| 251 | + version = "0.31.1" |
| 252 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 253 | + checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" |
| 254 | + |
| 255 | + [[package]] |
| 256 | + name = "heck" |
| 257 | + version = "0.5.0" |
| 258 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 259 | + checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" |
| 260 | + |
| 261 | + [[package]] |
| 262 | + name = "http" |
| 263 | + version = "1.3.1" |
| 264 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 265 | + checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" |
| 266 | + dependencies = [ |
| 267 | + "bytes", |
| 268 | + "fnv", |
| 269 | + "itoa", |
| 270 | + ] |
| 271 | + |
| 272 | + [[package]] |
| 273 | + name = "http-body" |
| 274 | + version = "1.0.1" |
| 275 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 276 | + checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" |
| 277 | + dependencies = [ |
| 278 | + "bytes", |
| 279 | + "http", |
| 280 | + ] |
| 281 | + |
| 282 | + [[package]] |
| 283 | + name = "http-body-util" |
| 284 | + version = "0.1.3" |
| 285 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 286 | + checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" |
| 287 | + dependencies = [ |
| 288 | + "bytes", |
| 289 | + "futures-core", |
| 290 | + "http", |
| 291 | + "http-body", |
| 292 | + "pin-project-lite", |
| 293 | + ] |
| 294 | + |
| 295 | + [[package]] |
| 296 | + name = "httparse" |
| 297 | + version = "1.10.1" |
| 298 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 299 | + checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" |
| 300 | + |
| 301 | + [[package]] |
| 302 | + name = "httpdate" |
| 303 | + version = "1.0.3" |
| 304 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 305 | + checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" |
| 306 | + |
| 307 | + [[package]] |
| 308 | + name = "hyper" |
| 309 | + version = "1.6.0" |
| 310 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 311 | + checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" |
| 312 | + dependencies = [ |
| 313 | + "bytes", |
| 314 | + "futures-channel", |
| 315 | + "futures-util", |
| 316 | + "http", |
| 317 | + "http-body", |
| 318 | + "httparse", |
| 319 | + "httpdate", |
| 320 | + "itoa", |
| 321 | + "pin-project-lite", |
| 322 | + "smallvec", |
| 323 | + "tokio", |
| 324 | + ] |
| 325 | + |
| 326 | + [[package]] |
| 327 | + name = "hyper-util" |
| 328 | + version = "0.1.10" |
| 329 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 330 | + checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" |
| 331 | + dependencies = [ |
| 332 | + "bytes", |
| 333 | + "futures-util", |
| 334 | + "http", |
| 335 | + "http-body", |
| 336 | + "hyper", |
| 337 | + "pin-project-lite", |
| 338 | + "tokio", |
| 339 | + "tower-service", |
| 340 | + ] |
| 341 | + |
| 342 | + [[package]] |
| 343 | + name = "ident_case" |
| 344 | + version = "1.0.1" |
| 345 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 346 | + checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" |
| 347 | + |
| 348 | + [[package]] |
| 349 | + name = "itoa" |
| 350 | + version = "1.0.15" |
| 351 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 352 | + checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" |
| 353 | + |
| 354 | + [[package]] |
| 355 | + name = "libc" |
| 356 | + version = "0.2.171" |
| 357 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 358 | + checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" |
| 359 | + |
| 360 | + [[package]] |
| 361 | + name = "log" |
| 362 | + version = "0.4.26" |
| 363 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 364 | + checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e" |
| 365 | + |
| 366 | + [[package]] |
| 367 | + name = "matchit" |
| 368 | + version = "0.8.4" |
| 369 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 370 | + checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" |
| 371 | + |
| 372 | + [[package]] |
| 373 | + name = "memchr" |
| 374 | + version = "2.7.4" |
| 375 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 376 | + checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" |
| 377 | + |
| 378 | + [[package]] |
| 379 | + name = "mime" |
| 380 | + version = "0.3.17" |
| 381 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 382 | + checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" |
| 383 | + |
| 384 | + [[package]] |
| 385 | + name = "miniz_oxide" |
| 386 | + version = "0.8.5" |
| 387 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 388 | + checksum = "8e3e04debbb59698c15bacbb6d93584a8c0ca9cc3213cb423d31f760d8843ce5" |
| 389 | + dependencies = [ |
| 390 | + "adler2", |
| 391 | + ] |
| 392 | + |
| 393 | + [[package]] |
| 394 | + name = "mio" |
| 395 | + version = "1.0.3" |
| 396 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 397 | + checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" |
| 398 | + dependencies = [ |
| 399 | + "libc", |
| 400 | + "wasi", |
| 401 | + "windows-sys", |
| 402 | + ] |
| 403 | + |
| 404 | + [[package]] |
| 405 | + name = "object" |
| 406 | + version = "0.36.7" |
| 407 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 408 | + checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" |
| 409 | + dependencies = [ |
| 410 | + "memchr", |
| 411 | + ] |
| 412 | + |
| 413 | + [[package]] |
| 414 | + name = "oci-spec" |
| 415 | + version = "0.7.1" |
| 416 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 417 | + checksum = "da406e58efe2eb5986a6139626d611ce426e5324a824133d76367c765cf0b882" |
| 418 | + dependencies = [ |
| 419 | + "derive_builder", |
| 420 | + "getset", |
| 421 | + "regex", |
| 422 | + "serde", |
| 423 | + "serde_json", |
| 424 | + "strum", |
| 425 | + "strum_macros", |
| 426 | + "thiserror", |
| 427 | + ] |
| 428 | + |
| 429 | + [[package]] |
| 430 | + name = "once_cell" |
| 431 | + version = "1.21.1" |
| 432 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 433 | + checksum = "d75b0bedcc4fe52caa0e03d9f1151a323e4aa5e2d78ba3580400cd3c9e2bc4bc" |
| 434 | + |
| 435 | + [[package]] |
| 436 | + name = "papyri-axum" |
| 437 | + version = "0.1.0" |
| 438 | + dependencies = [ |
| 439 | + "axum", |
| 440 | + "oci-spec", |
| 441 | + ] |
| 442 | + |
| 443 | + [[package]] |
| 444 | + name = "papyri-common" |
| 445 | + version = "0.1.0" |
| 446 | + |
| 447 | + [[package]] |
| 448 | + name = "percent-encoding" |
| 449 | + version = "2.3.1" |
| 450 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 451 | + checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" |
| 452 | + |
| 453 | + [[package]] |
| 454 | + name = "pin-project-lite" |
| 455 | + version = "0.2.16" |
| 456 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 457 | + checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" |
| 458 | + |
| 459 | + [[package]] |
| 460 | + name = "pin-utils" |
| 461 | + version = "0.1.0" |
| 462 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 463 | + checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" |
| 464 | + |
| 465 | + [[package]] |
| 466 | + name = "proc-macro-error-attr2" |
| 467 | + version = "2.0.0" |
| 468 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 469 | + checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" |
| 470 | + dependencies = [ |
| 471 | + "proc-macro2", |
| 472 | + "quote", |
| 473 | + ] |
| 474 | + |
| 475 | + [[package]] |
| 476 | + name = "proc-macro-error2" |
| 477 | + version = "2.0.1" |
| 478 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 479 | + checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" |
| 480 | + dependencies = [ |
| 481 | + "proc-macro-error-attr2", |
| 482 | + "proc-macro2", |
| 483 | + "quote", |
| 484 | + "syn", |
| 485 | + ] |
| 486 | + |
| 487 | + [[package]] |
| 488 | + name = "proc-macro2" |
| 489 | + version = "1.0.94" |
| 490 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 491 | + checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" |
| 492 | + dependencies = [ |
| 493 | + "unicode-ident", |
| 494 | + ] |
| 495 | + |
| 496 | + [[package]] |
| 497 | + name = "quote" |
| 498 | + version = "1.0.40" |
| 499 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 500 | + checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" |
| 501 | + dependencies = [ |
| 502 | + "proc-macro2", |
| 503 | + ] |
| 504 | + |
| 505 | + [[package]] |
| 506 | + name = "regex" |
| 507 | + version = "1.11.1" |
| 508 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 509 | + checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" |
| 510 | + dependencies = [ |
| 511 | + "aho-corasick", |
| 512 | + "memchr", |
| 513 | + "regex-automata", |
| 514 | + "regex-syntax", |
| 515 | + ] |
| 516 | + |
| 517 | + [[package]] |
| 518 | + name = "regex-automata" |
| 519 | + version = "0.4.9" |
| 520 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 521 | + checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" |
| 522 | + dependencies = [ |
| 523 | + "aho-corasick", |
| 524 | + "memchr", |
| 525 | + "regex-syntax", |
| 526 | + ] |
| 527 | + |
| 528 | + [[package]] |
| 529 | + name = "regex-syntax" |
| 530 | + version = "0.8.5" |
| 531 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 532 | + checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" |
| 533 | + |
| 534 | + [[package]] |
| 535 | + name = "rustc-demangle" |
| 536 | + version = "0.1.24" |
| 537 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 538 | + checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" |
| 539 | + |
| 540 | + [[package]] |
| 541 | + name = "rustversion" |
| 542 | + version = "1.0.20" |
| 543 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 544 | + checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" |
| 545 | + |
| 546 | + [[package]] |
| 547 | + name = "ryu" |
| 548 | + version = "1.0.20" |
| 549 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 550 | + checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" |
| 551 | + |
| 552 | + [[package]] |
| 553 | + name = "serde" |
| 554 | + version = "1.0.219" |
| 555 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 556 | + checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" |
| 557 | + dependencies = [ |
| 558 | + "serde_derive", |
| 559 | + ] |
| 560 | + |
| 561 | + [[package]] |
| 562 | + name = "serde_derive" |
| 563 | + version = "1.0.219" |
| 564 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 565 | + checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" |
| 566 | + dependencies = [ |
| 567 | + "proc-macro2", |
| 568 | + "quote", |
| 569 | + "syn", |
| 570 | + ] |
| 571 | + |
| 572 | + [[package]] |
| 573 | + name = "serde_json" |
| 574 | + version = "1.0.140" |
| 575 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 576 | + checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" |
| 577 | + dependencies = [ |
| 578 | + "itoa", |
| 579 | + "memchr", |
| 580 | + "ryu", |
| 581 | + "serde", |
| 582 | + ] |
| 583 | + |
| 584 | + [[package]] |
| 585 | + name = "serde_path_to_error" |
| 586 | + version = "0.1.17" |
| 587 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 588 | + checksum = "59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a" |
| 589 | + dependencies = [ |
| 590 | + "itoa", |
| 591 | + "serde", |
| 592 | + ] |
| 593 | + |
| 594 | + [[package]] |
| 595 | + name = "serde_urlencoded" |
| 596 | + version = "0.7.1" |
| 597 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 598 | + checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" |
| 599 | + dependencies = [ |
| 600 | + "form_urlencoded", |
| 601 | + "itoa", |
| 602 | + "ryu", |
| 603 | + "serde", |
| 604 | + ] |
| 605 | + |
| 606 | + [[package]] |
| 607 | + name = "smallvec" |
| 608 | + version = "1.14.0" |
| 609 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 610 | + checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" |
| 611 | + |
| 612 | + [[package]] |
| 613 | + name = "socket2" |
| 614 | + version = "0.5.8" |
| 615 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 616 | + checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" |
| 617 | + dependencies = [ |
| 618 | + "libc", |
| 619 | + "windows-sys", |
| 620 | + ] |
| 621 | + |
| 622 | + [[package]] |
| 623 | + name = "strsim" |
| 624 | + version = "0.11.1" |
| 625 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 626 | + checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" |
| 627 | + |
| 628 | + [[package]] |
| 629 | + name = "strum" |
| 630 | + version = "0.26.3" |
| 631 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 632 | + checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" |
| 633 | + |
| 634 | + [[package]] |
| 635 | + name = "strum_macros" |
| 636 | + version = "0.26.4" |
| 637 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 638 | + checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" |
| 639 | + dependencies = [ |
| 640 | + "heck", |
| 641 | + "proc-macro2", |
| 642 | + "quote", |
| 643 | + "rustversion", |
| 644 | + "syn", |
| 645 | + ] |
| 646 | + |
| 647 | + [[package]] |
| 648 | + name = "syn" |
| 649 | + version = "2.0.100" |
| 650 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 651 | + checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" |
| 652 | + dependencies = [ |
| 653 | + "proc-macro2", |
| 654 | + "quote", |
| 655 | + "unicode-ident", |
| 656 | + ] |
| 657 | + |
| 658 | + [[package]] |
| 659 | + name = "sync_wrapper" |
| 660 | + version = "1.0.2" |
| 661 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 662 | + checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" |
| 663 | + |
| 664 | + [[package]] |
| 665 | + name = "thiserror" |
| 666 | + version = "2.0.12" |
| 667 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 668 | + checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" |
| 669 | + dependencies = [ |
| 670 | + "thiserror-impl", |
| 671 | + ] |
| 672 | + |
| 673 | + [[package]] |
| 674 | + name = "thiserror-impl" |
| 675 | + version = "2.0.12" |
| 676 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 677 | + checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" |
| 678 | + dependencies = [ |
| 679 | + "proc-macro2", |
| 680 | + "quote", |
| 681 | + "syn", |
| 682 | + ] |
| 683 | + |
| 684 | + [[package]] |
| 685 | + name = "tokio" |
| 686 | + version = "1.44.1" |
| 687 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 688 | + checksum = "f382da615b842244d4b8738c82ed1275e6c5dd90c459a30941cd07080b06c91a" |
| 689 | + dependencies = [ |
| 690 | + "backtrace", |
| 691 | + "libc", |
| 692 | + "mio", |
| 693 | + "pin-project-lite", |
| 694 | + "socket2", |
| 695 | + "tokio-macros", |
| 696 | + "windows-sys", |
| 697 | + ] |
| 698 | + |
| 699 | + [[package]] |
| 700 | + name = "tokio-macros" |
| 701 | + version = "2.5.0" |
| 702 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 703 | + checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" |
| 704 | + dependencies = [ |
| 705 | + "proc-macro2", |
| 706 | + "quote", |
| 707 | + "syn", |
| 708 | + ] |
| 709 | + |
| 710 | + [[package]] |
| 711 | + name = "tower" |
| 712 | + version = "0.5.2" |
| 713 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 714 | + checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" |
| 715 | + dependencies = [ |
| 716 | + "futures-core", |
| 717 | + "futures-util", |
| 718 | + "pin-project-lite", |
| 719 | + "sync_wrapper", |
| 720 | + "tokio", |
| 721 | + "tower-layer", |
| 722 | + "tower-service", |
| 723 | + "tracing", |
| 724 | + ] |
| 725 | + |
| 726 | + [[package]] |
| 727 | + name = "tower-layer" |
| 728 | + version = "0.3.3" |
| 729 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 730 | + checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" |
| 731 | + |
| 732 | + [[package]] |
| 733 | + name = "tower-service" |
| 734 | + version = "0.3.3" |
| 735 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 736 | + checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" |
| 737 | + |
| 738 | + [[package]] |
| 739 | + name = "tracing" |
| 740 | + version = "0.1.41" |
| 741 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 742 | + checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" |
| 743 | + dependencies = [ |
| 744 | + "log", |
| 745 | + "pin-project-lite", |
| 746 | + "tracing-core", |
| 747 | + ] |
| 748 | + |
| 749 | + [[package]] |
| 750 | + name = "tracing-core" |
| 751 | + version = "0.1.33" |
| 752 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 753 | + checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" |
| 754 | + dependencies = [ |
| 755 | + "once_cell", |
| 756 | + ] |
| 757 | + |
| 758 | + [[package]] |
| 759 | + name = "unicode-ident" |
| 760 | + version = "1.0.18" |
| 761 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 762 | + checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" |
| 763 | + |
| 764 | + [[package]] |
| 765 | + name = "wasi" |
| 766 | + version = "0.11.0+wasi-snapshot-preview1" |
| 767 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 768 | + checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" |
| 769 | + |
| 770 | + [[package]] |
| 771 | + name = "windows-sys" |
| 772 | + version = "0.52.0" |
| 773 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 774 | + checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" |
| 775 | + dependencies = [ |
| 776 | + "windows-targets", |
| 777 | + ] |
| 778 | + |
| 779 | + [[package]] |
| 780 | + name = "windows-targets" |
| 781 | + version = "0.52.6" |
| 782 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 783 | + checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" |
| 784 | + dependencies = [ |
| 785 | + "windows_aarch64_gnullvm", |
| 786 | + "windows_aarch64_msvc", |
| 787 | + "windows_i686_gnu", |
| 788 | + "windows_i686_gnullvm", |
| 789 | + "windows_i686_msvc", |
| 790 | + "windows_x86_64_gnu", |
| 791 | + "windows_x86_64_gnullvm", |
| 792 | + "windows_x86_64_msvc", |
| 793 | + ] |
| 794 | + |
| 795 | + [[package]] |
| 796 | + name = "windows_aarch64_gnullvm" |
| 797 | + version = "0.52.6" |
| 798 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 799 | + checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" |
| 800 | + |
| 801 | + [[package]] |
| 802 | + name = "windows_aarch64_msvc" |
| 803 | + version = "0.52.6" |
| 804 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 805 | + checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" |
| 806 | + |
| 807 | + [[package]] |
| 808 | + name = "windows_i686_gnu" |
| 809 | + version = "0.52.6" |
| 810 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 811 | + checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" |
| 812 | + |
| 813 | + [[package]] |
| 814 | + name = "windows_i686_gnullvm" |
| 815 | + version = "0.52.6" |
| 816 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 817 | + checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" |
| 818 | + |
| 819 | + [[package]] |
| 820 | + name = "windows_i686_msvc" |
| 821 | + version = "0.52.6" |
| 822 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 823 | + checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" |
| 824 | + |
| 825 | + [[package]] |
| 826 | + name = "windows_x86_64_gnu" |
| 827 | + version = "0.52.6" |
| 828 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 829 | + checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" |
| 830 | + |
| 831 | + [[package]] |
| 832 | + name = "windows_x86_64_gnullvm" |
| 833 | + version = "0.52.6" |
| 834 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 835 | + checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" |
| 836 | + |
| 837 | + [[package]] |
| 838 | + name = "windows_x86_64_msvc" |
| 839 | + version = "0.52.6" |
| 840 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 841 | + checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" |
| 842 | diff --git a/Cargo.toml b/Cargo.toml |
| 843 | new file mode 100644 |
| 844 | index 0000000..05a59c6 |
| 845 | --- /dev/null |
| 846 | +++ b/Cargo.toml |
| 847 | @@ -0,0 +1,26 @@ |
| 848 | + [workspace] |
| 849 | + resolver = "2" |
| 850 | + members = [ |
| 851 | + "papyri-common", |
| 852 | + "papyri-axum", |
| 853 | + ] |
| 854 | + |
| 855 | + # [workspace.dependencies] |
| 856 | + # async-trait = "0.1.86" |
| 857 | + # bytes = "1.10.0" |
| 858 | + # clap = { version = "4.5.20", features = ["derive"] } |
| 859 | + # clap_complete = { version = "4.4.10" } |
| 860 | + # serde = { version = "1.0", features = ["derive"] } |
| 861 | + # git2 = "0.19.0" |
| 862 | + # rand = "0.8.5" |
| 863 | + # thiserror = "2.0.11" |
| 864 | + # tracing = { version = "0.1.41", features=["log"] } |
| 865 | + # toml = "0.8.20" |
| 866 | + # futures = "0.3.31" |
| 867 | + # futures-util = "0.3.31" |
| 868 | + # sqlx = { version = "0.8.3", features = [ "runtime-tokio-rustls", "sqlite", "macros", "time" ] } |
| 869 | + # tracing-subscriber = { version = "0.3.19", features = ["env-filter"] } |
| 870 | + # |
| 871 | + # tokio = { version = "1.43.0", features = ["full"] } |
| 872 | + # tokio-util = { version = "0.7.13", features = ["io", "compat"] } |
| 873 | + # tokio-stream = "0.1.17" |
| 874 | diff --git a/README.md b/README.md |
| 875 | new file mode 100644 |
| 876 | index 0000000..98ba0f3 |
| 877 | --- /dev/null |
| 878 | +++ b/README.md |
| 879 | @@ -0,0 +1,5 @@ |
| 880 | + # Papyri |
| 881 | + |
| 882 | + Papyri is a [OCI Distribution Spec](https://github.com/opencontainers/distribution-spec) |
| 883 | + compliant container registry that is usable as a standalone application or |
| 884 | + consumable as a Rust library. |
| 885 | diff --git a/papyri-axum/Cargo.toml b/papyri-axum/Cargo.toml |
| 886 | new file mode 100644 |
| 887 | index 0000000..4b83733 |
| 888 | --- /dev/null |
| 889 | +++ b/papyri-axum/Cargo.toml |
| 890 | @@ -0,0 +1,8 @@ |
| 891 | + [package] |
| 892 | + name = "papyri-axum" |
| 893 | + version = "0.1.0" |
| 894 | + edition = "2024" |
| 895 | + |
| 896 | + [dependencies] |
| 897 | + axum = "0.8.1" |
| 898 | + oci-spec = "0.7.1" |
| 899 | diff --git a/papyri-axum/src/lib.rs b/papyri-axum/src/lib.rs |
| 900 | new file mode 100644 |
| 901 | index 0000000..6a664ab |
| 902 | --- /dev/null |
| 903 | +++ b/papyri-axum/src/lib.rs |
| 904 | @@ -0,0 +1 @@ |
| 905 | + pub mod routes; |
| 906 | diff --git a/papyri-axum/src/routes.rs b/papyri-axum/src/routes.rs |
| 907 | new file mode 100644 |
| 908 | index 0000000..e5509a8 |
| 909 | --- /dev/null |
| 910 | +++ b/papyri-axum/src/routes.rs |
| 911 | @@ -0,0 +1,91 @@ |
| 912 | + use axum::Json; |
| 913 | + use axum::extract::{MatchedPath, Request}; |
| 914 | + use axum::{Router, routing::get}; |
| 915 | + use oci_spec::image::{ImageManifest, ImageIndexBuilder}; |
| 916 | + use serde_json::json; |
| 917 | + use tower_http::trace::TraceLayer; |
| 918 | + use tracing::info_span; |
| 919 | + use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt}; |
| 920 | + |
| 921 | + pub async fn handler_index(req: Request) -> Json<serde_json::Value> { |
| 922 | + req.headers().iter().for_each(|h| { |
| 923 | + let header_value = h.1.to_str().ok(); |
| 924 | + tracing::info!(key = h.0.as_str(), value = header_value); |
| 925 | + }); |
| 926 | + Json(json!({})) |
| 927 | + } |
| 928 | + |
| 929 | + pub async fn handler_manifest_index() -> Json<serde_json::Value> { |
| 930 | + } |
| 931 | + |
| 932 | + // async fn serve() { |
| 933 | + // let app = Router::new() |
| 934 | + // .route("/", get(|| async { "Hello, World!" })) |
| 935 | + // .route("/v2", get(handler_index)) |
| 936 | + // .route("/v2/", get(handler_index)) |
| 937 | + // .layer( |
| 938 | + // TraceLayer::new_for_http().make_span_with(|request: &Request<_>| { |
| 939 | + // // Log the matched route's path (with placeholders not filled in). |
| 940 | + // // Use request.uri() or OriginalUri if you want the real path. |
| 941 | + // let matched_path = request |
| 942 | + // .extensions() |
| 943 | + // .get::<MatchedPath>() |
| 944 | + // .map(MatchedPath::as_str); |
| 945 | + // |
| 946 | + // let actual_path = request.uri().path(); |
| 947 | + // |
| 948 | + // info_span!( |
| 949 | + // "http_request", |
| 950 | + // method = ?request.method(), |
| 951 | + // matched_path, |
| 952 | + // actual_path, |
| 953 | + // some_other_field = tracing::field::Empty, |
| 954 | + // ) |
| 955 | + // }), // .on_request(|_request: &Request<_>, _span: &Span| { |
| 956 | + // // // You can use `_span.record("some_other_field", value)` in one of these |
| 957 | + // // // closures to attach a value to the initially empty field in the info_span |
| 958 | + // // // created above. |
| 959 | + // // }) |
| 960 | + // // .on_response(|_response: &Response, _latency: Duration, _span: &Span| { |
| 961 | + // // // ... |
| 962 | + // // }) |
| 963 | + // // .on_body_chunk(|_chunk: &Bytes, _latency: Duration, _span: &Span| { |
| 964 | + // // // ... |
| 965 | + // // }) |
| 966 | + // // .on_eos( |
| 967 | + // // |_trailers: Option<&HeaderMap>, _stream_duration: Duration, _span: &Span| { |
| 968 | + // // // ... |
| 969 | + // // }, |
| 970 | + // // ) |
| 971 | + // // .on_failure( |
| 972 | + // // |_error: ServerErrorsFailureClass, _latency: Duration, _span: &Span| { |
| 973 | + // // // ... |
| 974 | + // // }, |
| 975 | + // // ), |
| 976 | + // ); |
| 977 | + // |
| 978 | + // // run our app with hyper, listening globally on port 3000 |
| 979 | + // tracing::info!("Listening @ 0.0.0.0:3000"); |
| 980 | + // let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap(); |
| 981 | + // axum::serve(listener, app).await.unwrap(); |
| 982 | + // } |
| 983 | + // |
| 984 | + // #[tokio::main] |
| 985 | + // async fn main() { |
| 986 | + // tracing_subscriber::registry() |
| 987 | + // .with( |
| 988 | + // tracing_subscriber::EnvFilter::try_from_default_env().unwrap_or_else(|_| { |
| 989 | + // // axum logs rejections from built-in extractors with the `axum::rejection` |
| 990 | + // // target, at `TRACE` level. `axum::rejection=trace` enables showing those events |
| 991 | + // format!( |
| 992 | + // "{}=debug,tower_http=debug,axum::rejection=trace", |
| 993 | + // env!("CARGO_CRATE_NAME") |
| 994 | + // ) |
| 995 | + // .into() |
| 996 | + // }), |
| 997 | + // ) |
| 998 | + // .with(tracing_subscriber::fmt::layer()) |
| 999 | + // .init(); |
| 1000 | + // serve().await; |
| 1001 | + // } |
| 1002 | + |
| 1003 | diff --git a/papyri-axum/src/storage.rs b/papyri-axum/src/storage.rs |
| 1004 | new file mode 100644 |
| 1005 | index 0000000..e69de29 |
| 1006 | --- /dev/null |
| 1007 | +++ b/papyri-axum/src/storage.rs |
| 1008 | diff --git a/papyri-common/Cargo.toml b/papyri-common/Cargo.toml |
| 1009 | new file mode 100644 |
| 1010 | index 0000000..6e65a6c |
| 1011 | --- /dev/null |
| 1012 | +++ b/papyri-common/Cargo.toml |
| 1013 | @@ -0,0 +1,6 @@ |
| 1014 | + [package] |
| 1015 | + name = "papyri-common" |
| 1016 | + version = "0.1.0" |
| 1017 | + edition = "2024" |
| 1018 | + |
| 1019 | + [dependencies] |
| 1020 | diff --git a/papyri-common/src/main.rs b/papyri-common/src/main.rs |
| 1021 | new file mode 100644 |
| 1022 | index 0000000..e7a11a9 |
| 1023 | --- /dev/null |
| 1024 | +++ b/papyri-common/src/main.rs |
| 1025 | @@ -0,0 +1,3 @@ |
| 1026 | + fn main() { |
| 1027 | + println!("Hello, world!"); |
| 1028 | + } |