diff --git a/Cargo.lock b/Cargo.lock index d109cc8..d83c541 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "addr2line" @@ -17,6 +17,12 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + [[package]] name = "ahash" version = "0.8.11" @@ -118,9 +124,9 @@ checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" [[package]] name = "async-compression" -version = "0.4.2" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d495b6dc0184693324491a5ac05f559acc97bf937ab31d7a1c33dd0016be6d2b" +checksum = "df895a515f70646414f4b45c0b79082783b80552b373a68283012928df56f522" dependencies = [ "flate2", "futures-core", @@ -129,6 +135,28 @@ dependencies = [ "tokio", ] +[[package]] +name = "async-stream" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "atty" version = "0.2.14" @@ -156,16 +184,16 @@ dependencies = [ "cc", "cfg-if 1.0.0", "libc", - "miniz_oxide", + "miniz_oxide 0.7.1", "object", "rustc-demangle", ] [[package]] name = "base64" -version = "0.22.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bitflags" @@ -175,9 +203,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "1be3f42a67d6d345ecd59f675f3f012d6974981560836e938c22b424b85ce1be" dependencies = [ "serde", ] @@ -207,6 +235,12 @@ version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + [[package]] name = "bytes" version = "1.9.0" @@ -243,6 +277,12 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + [[package]] name = "chrono" version = "0.4.39" @@ -312,6 +352,23 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" +[[package]] +name = "code-api" +version = "0.1.0" +dependencies = [ + "anyhow", + "async-stream", + "bitflags 2.7.0", + "chrono", + "derive", + "futures", + "lazy-regex", + "reqwest", + "serde", + "serde_json", + "tracing", +] + [[package]] name = "colorchoice" version = "1.0.0" @@ -341,9 +398,9 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.3.2" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ "cfg-if 1.0.0", ] @@ -433,6 +490,17 @@ dependencies = [ "crypto-common", ] +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "either" version = "1.13.0" @@ -459,12 +527,12 @@ checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" [[package]] name = "flate2" -version = "1.0.27" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010" +checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" dependencies = [ "crc32fast", - "miniz_oxide", + "miniz_oxide 0.8.2", ] [[package]] @@ -475,9 +543,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "form_urlencoded" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] @@ -583,13 +651,15 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.10" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if 1.0.0", + "js-sys", "libc", "wasi", + "wasm-bindgen", ] [[package]] @@ -658,9 +728,9 @@ checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] name = "http" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" dependencies = [ "bytes", "fnv", @@ -669,9 +739,9 @@ dependencies = [ [[package]] name = "http-body" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", "http", @@ -679,12 +749,12 @@ dependencies = [ [[package]] name = "http-body-util" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes", - "futures-core", + "futures-util", "http", "http-body", "pin-project-lite", @@ -692,9 +762,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.8.0" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" [[package]] name = "hyper" @@ -717,9 +787,9 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.2" +version = "0.27.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" +checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" dependencies = [ "futures-util", "http", @@ -775,6 +845,124 @@ dependencies = [ "cc", ] +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -783,12 +971,23 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.4.0" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "icu_normalizer", + "icu_properties", ] [[package]] @@ -820,9 +1019,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.8.0" +version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" [[package]] name = "itertools" @@ -879,9 +1078,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.153" +version = "0.2.169" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" [[package]] name = "libsqlite3-sys" @@ -894,6 +1093,12 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "litemap" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" + [[package]] name = "lock_api" version = "0.4.10" @@ -954,9 +1159,9 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "minijinja" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c37e1b517d1dcd0e51dc36c4567b9d5a29262b3ec8da6cb5d35e27a8fb529b5" +checksum = "212b4cab3aad057bc6e611814472905546c533295723b9e26a31c7feb19a8e65" dependencies = [ "memo-map", "self_cell", @@ -972,6 +1177,15 @@ dependencies = [ "adler", ] +[[package]] +name = "miniz_oxide" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" +dependencies = [ + "adler2", +] + [[package]] name = "mio" version = "1.0.1" @@ -989,9 +1203,8 @@ name = "nix4vscode" version = "0.1.0" dependencies = [ "anyhow", - "bitflags 2.6.0", - "chrono", "clap 4.5.23", + "code-api", "derive", "futures", "itertools", @@ -999,13 +1212,12 @@ dependencies = [ "minijinja", "nixpkgs-fmt", "redb", - "reqwest", "rusqlite", "rust-embed", "semver", "serde", "serde_json", - "thiserror 2.0.9", + "thiserror", "tokio", "toml", "tracing", @@ -1093,9 +1305,9 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project-lite" @@ -1117,9 +1329,12 @@ checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "proc-macro2" @@ -1132,44 +1347,49 @@ dependencies = [ [[package]] name = "quinn" -version = "0.11.2" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4ceeeeabace7857413798eb1ffa1e9c905a9946a57d81fb69b4b71c4d8eb3ad" +checksum = "62e96808277ec6f97351a2380e6c25114bc9e67037775464979f3037c92d05ef" dependencies = [ "bytes", "pin-project-lite", "quinn-proto", "quinn-udp", - "rustc-hash", + "rustc-hash 2.1.0", "rustls", - "thiserror 1.0.69", + "socket2", + "thiserror", "tokio", "tracing", ] [[package]] name = "quinn-proto" -version = "0.11.3" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddf517c03a109db8100448a4be38d498df8a210a99fe0e1b9eaf39e78c640efe" +checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" dependencies = [ "bytes", + "getrandom", "rand", "ring", - "rustc-hash", + "rustc-hash 2.1.0", "rustls", + "rustls-pki-types", "slab", - "thiserror 1.0.69", + "thiserror", "tinyvec", "tracing", + "web-time", ] [[package]] name = "quinn-udp" -version = "0.5.2" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9096629c45860fc7fb143e125eb826b5e721e10be3263160c7d60ca832cf8c46" +checksum = "1c40286217b4ba3a71d644d752e6a0b71f13f1b6a2c5311acfcbe0c2418ed904" dependencies = [ + "cfg_aliases", "libc", "once_cell", "socket2", @@ -1358,7 +1578,7 @@ dependencies = [ "countme", "hashbrown 0.9.1", "memoffset", - "rustc-hash", + "rustc-hash 1.1.0", "serde", "text-size", ] @@ -1369,7 +1589,7 @@ version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7753b721174eb8ff87a9a0e799e2d7bc3749323e773db92e0984debb00019d6e" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.7.0", "fallible-iterator", "fallible-streaming-iterator", "hashlink", @@ -1423,11 +1643,17 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +[[package]] +name = "rustc-hash" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497" + [[package]] name = "rustls" -version = "0.23.10" +version = "0.23.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05cff451f60db80f490f3c182b77c35260baace73209e9cdbbe526bfe3a4d402" +checksum = "8f287924602bf649d949c63dc8ac8b235fa5387d394020705b80c4eb597ce5b8" dependencies = [ "once_cell", "ring", @@ -1439,25 +1665,27 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" dependencies = [ - "base64", "rustls-pki-types", ] [[package]] name = "rustls-pki-types" -version = "1.7.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" +checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37" +dependencies = [ + "web-time", +] [[package]] name = "rustls-webpki" -version = "0.102.4" +version = "0.102.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff448f7e92e913c4b7d4c6d8e4540a1724b319b4152b8aef6d4cf8339712b33e" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" dependencies = [ "ring", "rustls-pki-types", @@ -1625,6 +1853,12 @@ version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + [[package]] name = "strsim" version = "0.8.0" @@ -1645,9 +1879,9 @@ checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" [[package]] name = "subtle" -version = "2.5.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" @@ -1662,13 +1896,24 @@ dependencies = [ [[package]] name = "sync_wrapper" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" dependencies = [ "futures-core", ] +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "text-size" version = "1.1.1" @@ -1687,33 +1932,13 @@ dependencies = [ "unicode-width", ] -[[package]] -name = "thiserror" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" -dependencies = [ - "thiserror-impl 1.0.69", -] - [[package]] name = "thiserror" version = "2.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f072643fd0190df67a8bab670c20ef5d8737177d6ac6b2e9a236cb096206b2cc" dependencies = [ - "thiserror-impl 2.0.9", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" -dependencies = [ - "proc-macro2", - "quote", - "syn", + "thiserror-impl", ] [[package]] @@ -1737,11 +1962,21 @@ dependencies = [ "once_cell", ] +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" dependencies = [ "tinyvec_macros", ] @@ -1754,9 +1989,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.42.0" +version = "1.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" +checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e" dependencies = [ "backtrace", "bytes", @@ -1772,9 +2007,9 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", @@ -1783,20 +2018,19 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.0" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" dependencies = [ "rustls", - "rustls-pki-types", "tokio", ] [[package]] name = "tokio-util" -version = "0.7.11" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" dependencies = [ "bytes", "futures-core", @@ -1929,9 +2163,9 @@ dependencies = [ [[package]] name = "try-lock" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "typenum" @@ -1939,27 +2173,12 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" -[[package]] -name = "unicode-bidi" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" - [[package]] name = "unicode-ident" version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" -[[package]] -name = "unicode-normalization" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" -dependencies = [ - "tinyvec", -] - [[package]] name = "unicode-width" version = "0.1.10" @@ -1974,15 +2193,27 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.4.1" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", "idna", "percent-encoding", ] +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.1" @@ -2115,11 +2346,21 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + [[package]] name = "webpki-roots" -version = "0.26.1" +version = "0.26.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3de34ae270483955a94f4b21bdaaeb83d508bb84a01435f393818edb0012009" +checksum = "5d642ff16b7e79272ae451b7322067cdc17cadf68c23264be9d94a32319efe7e" dependencies = [ "rustls-pki-types", ] @@ -2342,12 +2583,49 @@ dependencies = [ "memchr", ] +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + [[package]] name = "zerocopy" version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ + "byteorder", "zerocopy-derive", ] @@ -2362,8 +2640,51 @@ dependencies = [ "syn", ] +[[package]] +name = "zerofrom" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + [[package]] name = "zeroize" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] diff --git a/Cargo.toml b/Cargo.toml index 4e0e2cd..f6035fd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,32 +10,38 @@ repository = "https://github.com/nix-community/nix4vscode" homepage = "https://github.com/nix-community/nix4vscode" authors = ["Loongtao Zhang "] -[dependencies] -serde = { version = "1.0", features = ["derive", "alloc", "rc"] } +[workspace.dependencies] +futures = "0.3" +semver = "1.0" +tracing = "0.1" +anyhow = "1.0" +serde = { version = "1.0", features = ["derive", "rc"] } serde_json = "1.0" +lazy-regex = "3.4" +chrono = "0.4" + +[dependencies] +serde = { workspace = true } +serde_json = { workspace = true } toml = "0.8" -tokio = { version = "1.42", features = ["full"] } -tracing = "0.1" -tracing-subscriber = { version = "0.3", features = ["env-filter", "std"] } -semver = "1.0" -bitflags = { version = "2.6", features = ["serde", "std"] } -reqwest = { version = "0.12", default-features = false, features = [ - "rustls-tls", - "gzip", - "json", -] } -minijinja = { version = "2.5", features = ["loader"] } + +tracing = { workspace = true } +tokio = { version = "1.43", features = ["full"] } +tracing-subscriber = { version = "0.3", features = ["env-filter"] } +futures = { workspace = true } + +semver = { workspace = true } +minijinja = { version = "2.6", features = ["loader"] } clap = { version = "4.5", features = ["derive"] } -futures = "0.3" -anyhow = "1.0" +anyhow = { workspace = true } nixpkgs-fmt = "1.3" redb = "2.4" thiserror = "2.0" -lazy-regex = "3.4" -chrono = "0.4" -derive = { path = "./derive" } +lazy-regex = { workspace = true } +derive = { path = "./crates/derive" } +code-api = { path = "./crates/code_api" } rust-embed = "8.5" -rusqlite = { version = "0.32.1", features = ["bundled"] } +rusqlite = { version = "0.32", features = ["bundled"] } itertools = "0.14.0" [package.metadata.deb] diff --git a/crates/code_api/Cargo.lock b/crates/code_api/Cargo.lock new file mode 100644 index 0000000..6069bbd --- /dev/null +++ b/crates/code_api/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "code-api" +version = "0.1.0" diff --git a/crates/code_api/Cargo.toml b/crates/code_api/Cargo.toml new file mode 100644 index 0000000..13f7e95 --- /dev/null +++ b/crates/code_api/Cargo.toml @@ -0,0 +1,22 @@ +[package] +name = "code-api" +version = "0.1.0" +edition = "2021" + +[dependencies] +futures = { workspace = true } +tracing = { workspace = true } +anyhow = { workspace = true } +serde = { workspace = true } +bitflags = { version = "2.7", features = ["serde", "std"] } +async-stream = "0.3" +serde_json = { workspace = true } +chrono = { workspace = true } +lazy-regex = { workspace = true } +reqwest = { version = "0.12", default-features = false, features = [ + "rustls-tls", + "gzip", + "json", +] } + +derive = { path = "../derive" } diff --git a/doc/vscode.adoc b/crates/code_api/doc/vscode.adoc similarity index 100% rename from doc/vscode.adoc rename to crates/code_api/doc/vscode.adoc diff --git a/crates/code_api/src/code.rs b/crates/code_api/src/code.rs new file mode 100644 index 0000000..8d2338d --- /dev/null +++ b/crates/code_api/src/code.rs @@ -0,0 +1,19 @@ +// https://github.com/microsoft/vscode/blob/d187d50a482ff80dcf74c35affb09dda1a7cd2fe/src/vs/platform/extensionManagement/common/extensionGalleryService.ts +mod enums; +mod extensions; +mod flags; +mod gallery_extension; +mod http_client; +mod query; +mod request_body; +mod version; + +pub use extensions::*; +pub use gallery_extension::*; + +pub use enums::*; +pub use flags::*; +pub use http_client::*; +pub use query::*; +pub use request_body::*; +pub use version::*; diff --git a/src/code/enums.rs b/crates/code_api/src/code/enums.rs similarity index 100% rename from src/code/enums.rs rename to crates/code_api/src/code/enums.rs diff --git a/src/code/extensions.rs b/crates/code_api/src/code/extensions.rs similarity index 100% rename from src/code/extensions.rs rename to crates/code_api/src/code/extensions.rs diff --git a/src/code/flags.rs b/crates/code_api/src/code/flags.rs similarity index 100% rename from src/code/flags.rs rename to crates/code_api/src/code/flags.rs diff --git a/src/code/gallery_extension.rs b/crates/code_api/src/code/gallery_extension.rs similarity index 100% rename from src/code/gallery_extension.rs rename to crates/code_api/src/code/gallery_extension.rs diff --git a/src/code/gallery_extension/extension_version.rs b/crates/code_api/src/code/gallery_extension/extension_version.rs similarity index 90% rename from src/code/gallery_extension/extension_version.rs rename to crates/code_api/src/code/gallery_extension/extension_version.rs index f3209a8..c703eb9 100644 --- a/src/code/gallery_extension/extension_version.rs +++ b/crates/code_api/src/code/gallery_extension/extension_version.rs @@ -1,6 +1,7 @@ +use anyhow::anyhow; use derive::api; -use crate::{code::PropertyType, error::Error}; +use crate::code::PropertyType; use super::*; @@ -29,7 +30,7 @@ impl IRawGalleryExtensionVersion { .position(|item| item.key == PropertyType::Engine.to_string()) { Some(idx) => Ok(self.properties[idx].value.clone()), - None => Err(Error::AttributeMissing("engine".into()).into()), + None => Err(anyhow!("Missing attribute: engine")), } } diff --git a/src/code/gallery_extension/version.rs b/crates/code_api/src/code/gallery_extension/version.rs similarity index 100% rename from src/code/gallery_extension/version.rs rename to crates/code_api/src/code/gallery_extension/version.rs diff --git a/src/code/http_client.rs b/crates/code_api/src/code/http_client.rs similarity index 61% rename from src/code/http_client.rs rename to crates/code_api/src/code/http_client.rs index 3d4059c..544b5f9 100644 --- a/src/code/http_client.rs +++ b/crates/code_api/src/code/http_client.rs @@ -1,12 +1,12 @@ use crate::{ - code::{ - self, IQueryState, IRawGalleryExtensionsResult, IRawGalleryQueryResult, TargetPlatform, - }, + code::{self, IRawGalleryExtensionsResult, IRawGalleryQueryResult, TargetPlatform}, config::Extension, - error::Error, }; use super::Query; +use anyhow::anyhow; +use async_stream::try_stream; +use futures::stream::Stream; use tracing::*; #[derive(Debug, Clone)] @@ -20,43 +20,42 @@ impl HttpClient { Ok(Self { client }) } - pub async fn get_extension_response( + pub fn get_extension_response( &self, - extensions: &[Extension], - ) -> anyhow::Result { - let mut results = IRawGalleryQueryResult::default(); - let extension_count: u64 = extensions.len() as u64; + extensions: Vec, + ) -> impl Stream> + '_ { let mut page_number: u64 = 1; - loop { - let query = Query::new(extensions, page_number); - let body = serde_json::to_string(&query)?; - trace!("send request: {body}"); - let mut response = self - .client - .post("https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery") - .header( - "Accept", - "Application/json; charset=utf-8; api-version=7.2-preview.1", - ) - .header("Content-Type", "application/json") - .body(body.clone()) - .send() - .await? - .json::() - .await?; - if response.results.is_empty() { - break; - } + try_stream! { + loop { + let query = Query::new(&extensions, page_number); + let body = serde_json::to_string(&query)?; + trace!("send request: {body}"); + let response = self + .client + .post("https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery") + .header( + "Accept", + "Application/json; charset=utf-8; api-version=7.2-preview.1", + ) + .header("Content-Type", "application/json") + .body(body.clone()) + .send() + .await? + .json::() + .await?; - results.results.append(&mut response.results); - if page_number * IQueryState::DEFAULT_PAGE_SIZE >= extension_count { - break; - } + if response.results.is_empty() { + break; + } - page_number += 1; + for item in response.results { + yield item + } + + page_number += 1; + } } - Ok(results) } async fn inner_get_extension_target_platform( @@ -79,7 +78,7 @@ impl HttpClient { .await? .json::() .await?; - txt.results.into_iter().next().ok_or(Error::Unknown.into()) + txt.results.into_iter().next().ok_or(anyhow!("Unknown")) } pub async fn get_extension_target_platform( diff --git a/src/code/query.rs b/crates/code_api/src/code/query.rs similarity index 100% rename from src/code/query.rs rename to crates/code_api/src/code/query.rs diff --git a/src/code/request_body.rs b/crates/code_api/src/code/request_body.rs similarity index 100% rename from src/code/request_body.rs rename to crates/code_api/src/code/request_body.rs diff --git a/src/code/version.rs b/crates/code_api/src/code/version.rs similarity index 100% rename from src/code/version.rs rename to crates/code_api/src/code/version.rs diff --git a/src/jinja/system.rs b/crates/code_api/src/config.rs similarity index 61% rename from src/jinja/system.rs rename to crates/code_api/src/config.rs index 4495265..0f7948e 100644 --- a/src/jinja/system.rs +++ b/crates/code_api/src/config.rs @@ -1,5 +1,13 @@ use serde::{Deserialize, Serialize}; +#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)] +pub struct Extension { + pub publisher_name: String, + pub extension_name: String, + pub asset_url: Option, + pub system: Option, +} + #[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)] pub struct SystemContext { arch: String, diff --git a/crates/code_api/src/lib.rs b/crates/code_api/src/lib.rs new file mode 100644 index 0000000..c7d6fc4 --- /dev/null +++ b/crates/code_api/src/lib.rs @@ -0,0 +1,2 @@ +pub mod code; +pub mod config; diff --git a/derive/Cargo.toml b/crates/derive/Cargo.toml similarity index 100% rename from derive/Cargo.toml rename to crates/derive/Cargo.toml diff --git a/derive/src/lib.rs b/crates/derive/src/lib.rs similarity index 100% rename from derive/src/lib.rs rename to crates/derive/src/lib.rs diff --git a/src/code.rs b/src/code.rs index 4be3eba..90c92d5 100644 --- a/src/code.rs +++ b/src/code.rs @@ -1,29 +1,19 @@ -// https://github.com/microsoft/vscode/blob/d187d50a482ff80dcf74c35affb09dda1a7cd2fe/src/vs/platform/extensionManagement/common/extensionGalleryService.ts -mod enums; -mod extensions; -mod flags; -mod gallery_extension; -mod http_client; -mod query; -mod request_body; -mod version; - +use std::pin::pin; use std::str::FromStr; -pub use extensions::*; +use code_api::code::is_version_valid; +use code_api::code::AssetType; +use code_api::code::HttpClient; +use code_api::code::IRawGalleryExtension; +use code_api::code::TargetPlatform; use futures::future::join_all; -pub use gallery_extension::*; +use futures::stream; +use futures::StreamExt; -pub use enums::*; -pub use flags::*; -pub use http_client::*; -pub use query::*; -pub use request_body::*; use semver::Version; use tracing::debug; use tracing::error; use tracing::trace; -pub use version::*; use crate::config::Config; use crate::jinja::AssetUrlContext; @@ -45,31 +35,32 @@ impl CodeNix { } pub async fn get_extensions(&mut self, generator: Generator<'static>) -> Vec { - let obj = self - .client - .get_extension_response(&self.config.handled_extensions) - .await - .unwrap(); + let mut obj = vec![]; + { + let mut iter = self + .client + .get_extension_response(self.config.handled_extensions.clone()) + .filter_map(|item| async move { + match item { + Ok(v) => Some(v), + Err(_) => None, + } + }) + .flat_map(|item| stream::iter(item.extensions)); - let futures: Vec<_> = obj - .results - .into_iter() - .flat_map(|item| item.extensions.into_iter()) - .filter(|item| { - match self + let mut iter = pin!(iter); + while let Some(val) = iter.next().await { + if self .config - .contains(&item.publisher.publisher_name, &item.extension_name) + .contains(&val.publisher.publisher_name, &val.extension_name) { - true => true, - false => { - debug!( - "extensions be filtered {}.{}", - item.publisher.publisher_name, item.extension_name - ); - false - } + obj.push(val); } - }) + } + } + + let futures: Vec<_> = obj + .into_iter() .map(|item| { trace!("aa"); let generator = generator.clone(); diff --git a/src/config.rs b/src/config.rs index 034932d..ef7f9a1 100644 --- a/src/config.rs +++ b/src/config.rs @@ -1,18 +1,11 @@ use anyhow::anyhow; +use code_api::config::{Extension, SystemContext}; use lazy_regex::regex; use serde::{Deserialize, Serialize}; use tokio::fs; use tracing::error; -use crate::jinja::{Generator, SystemContext}; - -#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)] -pub struct Extension { - pub publisher_name: String, - pub extension_name: String, - pub asset_url: Option, - pub system: Option, -} +use crate::jinja::Generator; #[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)] #[serde(untagged)] @@ -28,7 +21,8 @@ pub struct Config { pub autogen_warning: Option, pub extensions: Vec, pub system: Option, - pub handled_extensions: Vec, + #[serde(skip)] + pub(crate) handled_extensions: Vec, } impl Config { diff --git a/src/jinja.rs b/src/jinja.rs index 0faae7d..43f6a90 100644 --- a/src/jinja.rs +++ b/src/jinja.rs @@ -1,10 +1,8 @@ mod context; mod filters; -mod system; pub use context::*; use filters::*; -pub use system::*; use minijinja::Environment; diff --git a/src/jinja/context.rs b/src/jinja/context.rs index 9b82d40..510f8d3 100644 --- a/src/jinja/context.rs +++ b/src/jinja/context.rs @@ -1,12 +1,13 @@ use std::sync::Arc; +use code_api::code::TargetPlatform; use serde::{Deserialize, Serialize}; mod asset_url; pub use asset_url::*; -use crate::{code::TargetPlatform, config::Config}; +use crate::config::Config; #[derive(Debug, Default, Deserialize, Serialize)] pub struct GeneratorContext { diff --git a/src/jinja/context/asset_url.rs b/src/jinja/context/asset_url.rs index 3263bf2..846b557 100644 --- a/src/jinja/context/asset_url.rs +++ b/src/jinja/context/asset_url.rs @@ -1,7 +1,6 @@ +use code_api::config::SystemContext; use serde::{Deserialize, Serialize}; -use crate::jinja::SystemContext; - #[derive(Debug, Default, Deserialize, Serialize)] pub struct AssetUrlContext { system: SystemContext, diff --git a/src/jinja/filters.rs b/src/jinja/filters.rs index cd53c9d..617fd49 100644 --- a/src/jinja/filters.rs +++ b/src/jinja/filters.rs @@ -1,8 +1,7 @@ +use code_api::code::TargetPlatform; use minijinja::Value; use nixpkgs_fmt::reformat_string; -use crate::code::TargetPlatform; - pub fn nixfmt(value: &str) -> String { reformat_string(value) } diff --git a/src/main.rs b/src/main.rs index c136d62..8ec4020 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,6 +7,7 @@ pub mod utils; use std::collections::HashMap; +use code::CodeNix; use itertools::Itertools; use jinja::NixContext; use tokio::fs; @@ -15,10 +16,7 @@ use tracing::*; use clap::Parser; use config::Config; -use crate::{ - code::CodeNix, - jinja::{Generator, GeneratorContext}, -}; +use crate::jinja::{Generator, GeneratorContext}; #[derive(Debug, Parser)] #[command(author, version)]