diff --git a/.github/workflows/fmt.yml b/.github/workflows/fmt.yml new file mode 100644 index 0000000..d30b1bc --- /dev/null +++ b/.github/workflows/fmt.yml @@ -0,0 +1,25 @@ +name: Rust formatting check +on: + pull_request: + branches: ["*"] + paths: + - "**/*.rs" +permissions: + contents: read + pull-requests: write +jobs: + format: + runs-on: ubuntu-latest + steps: + - name: Check out Git repository + uses: actions/checkout@v4 + with: + submodules: recursive + ssh-key: ${{ secrets.SSH_PRIVATE_KEY }} + - uses: dtolnay/rust-toolchain@nightly + with: + components: rustfmt + + - name: Run rustfmt check + id: fmt + run: cargo fmt --all --manifest-path Cargo.toml --check diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 4e24933..d0c1dbe 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -1,27 +1,39 @@ -name: Lint +name: Rust Linting + on: push: + branches: + - master + paths: + - "**.rs" + - "Cargo.toml" + pull_request: + branches: + - master paths: - - 'src/**' - - 'Cargo.toml' + - "**.rs" + - "Cargo.toml" + +permissions: + contents: read + pull-requests: write jobs: lint: name: Lint code base runs-on: ubuntu-latest - permissions: - contents: 'read' - checks: 'write' steps: - - name: Checkout code - uses: actions/checkout@v2 + - name: Check out Git repository + uses: actions/checkout@v4 + with: + submodules: recursive + ssh-key: ${{ secrets.SSH_PRIVATE_KEY }} + + - name: Install dependencies + run: sudo apt -q -yy install libdbus-1-dev pkg-config libdbus-1-3 libsystemd0 libsystemd-dev - name: rust-clippy-check - uses: actions-rs/clippy-check@v1 - with: - token: ${{ secrets.GITHUB_TOKEN }} - args: --all-targets --all-features -- -D warnings - - name: rust-fmt-check - uses: actions-rust-lang/rustfmt@v1 + uses: actions-rs/clippy-check@v1.0.7 with: token: ${{ secrets.GITHUB_TOKEN }} + args: --manifest-path Cargo.toml diff --git a/.github/workflows/nix.yml b/.github/workflows/nix.yml index f71f94c..751a689 100644 --- a/.github/workflows/nix.yml +++ b/.github/workflows/nix.yml @@ -5,22 +5,22 @@ on: branches: - master paths: - - 'flake.nix' - - 'flake.lock' - - 'src/**' - - 'Cargo.toml' - - 'Cargo.lock' - - '.github/workflows/nix.yml' + - "flake.nix" + - "flake.lock" + - "src/**" + - "Cargo.toml" + - "Cargo.lock" + - ".github/workflows/nix.yml" pull_request: branches: - master paths: - - 'flake.nix' - - 'flake.lock' - - 'src/**' - - 'Cargo.toml' - - 'Cargo.lock' - - '.github/workflows/nix.yml' + - "flake.nix" + - "flake.lock" + - "src/**" + - "Cargo.toml" + - "Cargo.lock" + - ".github/workflows/nix.yml" jobs: build: diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 4e8a636..d64f6cd 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -5,18 +5,18 @@ on: branches: - master paths: - - 'src/**' - - 'Cargo.toml' - - 'Cargo.lock' - - '.github/workflows/rust.yml' + - "src/**" + - "Cargo.toml" + - "Cargo.lock" + - ".github/workflows/rust.yml" pull_request: branches: - master paths: - - 'src/**' - - 'Cargo.toml' - - 'Cargo.lock' - - '.github/workflows/rust.yml' + - "src/**" + - "Cargo.toml" + - "Cargo.lock" + - ".github/workflows/rust.yml" env: CARGO_TERM_COLOR: always @@ -27,7 +27,7 @@ jobs: strategy: fail-fast: false matrix: - rust: [latest, 1.86.0, 1.77.2] + rust: [latest, 1.88.0] steps: - name: Checkout code diff --git a/Cargo.lock b/Cargo.lock index 50dcd48..a0e79ca 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,158 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "actix-codec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f7b0a21988c1bf877cf4759ef5ddaac04c1c9fe808c9142ecb78ba97d97a28a" +dependencies = [ + "bitflags 2.9.1", + "bytes", + "futures-core", + "futures-sink", + "memchr", + "pin-project-lite", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "actix-http" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44dfe5c9e0004c623edc65391dfd51daa201e7e30ebd9c9bedf873048ec32bc2" +dependencies = [ + "actix-codec", + "actix-rt", + "actix-service", + "actix-utils", + "base64 0.22.1", + "bitflags 2.9.1", + "bytes", + "bytestring", + "derive_more", + "encoding_rs", + "foldhash", + "futures-core", + "http 0.2.12", + "httparse", + "httpdate", + "itoa", + "language-tags", + "local-channel", + "mime", + "percent-encoding", + "pin-project-lite", + "rand 0.9.2", + "sha1", + "smallvec", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "actix-router" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13d324164c51f63867b57e73ba5936ea151b8a41a1d23d1031eeb9f70d0236f8" +dependencies = [ + "bytestring", + "cfg-if", + "http 0.2.12", + "regex-lite", + "serde", + "tracing", +] + +[[package]] +name = "actix-rt" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24eda4e2a6e042aa4e55ac438a2ae052d3b5da0ecf83d7411e1a368946925208" +dependencies = [ + "futures-core", + "tokio", +] + +[[package]] +name = "actix-server" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a65064ea4a457eaf07f2fba30b4c695bf43b721790e9530d26cb6f9019ff7502" +dependencies = [ + "actix-rt", + "actix-service", + "actix-utils", + "futures-core", + "futures-util", + "mio", + "socket2 0.5.10", + "tokio", + "tracing", +] + +[[package]] +name = "actix-service" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e46f36bf0e5af44bdc4bdb36fbbd421aa98c79a9bce724e1edeb3894e10dc7f" +dependencies = [ + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "actix-utils" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88a1dcdff1466e3c2488e1cb5c36a71822750ad43839937f85d2f4d9f8b705d8" +dependencies = [ + "local-waker", + "pin-project-lite", +] + +[[package]] +name = "actix-web" +version = "4.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a597b77b5c6d6a1e1097fddde329a83665e25c5437c696a3a9a4aa514a614dea" +dependencies = [ + "actix-codec", + "actix-http", + "actix-router", + "actix-rt", + "actix-server", + "actix-service", + "actix-utils", + "bytes", + "bytestring", + "cfg-if", + "derive_more", + "encoding_rs", + "foldhash", + "futures-core", + "futures-util", + "impl-more", + "itoa", + "language-tags", + "log", + "mime", + "once_cell", + "pin-project-lite", + "regex-lite", + "serde", + "serde_json", + "serde_urlencoded", + "smallvec", + "socket2 0.5.10", + "time", + "tracing", + "url", +] + [[package]] name = "addr2line" version = "0.24.2" @@ -13,9 +165,9 @@ dependencies = [ [[package]] name = "adler2" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "aho-corasick" @@ -43,9 +195,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.18" +version = "0.6.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933" dependencies = [ "anstyle", "anstyle-parse", @@ -58,46 +210,44 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" +checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" [[package]] name = "anstyle-parse" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9" dependencies = [ "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.6" +version = "3.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" +checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882" dependencies = [ "anstyle", + "once_cell_polyfill", "windows-sys 0.59.0", ] [[package]] name = "anyhow" -version = "1.0.95" +version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" -dependencies = [ - "backtrace", -] +checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" [[package]] name = "ascii-canvas" @@ -105,7 +255,7 @@ version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6" dependencies = [ - "term", + "term 0.7.0", ] [[package]] @@ -131,9 +281,9 @@ dependencies = [ [[package]] name = "async-channel" -version = "2.3.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" +checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" dependencies = [ "concurrent-queue", "event-listener-strategy", @@ -143,14 +293,15 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" +checksum = "bb812ffb58524bdd10860d7d974e2f01cc0950c2438a74ee5ec2e2280c6c4ffa" dependencies = [ "async-task", "concurrent-queue", "fastrand 2.3.0", - "futures-lite 2.5.0", + "futures-lite 2.6.1", + "pin-project-lite", "slab", ] @@ -160,41 +311,40 @@ version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" dependencies = [ - "async-channel 2.3.1", + "async-channel 2.5.0", "async-executor", "async-io", "async-lock", "blocking", - "futures-lite 2.5.0", + "futures-lite 2.6.1", "once_cell", ] [[package]] name = "async-io" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" +checksum = "19634d6336019ef220f09fd31168ce5c184b295cbf80345437cc36094ef223ca" dependencies = [ "async-lock", "cfg-if", "concurrent-queue", "futures-io", - "futures-lite 2.5.0", + "futures-lite 2.6.1", "parking", - "polling 3.7.4", + "polling 3.10.0", "rustix", "slab", - "tracing", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "async-lock" -version = "3.4.0" +version = "3.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" +checksum = "5fd03604047cee9b6ce9de9f70c6cd540a0520c813cbd49bae61f33ab80ed1dc" dependencies = [ - "event-listener 5.4.0", + "event-listener 5.4.1", "event-listener-strategy", "pin-project-lite", ] @@ -210,28 +360,27 @@ dependencies = [ [[package]] name = "async-process" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63255f1dc2381611000436537bbedfe83183faa303a5a0edaf191edef06526bb" +checksum = "65daa13722ad51e6ab1a1b9c01299142bc75135b337923cfa10e79bbbd669f00" dependencies = [ - "async-channel 2.3.1", + "async-channel 2.5.0", "async-io", "async-lock", "async-signal", "async-task", "blocking", "cfg-if", - "event-listener 5.4.0", - "futures-lite 2.5.0", + "event-listener 5.4.1", + "futures-lite 2.6.1", "rustix", - "tracing", ] [[package]] name = "async-signal" -version = "0.2.10" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3" +checksum = "f567af260ef69e1d52c2b560ce0ea230763e6fbb9214a85d768760a920e3e3c1" dependencies = [ "async-io", "async-lock", @@ -242,14 +391,14 @@ dependencies = [ "rustix", "signal-hook-registry", "slab", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "async-std" -version = "1.13.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c634475f29802fde2b8f0b505b1bd00dfe4df7d4a000f0b36f7671197d5c3615" +checksum = "730294c1c08c2e0f85759590518f6333f0d5a0a766a27d519c1b244c3dfd8a24" dependencies = [ "async-channel 1.9.0", "async-global-executor", @@ -260,7 +409,7 @@ dependencies = [ "futures-channel", "futures-core", "futures-io", - "futures-lite 2.5.0", + "futures-lite 2.6.1", "gloo-timers", "kv-log-macro", "log", @@ -280,9 +429,9 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.85" +version = "0.1.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f934833b4b7233644e5848f235df3f57ed8c80f1528a26c3dfa13d2147fa056" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" dependencies = [ "proc-macro2", "quote", @@ -297,15 +446,15 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "backtrace" -version = "0.3.74" +version = "0.3.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" dependencies = [ "addr2line", "cfg-if", @@ -328,6 +477,12 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +[[package]] +name = "base64ct" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" + [[package]] name = "basic-cookies" version = "0.1.5" @@ -362,9 +517,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.6.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" [[package]] name = "block-buffer" @@ -377,22 +532,22 @@ dependencies = [ [[package]] name = "blocking" -version = "1.6.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" +checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" dependencies = [ - "async-channel 2.3.1", + "async-channel 2.5.0", "async-task", "futures-io", - "futures-lite 2.5.0", + "futures-lite 2.6.1", "piper", ] [[package]] name = "bumpalo" -version = "3.16.0" +version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" [[package]] name = "byteorder" @@ -402,9 +557,18 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.9.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + +[[package]] +name = "bytestring" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e465647ae23b2823b0753f50decb2d5a86d2bb2cac04788fafd1f80e45378e5f" +dependencies = [ + "bytes", +] [[package]] name = "castaway" @@ -414,37 +578,37 @@ checksum = "a2698f953def977c68f935bb0dfa959375ad4638570e969e2f1e9f433cbf1af6" [[package]] name = "cc" -version = "1.2.7" +version = "1.2.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a012a0df96dd6d06ba9a1b29d6402d1a5d77c6befd2566afdc26e10603dc93d7" +checksum = "c3a42d84bb6b69d3a8b3eaacf0d88f179e1929695e1ad012b6cf64d9caaa5fd2" dependencies = [ "shlex", ] [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" [[package]] name = "chrono" -version = "0.4.39" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" +checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" dependencies = [ "android-tzdata", "iana-time-zone", "num-traits", "serde", - "windows-targets 0.52.6", + "windows-link", ] [[package]] name = "clap" -version = "4.5.24" +version = "4.5.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9560b07a799281c7e0958b9296854d6fafd4c5f31444a7e5bb1ad6dde5ccf1bd" +checksum = "ed87a9d530bb41a67537289bafcac159cb3ee28460e0a4571123d2a778a6a882" dependencies = [ "clap_builder", "clap_derive", @@ -452,18 +616,18 @@ dependencies = [ [[package]] name = "clap-markdown" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ebc67e6266e14f8b31541c2f204724fa2ac7ad5c17d6f5908fbb92a60f42cff" +checksum = "d2a2617956a06d4885b490697b5307ebb09fec10b088afc18c81762d848c2339" dependencies = [ "clap", ] [[package]] name = "clap_builder" -version = "4.5.24" +version = "4.5.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "874e0dd3eb68bf99058751ac9712f622e61e6f393a94f7128fa26e3f02f5c7cd" +checksum = "64f4f3f3c77c94aff3c7e9aac9a2ca1974a5adf392a8bb751e827d6d127ab966" dependencies = [ "anstream", "anstyle", @@ -473,11 +637,11 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.24" +version = "4.5.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54b755194d6389280185988721fffba69495eed5ee9feeee9a599b53db80318c" +checksum = "ef4f52386a59ca4c860f7393bcf8abd8dfd91ecccc0f774635ff68e92eeef491" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", "syn", @@ -485,15 +649,15 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" +checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" [[package]] name = "colorchoice" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" [[package]] name = "colored" @@ -516,15 +680,15 @@ dependencies = [ [[package]] name = "console" -version = "0.15.10" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea3c6ecd8059b57859df5c69830340ed3c41d30e3da0c1cbed90a96ac853041b" +checksum = "2e09ced7ebbccb63b4c65413d821f2e00ce54c5ca4514ddc6b3c892fdbcbc69d" dependencies = [ "encode_unicode", "libc", "once_cell", - "unicode-width 0.2.0", - "windows-sys 0.59.0", + "unicode-width 0.2.1", + "windows-sys 0.60.2", ] [[package]] @@ -545,9 +709,9 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] @@ -579,9 +743,9 @@ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" -version = "0.2.2" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-common" @@ -607,33 +771,33 @@ dependencies = [ [[package]] name = "csv-core" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70" +checksum = "7d02f3b0da4c6504f86e9cd789d8dbafab48c2321be74e9987593de5a894d93d" dependencies = [ "memchr", ] [[package]] name = "curl" -version = "0.4.47" +version = "0.4.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9fb4d13a1be2b58f14d60adba57c9834b78c62fd86c3e76a148f732686e9265" +checksum = "9e2d5c8f48d9c0c23250e52b55e82a6ab4fdba6650c931f5a0a57a43abda812b" dependencies = [ "curl-sys", "libc", "openssl-probe", "openssl-sys", "schannel", - "socket2", - "windows-sys 0.52.0", + "socket2 0.5.10", + "windows-sys 0.59.0", ] [[package]] name = "curl-sys" -version = "0.4.78+curl-8.11.0" +version = "0.4.82+curl-8.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eec768341c5c7789611ae51cf6c459099f22e64a5d5d0ce4892434e33821eaf" +checksum = "c4d63638b5ec65f1a4ae945287b3fd035be4554bbaf211901159c9a2a74fb5be" dependencies = [ "cc", "libc", @@ -642,14 +806,14 @@ dependencies = [ "openssl-sys", "pkg-config", "vcpkg", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "darling" -version = "0.20.10" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" dependencies = [ "darling_core", "darling_macro", @@ -657,9 +821,9 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.10" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" dependencies = [ "fnv", "ident_case", @@ -671,9 +835,9 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.20.10" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core", "quote", @@ -682,9 +846,9 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.6.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" +checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" [[package]] name = "debugid" @@ -696,16 +860,47 @@ dependencies = [ "uuid", ] +[[package]] +name = "der" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +dependencies = [ + "pem-rfc7468", + "zeroize", +] + [[package]] name = "deranged" -version = "0.3.11" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" dependencies = [ "powerfmt", "serde", ] +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "unicode-xid", +] + [[package]] name = "digest" version = "0.10.7" @@ -718,9 +913,9 @@ dependencies = [ [[package]] name = "dirs" -version = "4.0.0" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" +checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" dependencies = [ "dirs-sys", ] @@ -737,13 +932,14 @@ dependencies = [ [[package]] name = "dirs-sys" -version = "0.3.7" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" dependencies = [ "libc", - "redox_users", - "winapi", + "option-ext", + "redox_users 0.5.2", + "windows-sys 0.60.2", ] [[package]] @@ -753,7 +949,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" dependencies = [ "libc", - "redox_users", + "redox_users 0.4.6", "winapi", ] @@ -768,11 +964,17 @@ dependencies = [ "syn", ] +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + [[package]] name = "either" -version = "1.13.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "ena" @@ -810,18 +1012,18 @@ dependencies = [ [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.10" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -832,9 +1034,9 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] name = "event-listener" -version = "5.4.0" +version = "5.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" +checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" dependencies = [ "concurrent-queue", "parking", @@ -843,11 +1045,11 @@ dependencies = [ [[package]] name = "event-listener-strategy" -version = "0.5.3" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c3e4e0dd3673c1139bf041f3008816d9cf2946bbfac2945c09e523b8d7b05b2" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" dependencies = [ - "event-listener 5.4.0", + "event-listener 5.4.1", "pin-project-lite", ] @@ -890,6 +1092,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + [[package]] name = "foreign-types" version = "0.3.2" @@ -979,9 +1187,9 @@ dependencies = [ [[package]] name = "futures-lite" -version = "2.5.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cef40d21ae2c515b51041df9ed313ed21e572df340ea58a922a0aefe7e8891a1" +checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" dependencies = [ "fastrand 2.3.0", "futures-core", @@ -1043,13 +1251,25 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.15" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ "cfg-if", "libc", - "wasi", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", ] [[package]] @@ -1078,9 +1298,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" dependencies = [ "bytes", "fnv", @@ -1088,7 +1308,26 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.7.0", + "indexmap 2.10.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "h2" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17da50a276f1e01e0ba6c029e47b7100754904ee8a278f886546e98575380785" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.3.1", + "indexmap 2.10.0", "slab", "tokio", "tokio-util", @@ -1103,9 +1342,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.15.2" +version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" [[package]] name = "headers" @@ -1131,12 +1370,6 @@ dependencies = [ "http 0.2.12", ] -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - [[package]] name = "heck" version = "0.5.0" @@ -1145,9 +1378,9 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" -version = "0.4.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" [[package]] name = "hex" @@ -1157,13 +1390,13 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "hostname" -version = "0.3.1" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" +checksum = "a56f203cd1c76362b69e3863fd987520ac36cf70a8c92627449b2f64a8cf7d65" dependencies = [ + "cfg-if", "libc", - "match_cfg", - "winapi", + "windows-link", ] [[package]] @@ -1179,9 +1412,9 @@ dependencies = [ [[package]] name = "http" -version = "1.2.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" dependencies = [ "bytes", "fnv", @@ -1208,11 +1441,34 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http 1.3.1", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http 1.3.1", + "http-body 1.0.1", + "pin-project-lite", +] + [[package]] name = "httparse" -version = "1.9.5" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "httpdate" @@ -1234,7 +1490,7 @@ dependencies = [ "crossbeam-utils", "form_urlencoded", "futures-util", - "hyper", + "hyper 0.14.32", "isahc", "lazy_static", "levenshtein", @@ -1258,14 +1514,14 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "h2", + "h2 0.3.27", "http 0.2.12", - "http-body", + "http-body 0.4.6", "httparse", "httpdate", "itoa", "pin-project-lite", - "socket2", + "socket2 0.5.10", "tokio", "tower-service", "tracing", @@ -1273,28 +1529,94 @@ dependencies = [ ] [[package]] -name = "hyper-tls" -version = "0.5.0" +name = "hyper" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" dependencies = [ "bytes", - "hyper", - "native-tls", + "futures-channel", + "futures-util", + "h2 0.4.11", + "http 1.3.1", + "http-body 1.0.1", + "httparse", + "itoa", + "pin-project-lite", + "smallvec", "tokio", - "tokio-native-tls", + "want", ] [[package]] -name = "iana-time-zone" -version = "0.1.61" +name = "hyper-rustls" +version = "0.27.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ - "android_system_properties", + "http 1.3.1", + "hyper 1.6.0", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper 1.6.0", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "hyper 1.6.0", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2 0.6.0", + "system-configuration", + "tokio", + "tower-service", + "tracing", + "windows-registry", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" +dependencies = [ + "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", + "log", "wasm-bindgen", "windows-core", ] @@ -1310,21 +1632,22 @@ dependencies = [ [[package]] name = "icu_collections" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" dependencies = [ "displaydoc", + "potential_utf", "yoke", "zerofrom", "zerovec", ] [[package]] -name = "icu_locid" -version = "1.5.0" +name = "icu_locale_core" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" dependencies = [ "displaydoc", "litemap", @@ -1333,31 +1656,11 @@ dependencies = [ "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" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" dependencies = [ "displaydoc", "icu_collections", @@ -1365,67 +1668,54 @@ dependencies = [ "icu_properties", "icu_provider", "smallvec", - "utf16_iter", - "utf8_iter", - "write16", "zerovec", ] [[package]] name = "icu_normalizer_data" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" [[package]] name = "icu_properties" -version = "1.5.1" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" dependencies = [ "displaydoc", "icu_collections", - "icu_locid_transform", + "icu_locale_core", "icu_properties_data", "icu_provider", - "tinystr", + "potential_utf", + "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "1.5.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" [[package]] name = "icu_provider" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" dependencies = [ "displaydoc", - "icu_locid", - "icu_provider_macros", + "icu_locale_core", "stable_deref_trait", "tinystr", "writeable", "yoke", "zerofrom", + "zerotrie", "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" @@ -1445,14 +1735,20 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" dependencies = [ "icu_normalizer", "icu_properties", ] +[[package]] +name = "impl-more" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a5a9a0ff0086c7a148acb942baaabeadf9504d10400b5a05645853729b9cd2" + [[package]] name = "indexmap" version = "1.9.3" @@ -1466,25 +1762,25 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.7.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" +checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" dependencies = [ "equivalent", - "hashbrown 0.15.2", + "hashbrown 0.15.4", "serde", ] [[package]] name = "indicatif" -version = "0.17.9" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbf675b85ed934d3c67b5c5469701eec7db22689d0a2139d856e0925fa28b281" +checksum = "70a646d946d06bedbbc4cac4c218acf4bbf2d87757a784857025f4d447e4e1cd" dependencies = [ "console", - "number_prefix", "portable-atomic", - "unicode-width 0.2.0", + "unicode-width 0.2.1", + "unit-prefix", "web-time", ] @@ -1497,21 +1793,42 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "io-uring" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4" +dependencies = [ + "bitflags 2.9.1", + "cfg-if", + "libc", +] + [[package]] name = "ipnet" -version = "2.10.1" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" +checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +dependencies = [ + "memchr", + "serde", +] [[package]] name = "is-terminal" -version = "0.4.13" +version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" +checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" dependencies = [ "hermit-abi", "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -1558,15 +1875,15 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "js-sys" -version = "0.3.76" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ "once_cell", "wasm-bindgen", @@ -1597,7 +1914,7 @@ dependencies = [ "regex", "regex-syntax", "string_cache", - "term", + "term 0.7.0", "tiny-keccak", "unicode-xid", "walkdir", @@ -1612,6 +1929,12 @@ dependencies = [ "regex-automata", ] +[[package]] +name = "language-tags" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4345964bb142484797b161f473a503a434de77149dd8c7427788c6e13379388" + [[package]] name = "lazy_static" version = "1.5.0" @@ -1626,15 +1949,15 @@ checksum = "db13adb97ab515a3691f56e4dbab09283d0b86cb45abd991d8634a9d6f501760" [[package]] name = "libc" -version = "0.2.169" +version = "0.2.174" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" +checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" [[package]] name = "libnghttp2-sys" -version = "0.1.10+1.61.0" +version = "0.1.11+1.64.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "959c25552127d2e1fa72f0e52548ec04fc386e827ba71a7bd01db46a447dc135" +checksum = "1b6c24e48a7167cffa7119da39d577fa482e66c688a4aac016bee862e1a713c4" dependencies = [ "cc", "libc", @@ -1642,19 +1965,19 @@ dependencies = [ [[package]] name = "libredox" -version = "0.1.3" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.1", "libc", ] [[package]] name = "libz-sys" -version = "1.1.21" +version = "1.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df9b68e50e6e0b26f672573834882eb57759f6db9b3be2ea3c35c91188bb4eaa" +checksum = "8b70e7a7df205e92a1a4cd9aaae7898dac0aa555503cc0a649494d0d60e7651d" dependencies = [ "cc", "libc", @@ -1664,21 +1987,38 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.4.15" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" [[package]] name = "litemap" -version = "0.7.4" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" + +[[package]] +name = "local-channel" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6cbc85e69b8df4b8bb8b89ec634e7189099cea8927a276b7384ce5488e53ec8" +dependencies = [ + "futures-core", + "futures-sink", + "local-waker", +] + +[[package]] +name = "local-waker" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" +checksum = "4d873d7c67ce09b42110d801813efbc9364414e356be9935700d368351657487" [[package]] name = "lock_api" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" dependencies = [ "autocfg", "scopeguard", @@ -1686,24 +2026,18 @@ dependencies = [ [[package]] name = "log" -version = "0.4.22" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" dependencies = [ "value-bag", ] -[[package]] -name = "match_cfg" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" - [[package]] name = "memchr" -version = "2.7.4" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" [[package]] name = "mime" @@ -1723,22 +2057,23 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.8.2" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", ] [[package]] name = "mio" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" dependencies = [ "libc", - "wasi", - "windows-sys 0.52.0", + "log", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", ] [[package]] @@ -1761,9 +2096,9 @@ dependencies = [ [[package]] name = "native-tls" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" dependencies = [ "libc", "log", @@ -1806,12 +2141,6 @@ dependencies = [ "libc", ] -[[package]] -name = "number_prefix" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" - [[package]] name = "object" version = "0.36.7" @@ -1823,17 +2152,23 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.20.2" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "once_cell_polyfill" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" [[package]] name = "openssl" -version = "0.10.68" +version = "0.10.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" +checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.1", "cfg-if", "foreign-types", "libc", @@ -1855,24 +2190,24 @@ dependencies = [ [[package]] name = "openssl-probe" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-src" -version = "300.4.1+3.4.0" +version = "300.5.1+3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faa4eac4138c62414b5622d1b31c5c304f34b406b013c079c2bbc652fdd6678c" +checksum = "735230c832b28c000e3bc117119e6466a663ec73506bc0a9907ea4187508e42a" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.104" +version = "0.9.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" +checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" dependencies = [ "cc", "libc", @@ -1881,13 +2216,20 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + [[package]] name = "os_info" -version = "3.9.2" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e6520c8cc998c5741ee68ec1dc369fc47e5f0ea5320018ecf2a1ccd6328f48b" +checksum = "d0e1ac5fde8d43c34139135df8ea9ee9465394b2d8d20f032d38998f64afffc3" dependencies = [ "log", + "plist", "serde", "windows-sys 0.52.0", ] @@ -1911,12 +2253,12 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" dependencies = [ "lock_api", - "parking_lot_core 0.9.10", + "parking_lot_core 0.9.11", ] [[package]] @@ -1935,17 +2277,26 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.10" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.8", + "redox_syscall 0.5.17", "smallvec", "windows-targets 0.52.6", ] +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + [[package]] name = "percent-encoding" version = "2.3.1" @@ -1959,14 +2310,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.7.0", + "indexmap 2.10.0", ] [[package]] name = "phf_shared" -version = "0.10.0" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" dependencies = [ "siphasher", ] @@ -1979,18 +2330,18 @@ checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" [[package]] name = "pin-project" -version = "1.1.8" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e2ec53ad785f4d35dac0adea7f7dc6f1bb277ad84a680c7afefeae05d1f5916" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.8" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d56a66c0c55993aa927429d0f8a0abfd74f084e4d9c192cffed01e418d83eefb" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", @@ -2022,9 +2373,22 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.31" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "plist" +version = "1.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" +checksum = "3af6b589e163c5a788fab00ce0c0366f6efbb9959c2f9874b224936af7fce7e1" +dependencies = [ + "base64 0.22.1", + "indexmap 2.10.0", + "quick-xml", + "serde", + "time", +] [[package]] name = "polling" @@ -2044,24 +2408,32 @@ dependencies = [ [[package]] name = "polling" -version = "3.7.4" +version = "3.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" +checksum = "b5bd19146350fe804f7cb2669c851c03d69da628803dab0d98018142aaa5d829" dependencies = [ "cfg-if", "concurrent-queue", "hermit-abi", "pin-project-lite", "rustix", - "tracing", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "portable-atomic" -version = "1.10.0" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" + +[[package]] +name = "potential_utf" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" +checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +dependencies = [ + "zerovec", +] [[package]] name = "powerfmt" @@ -2071,9 +2443,9 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.20" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ "zerocopy", ] @@ -2094,48 +2466,63 @@ dependencies = [ "encode_unicode", "is-terminal", "lazy_static", - "term", + "term 0.7.0", "unicode-width 0.1.14", ] [[package]] name = "proc-macro2" -version = "1.0.92" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" dependencies = [ "unicode-ident", ] [[package]] name = "protobuf" -version = "3.7.1" +version = "3.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3a7c64d9bf75b1b8d981124c14c179074e8caa7dfe7b6a12e6222ddcd0c8f72" +checksum = "d65a1d4ddae7d8b5de68153b48f6aa3bba8cb002b243dbdbc55a5afbc98f99f4" dependencies = [ "once_cell", "protobuf-support", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "protobuf-support" -version = "3.7.1" +version = "3.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e36c2f31e0a47f9280fb347ef5e461ffcd2c52dd520d8e216b52f93b0b0d7d6" +dependencies = [ + "thiserror 1.0.69", +] + +[[package]] +name = "quick-xml" +version = "0.38.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b088fd20b938a875ea00843b6faf48579462630015c3788d397ad6a786663252" +checksum = "9845d9dccf565065824e69f9f235fafba1587031eda353c1f1561cd6a6be78f4" dependencies = [ - "thiserror", + "memchr", ] [[package]] name = "quote" -version = "1.0.38" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + [[package]] name = "rand" version = "0.8.5" @@ -2143,8 +2530,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", ] [[package]] @@ -2154,7 +2551,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", ] [[package]] @@ -2163,7 +2570,16 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.16", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.3", ] [[package]] @@ -2197,11 +2613,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.8" +version = "0.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" +checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.1", ] [[package]] @@ -2210,9 +2626,40 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "getrandom", + "getrandom 0.2.16", + "libredox", + "thiserror 1.0.69", +] + +[[package]] +name = "redox_users" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" +dependencies = [ + "getrandom 0.2.16", "libredox", - "thiserror", + "thiserror 2.0.12", +] + +[[package]] +name = "ref-cast" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" +dependencies = [ + "proc-macro2", + "quote", + "syn", ] [[package]] @@ -2238,6 +2685,12 @@ dependencies = [ "regex-syntax", ] +[[package]] +name = "regex-lite" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53a49587ad06b26609c52e423de037e7f57f20d53535d66e08c695f347df952a" + [[package]] name = "regex-syntax" version = "0.8.5" @@ -2246,71 +2699,87 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" -version = "0.11.27" +version = "0.12.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +checksum = "cbc931937e6ca3a06e3b6c0aa7841849b160a90351d6ab467a8b9b9959767531" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "bytes", "encoding_rs", + "futures-channel", "futures-core", "futures-util", - "h2", - "http 0.2.12", - "http-body", - "hyper", + "h2 0.4.11", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "hyper 1.6.0", + "hyper-rustls", "hyper-tls", - "ipnet", + "hyper-util", "js-sys", "log", "mime", "mime_guess", "native-tls", - "once_cell", "percent-encoding", "pin-project-lite", - "rustls-pemfile", + "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", "sync_wrapper", - "system-configuration", "tokio", "tokio-native-tls", + "tower", + "tower-http", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "winreg", +] + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.16", + "libc", + "untrusted", + "windows-sys 0.52.0", ] [[package]] name = "rpassword" -version = "7.3.1" +version = "7.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80472be3c897911d0137b2d2b9055faf6eeac5b14e324073d83bc17b191d7e3f" +checksum = "66d4c8b64f049c6721ec8ccec37ddfc3d641c4a7fca57e8f2a89de509c73df39" dependencies = [ "libc", "rtoolbox", - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] name = "rtoolbox" -version = "0.0.2" +version = "0.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c247d24e63230cdb56463ae328478bd5eac8b8faa8c69461a77e8e323afac90e" +checksum = "a7cc970b249fbe527d6e02e0a227762c9108b2f49d81094fe357ffc6d14d7f6f" dependencies = [ "libc", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "rustc-demangle" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" [[package]] name = "rustc_version" @@ -2323,37 +2792,70 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.43" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a78891ee6bf2340288408954ac787aa063d8e8817e9f53abb37c695c6d834ef6" +checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.1", "errno", "libc", "linux-raw-sys", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] -name = "rustls-pemfile" -version = "1.0.4" +name = "rustls" +version = "0.23.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc" dependencies = [ - "base64 0.21.7", + "once_cell", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", ] [[package]] -name = "rustversion" -version = "1.0.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" +name = "rustls-pemfile" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +dependencies = [ + "zeroize", +] + +[[package]] +name = "rustls-webpki" +version = "0.103.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" [[package]] name = "ryu" -version = "1.0.18" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "same-file" @@ -2373,6 +2875,30 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + [[package]] name = "scoped-tls" version = "1.0.1" @@ -2421,8 +2947,8 @@ dependencies = [ "strum_macros", "temp-env", "tempfile", - "term", - "thiserror", + "term 1.1.0", + "thiserror 2.0.12", "tokio", "tokio-stream", "walkdir", @@ -2435,7 +2961,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.1", "core-foundation", "core-foundation-sys", "libc", @@ -2454,19 +2980,20 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.24" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" [[package]] name = "sentry" -version = "0.31.8" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce4b57f1b521f674df7a1d200be8ff5d74e3712020ee25b553146657b5377d5" +checksum = "989425268ab5c011e06400187eed6c298272f8ef913e49fcadc3fda788b45030" dependencies = [ "httpdate", "native-tls", "reqwest", + "sentry-actix", "sentry-backtrace", "sentry-contexts", "sentry-core", @@ -2477,11 +3004,24 @@ dependencies = [ "ureq", ] +[[package]] +name = "sentry-actix" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5c675bdf6118764a8e265c3395c311b4d905d12866c92df52870c0223d2ffc1" +dependencies = [ + "actix-http", + "actix-web", + "bytes", + "futures-util", + "sentry-core", +] + [[package]] name = "sentry-anyhow" -version = "0.31.8" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8868ca6e513f7a80b394b7e0f4b6071afeebb69e62b5e4aafe37b45e431fac8b" +checksum = "e1b4523c2595d6730bfbe401e95a6423fe9cb16dc3b6046f340551591cffe723" dependencies = [ "anyhow", "sentry-backtrace", @@ -2490,21 +3030,20 @@ dependencies = [ [[package]] name = "sentry-backtrace" -version = "0.31.8" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58cc8d4e04a73de8f718dc703943666d03f25d3e9e4d0fb271ca0b8c76dfa00e" +checksum = "68e299dd3f7bcf676875eee852c9941e1d08278a743c32ca528e2debf846a653" dependencies = [ "backtrace", - "once_cell", "regex", "sentry-core", ] [[package]] name = "sentry-contexts" -version = "0.31.8" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6436c1bad22cdeb02179ea8ef116ffc217797c028927def303bc593d9320c0d1" +checksum = "fac0c5d6892cd4c414492fc957477b620026fb3411fca9fa12774831da561c88" dependencies = [ "hostname", "libc", @@ -2516,33 +3055,32 @@ dependencies = [ [[package]] name = "sentry-core" -version = "0.31.8" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "901f761681f97db3db836ef9e094acdd8756c40215326c194201941947164ef1" +checksum = "deaa38b94e70820ff3f1f9db3c8b0aef053b667be130f618e615e0ff2492cbcc" dependencies = [ - "once_cell", - "rand", + "rand 0.9.2", "sentry-types", "serde", "serde_json", + "url", ] [[package]] name = "sentry-debug-images" -version = "0.31.8" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afdb263e73d22f39946f6022ed455b7561b22ff5553aca9be3c6a047fa39c328" +checksum = "00950648aa0d371c7f57057434ad5671bd4c106390df7e7284739330786a01b6" dependencies = [ "findshlibs", - "once_cell", "sentry-core", ] [[package]] name = "sentry-panic" -version = "0.31.8" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74fbf1c163f8b6a9d05912e1b272afa27c652e8b47ea60cb9a57ad5e481eea99" +checksum = "2b7a23b13c004873de3ce7db86eb0f59fe4adfc655a31f7bbc17fd10bacc9bfe" dependencies = [ "sentry-backtrace", "sentry-core", @@ -2550,10 +3088,11 @@ dependencies = [ [[package]] name = "sentry-tracing" -version = "0.31.8" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82eabcab0a047040befd44599a1da73d3adb228ff53b5ed9795ae04535577704" +checksum = "fac841c7050aa73fc2bec8f7d8e9cb1159af0b3095757b99820823f3e54e5080" dependencies = [ + "bitflags 2.9.1", "sentry-backtrace", "sentry-core", "tracing-core", @@ -2562,16 +3101,16 @@ dependencies = [ [[package]] name = "sentry-types" -version = "0.31.8" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da956cca56e0101998c8688bc65ce1a96f00673a0e58e663664023d4c7911e82" +checksum = "e477f4d4db08ddb4ab553717a8d3a511bc9e81dde0c808c680feacbb8105c412" dependencies = [ "debugid", "hex", - "rand", + "rand 0.9.2", "serde", "serde_json", - "thiserror", + "thiserror 2.0.12", "time", "url", "uuid", @@ -2579,18 +3118,18 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.217" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.217" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", @@ -2599,9 +3138,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.135" +version = "1.0.142" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b0d7ba2887406110130a978386c4e1befb98c674b4fba677954e4db976630d9" +checksum = "030fedb782600dcbd6f02d479bf0d817ac3bb40d644745b769d6a96bc3afc5a7" dependencies = [ "itoa", "memchr", @@ -2633,15 +3172,17 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.12.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6b6f7f2fcb69f747921f79f3926bd1e203fce4fef62c268dd3abfb6d86029aa" +checksum = "f2c45cd61fefa9db6f254525d46e392b852e0e61d9a1fd36e5bd183450a556d5" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.7.0", + "indexmap 2.10.0", + "schemars 0.9.0", + "schemars 1.0.4", "serde", "serde_derive", "serde_json", @@ -2651,9 +3192,9 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.12.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d00caa5193a3c8362ac2b73be6b9e768aa5a4b2f721d8f4b339600c3cb51f8e" +checksum = "de90945e6565ce0d9a25098082ed4ee4002e047cb59892c318d66821e14bb30f" dependencies = [ "darling", "proc-macro2", @@ -2667,7 +3208,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.7.0", + "indexmap 2.10.0", "itoa", "ryu", "serde", @@ -2687,9 +3228,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", "cpufeatures", @@ -2704,18 +3245,18 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.2" +version = "1.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" dependencies = [ "libc", ] [[package]] name = "similar" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e" +checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa" [[package]] name = "simple_logger" @@ -2731,18 +3272,15 @@ dependencies = [ [[package]] name = "siphasher" -version = "0.3.11" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" [[package]] name = "slab" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] +checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" [[package]] name = "sluice" @@ -2757,20 +3295,30 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.2" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "socket2" -version = "0.5.8" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" dependencies = [ "libc", "windows-sys 0.52.0", ] +[[package]] +name = "socket2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + [[package]] name = "spin" version = "0.9.8" @@ -2785,13 +3333,12 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "string_cache" -version = "0.8.7" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" dependencies = [ "new_debug_unreachable", - "once_cell", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "phf_shared", "precomputed-hash", ] @@ -2804,28 +3351,33 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "strum" -version = "0.25.0" +version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" +checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" [[package]] name = "strum_macros" -version = "0.25.3" +version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" dependencies = [ - "heck 0.4.1", + "heck", "proc-macro2", "quote", - "rustversion", "syn", ] +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + [[package]] name = "syn" -version = "2.0.95" +version = "2.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46f71c0377baf4ef1cc3e3402ded576dccc315800fbc62dfc7fe04b009773b4a" +checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" dependencies = [ "proc-macro2", "quote", @@ -2834,15 +3386,18 @@ dependencies = [ [[package]] name = "sync_wrapper" -version = "0.1.2" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] [[package]] name = "synstructure" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", @@ -2851,20 +3406,20 @@ dependencies = [ [[package]] name = "system-configuration" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.9.1", "core-foundation", "system-configuration-sys", ] [[package]] name = "system-configuration-sys" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" dependencies = [ "core-foundation-sys", "libc", @@ -2876,18 +3431,17 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96374855068f47402c3121c6eed88d29cb1de8f3ab27090e273e420bdabcf050" dependencies = [ - "parking_lot 0.12.3", + "parking_lot 0.12.4", ] [[package]] name = "tempfile" -version = "3.15.0" +version = "3.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8a559c81686f576e8cd0290cd2a24a2a9ad80c98b3478856500fcbd7acd704" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" dependencies = [ - "cfg-if", "fastrand 2.3.0", - "getrandom", + "getrandom 0.3.3", "once_cell", "rustix", "windows-sys 0.59.0", @@ -2904,13 +3458,31 @@ dependencies = [ "winapi", ] +[[package]] +name = "term" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a43bddab41f8626c7bdaab872bbba75f8df5847b516d77c569c746e2ae5eb746" +dependencies = [ + "windows-sys 0.60.2", +] + [[package]] name = "thiserror" version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +dependencies = [ + "thiserror-impl 2.0.12", ] [[package]] @@ -2924,11 +3496,22 @@ dependencies = [ "syn", ] +[[package]] +name = "thiserror-impl" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "time" -version = "0.3.37" +version = "0.3.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" +checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" dependencies = [ "deranged", "itoa", @@ -2943,15 +3526,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" [[package]] name = "time-macros" -version = "0.2.19" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" +checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" dependencies = [ "num-conv", "time-core", @@ -2968,9 +3551,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.7.6" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" dependencies = [ "displaydoc", "zerovec", @@ -2978,26 +3561,29 @@ dependencies = [ [[package]] name = "tokio" -version = "1.42.0" +version = "1.47.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" +checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" dependencies = [ "backtrace", "bytes", + "io-uring", "libc", "mio", + "parking_lot 0.12.4", "pin-project-lite", "signal-hook-registry", - "socket2", + "slab", + "socket2 0.6.0", "tokio-macros", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[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", @@ -3014,6 +3600,16 @@ dependencies = [ "tokio", ] +[[package]] +name = "tokio-rustls" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" +dependencies = [ + "rustls", + "tokio", +] + [[package]] name = "tokio-stream" version = "0.1.17" @@ -3039,9 +3635,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.13" +version = "0.7.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" +checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" dependencies = [ "bytes", "futures-core", @@ -3050,6 +3646,45 @@ dependencies = [ "tokio", ] +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +dependencies = [ + "bitflags 2.9.1", + "bytes", + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "iri-string", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + [[package]] name = "tower-service" version = "0.3.3" @@ -3070,9 +3705,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.28" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", @@ -3081,9 +3716,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.33" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" dependencies = [ "once_cell", "valuable", @@ -3123,21 +3758,21 @@ dependencies = [ "byteorder", "bytes", "data-encoding", - "http 1.2.0", + "http 1.3.1", "httparse", "log", - "rand", + "rand 0.8.5", "sha1", - "thiserror", + "thiserror 1.0.69", "url", "utf-8", ] [[package]] name = "typenum" -version = "1.17.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" [[package]] name = "uname" @@ -3156,9 +3791,9 @@ checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" [[package]] name = "unicode-ident" -version = "1.0.14" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" [[package]] name = "unicode-width" @@ -3168,9 +3803,9 @@ checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "unicode-width" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" +checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" [[package]] name = "unicode-xid" @@ -3178,23 +3813,52 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" +[[package]] +name = "unit-prefix" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "323402cff2dd658f39ca17c789b502021b3f18707c91cdf22e3838e1b4023817" + [[package]] name = "unsafe-libyaml" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + [[package]] name = "ureq" -version = "2.12.1" +version = "3.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02d1a66277ed75f640d608235660df48c8e3c19f3b4edb6a263315626cc3c01d" +checksum = "9f0fde9bc91026e381155f8c67cb354bcd35260b2f4a29bcc84639f762760c39" dependencies = [ "base64 0.22.1", + "der", "log", "native-tls", - "once_cell", - "url", + "percent-encoding", + "rustls-pemfile", + "rustls-pki-types", + "ureq-proto", + "utf-8", + "webpki-root-certs 0.26.11", +] + +[[package]] +name = "ureq-proto" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59db78ad1923f2b1be62b6da81fe80b173605ca0d57f85da2e005382adf693f7" +dependencies = [ + "base64 0.22.1", + "http 1.3.1", + "httparse", + "log", ] [[package]] @@ -3215,12 +3879,6 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" -[[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" @@ -3235,24 +3893,26 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.11.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" +checksum = "3cf4199d1e5d15ddd86a694e4d0dffa9c323ce759fea589f00fef9d81cc1931d" dependencies = [ + "js-sys", "serde", + "wasm-bindgen", ] [[package]] name = "valuable" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "value-bag" -version = "1.10.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ef4c4aa54d5d05a279399bfa921ec387b7aba77caf7a682ae8d86785b8fdad2" +checksum = "943ce29a8a743eb10d6082545d861b24f9d1b160b7d741e0f2cdf726bec909c5" [[package]] name = "vcpkg" @@ -3302,7 +3962,7 @@ dependencies = [ "futures-util", "headers", "http 0.2.12", - "hyper", + "hyper 0.14.32", "log", "mime", "mime_guess", @@ -3322,26 +3982,36 @@ dependencies = [ [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] [[package]] name = "wasm-bindgen" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", @@ -3353,9 +4023,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.49" +version = "0.4.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" dependencies = [ "cfg-if", "js-sys", @@ -3366,9 +4036,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3376,9 +4046,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", @@ -3389,15 +4059,18 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] name = "web-sys" -version = "0.3.76" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" dependencies = [ "js-sys", "wasm-bindgen", @@ -3413,6 +4086,24 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "webpki-root-certs" +version = "0.26.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75c7f0ef91146ebfb530314f5f1d24528d7f0767efbfd31dce919275413e393e" +dependencies = [ + "webpki-root-certs 1.0.2", +] + +[[package]] +name = "webpki-root-certs" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e4ffd8df1c57e87c325000a3d6ef93db75279dc3a231125aac571650f22b12a" +dependencies = [ + "rustls-pki-types", +] + [[package]] name = "winapi" version = "0.3.9" @@ -3446,11 +4137,72 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-core" -version = "0.52.0" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" dependencies = [ - "windows-targets 0.52.6", + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-implement" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-interface" +version = "0.59.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-registry" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" +dependencies = [ + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link", ] [[package]] @@ -3480,6 +4232,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.3", +] + [[package]] name = "windows-targets" version = "0.48.5" @@ -3504,13 +4265,30 @@ dependencies = [ "windows_aarch64_gnullvm 0.52.6", "windows_aarch64_msvc 0.52.6", "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", + "windows_i686_gnullvm 0.52.6", "windows_i686_msvc 0.52.6", "windows_x86_64_gnu 0.52.6", "windows_x86_64_gnullvm 0.52.6", "windows_x86_64_msvc 0.52.6", ] +[[package]] +name = "windows-targets" +version = "0.53.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -3523,6 +4301,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" @@ -3535,6 +4319,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + [[package]] name = "windows_i686_gnu" version = "0.48.5" @@ -3547,12 +4337,24 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + [[package]] name = "windows_i686_msvc" version = "0.48.5" @@ -3565,6 +4367,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" @@ -3577,6 +4385,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" @@ -3589,6 +4403,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -3602,32 +4422,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] -name = "winreg" -version = "0.50.0" +name = "windows_x86_64_msvc" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" [[package]] -name = "write16" -version = "1.0.0" +name = "wit-bindgen-rt" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags 2.9.1", +] [[package]] name = "writeable" -version = "0.5.5" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" [[package]] name = "yoke" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" dependencies = [ "serde", "stable_deref_trait", @@ -3637,9 +4456,9 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", @@ -3649,19 +4468,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.35" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" dependencies = [ - "byteorder", "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.35" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" dependencies = [ "proc-macro2", "quote", @@ -3670,18 +4488,18 @@ dependencies = [ [[package]] name = "zerofrom" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", @@ -3689,11 +4507,28 @@ dependencies = [ "synstructure", ] +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" + +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + [[package]] name = "zerovec" -version = "0.10.4" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +checksum = "bdbb9122ea75b11bf96e7492afb723e8a7fbe12c67417aa95e7e3d18144d37cd" dependencies = [ "yoke", "zerofrom", @@ -3702,9 +4537,9 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.10.3" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 0cfba2b..9d07502 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,12 +13,12 @@ path = "src/main.rs" anyhow = "1.0.65" clap = { version = "4.0.17", features = ["derive", "cargo"] } clap-markdown = "0.1.4" -dirs = "4.0.0" +dirs = "6.0.0" futures = "0.3.28" glob = "0.3.1" hex = "0.4.3" http-auth-basic = "0.3.3" -indicatif = "0.17.2" +indicatif = "0.18.0" log = { version = "0.4.17", features = [ "release_max_level_debug", "max_level_debug", @@ -28,10 +28,10 @@ prettytable-rs = "0.10.0" protobuf = "3.3.0" rayon = "1.7.0" regex = "1.9.3" -reqwest = { version = "0.11.12", features = ["json", "blocking", "multipart"] } +reqwest = { version = "0.12.22", features = ["json", "blocking", "multipart"] } rpassword = "7.2.0" -sentry = "0.31.5" -sentry-anyhow = "0.31.5" +sentry = "0.42.0" +sentry-anyhow = "0.42.0" serde = { version = "1.0.147", features = ["derive"] } serde_json = "1.0.87" serde_with = "3.8.3" @@ -39,11 +39,11 @@ serde_yaml = "0.9.17" sha1 = "0.10.5" sha2 = "0.10.7" simple_logger = { version = "4.0.0", features = ["colors"] } -strum = "0.25" -strum_macros = "0.25" +strum = "0.27" +strum_macros = "0.27" temp-env = "0.3.6" -term = "0.7.0" -thiserror = "1.0.37" +term = "1.1.0" +thiserror = "2.0.12" tokio = { version = "1.32.0", features = ["rt-multi-thread"] } tokio-stream = "0.1.14" walkdir = "2.3.3" diff --git a/build.rs b/build.rs index a9fc4bc..b205c3d 100644 --- a/build.rs +++ b/build.rs @@ -1,6 +1,5 @@ -use std::env; -use std::fs; use std::path::Path; +use std::{env, fs}; const CONFIG: &str = "config.rs"; const LOCAL_API_URL: &str = "https://login.screenly.local"; diff --git a/flake.lock b/flake.lock index d14b9e9..d28c495 100644 --- a/flake.lock +++ b/flake.lock @@ -2,16 +2,16 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1735563628, - "narHash": "sha256-OnSAY7XDSx7CtDoqNh8jwVwh4xNL/2HaJxGjryLWzX8=", + "lastModified": 1754214453, + "narHash": "sha256-Q/I2xJn/j1wpkGhWkQnm20nShYnG7TI99foDBpXm1SY=", "owner": "nixos", "repo": "nixpkgs", - "rev": "b134951a4c9f3c995fd7be05f3243f8ecd65d798", + "rev": "5b09dc45f24cf32316283e62aec81ffee3c3e376", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixos-24.05", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } diff --git a/flake.nix b/flake.nix index 11111b3..2901d72 100644 --- a/flake.nix +++ b/flake.nix @@ -2,7 +2,7 @@ description = "Screenly CLI flake"; inputs = { - nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05"; + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; }; outputs = { self, nixpkgs }: diff --git a/rustfmt.toml b/rustfmt.toml new file mode 100644 index 0000000..26d1277 --- /dev/null +++ b/rustfmt.toml @@ -0,0 +1,6 @@ +group_imports = "StdExternalCrate" +imports_granularity = "Module" +unstable_features = true +format_generated_files = false + +ignore = ["furiousfilter/**"] diff --git a/src/api/asset.rs b/src/api/asset.rs index 02ab1af..1588a92 100644 --- a/src/api/asset.rs +++ b/src/api/asset.rs @@ -1,9 +1,9 @@ +use serde::{Deserialize, Serialize}; + use crate::api::Api; use crate::commands; use crate::commands::CommandError; -use serde::{Deserialize, Serialize}; - #[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)] pub struct AssetSignature { pub(crate) signature: String, @@ -24,8 +24,7 @@ impl Api { Ok(serde_json::from_value(commands::get( &self.authentication, &format!( - "v4/assets?select=signature&app_id=eq.{}&app_revision=eq.{}&type=eq.edge-app-file", - app_id, revision + "v4/assets?select=signature&app_id=eq.{app_id}&app_revision=eq.{revision}&type=eq.edge-app-file" ), )?)?) } @@ -38,8 +37,7 @@ impl Api { let response = commands::get( &self.authentication, &format!( - "v4/assets?select=status,processing_error,title&app_id=eq.{}&app_revision=eq.{}&status=neq.finished", - app_id, revision + "v4/assets?select=status,processing_error,title&app_id=eq.{app_id}&app_revision=eq.{revision}&status=neq.finished" ), )?; diff --git a/src/api/edge_app/app.rs b/src/api/edge_app/app.rs index cb26173..20a3b3d 100644 --- a/src/api/edge_app/app.rs +++ b/src/api/edge_app/app.rs @@ -1,12 +1,11 @@ use log::debug; +use serde::{Deserialize, Serialize}; +use serde_json::{json, Value}; use crate::api::Api; use crate::commands; use crate::commands::CommandError; -use serde::{Deserialize, Serialize}; -use serde_json::{json, Value}; - #[derive(Debug)] pub struct EdgeApps { pub value: serde_json::Value, @@ -53,7 +52,7 @@ impl Api { pub fn delete_app(&self, app_id: &str) -> Result<(), CommandError> { commands::delete( &self.authentication, - &format!("v4/edge-apps?id=eq.{}", app_id), + &format!("v4/edge-apps?id=eq.{app_id}"), )?; Ok(()) } @@ -61,7 +60,7 @@ impl Api { pub fn update_app(&self, app_id: &str, name: &str) -> Result<(), CommandError> { commands::patch( &self.authentication, - &format!("v4/edge-apps?select=name&id=eq.{}", app_id), + &format!("v4/edge-apps?select=name&id=eq.{app_id}"), &json!({ "name": name }), )?; Ok(()) @@ -70,14 +69,13 @@ impl Api { pub fn get_app(&self, app_id: &str) -> Result { let response = commands::get( &self.authentication, - &format!("v4/edge-apps?select=name&id=eq.{}", app_id), + &format!("v4/edge-apps?select=name&id=eq.{app_id}"), )?; let apps = serde_json::from_value::>(response)?; if apps.is_empty() { Err(CommandError::AppNotFound(format!( - "Edge app with ID '{}' not found.", - app_id + "Edge app with ID '{app_id}' not found." ))) } else { Ok(apps[0].clone()) @@ -88,7 +86,7 @@ impl Api { let response = commands::post(&self.authentication, "v4/edge-apps/copy-assets", &payload)?; let copied_assets = serde_json::from_value::>(response)?; - debug!("Copied assets: {:?}", copied_assets); + debug!("Copied assets: {copied_assets:?}"); Ok(copied_assets) } } diff --git a/src/api/edge_app/channel.rs b/src/api/edge_app/channel.rs index 5041865..601c224 100644 --- a/src/api/edge_app/channel.rs +++ b/src/api/edge_app/channel.rs @@ -1,11 +1,10 @@ +use serde::Deserialize; +use serde_json::json; + use crate::api::Api; use crate::commands; use crate::commands::CommandError; -use serde_json::json; - -use serde::Deserialize; - impl Api { pub fn update_channel( &self, @@ -16,8 +15,7 @@ impl Api { let response = commands::patch( &self.authentication, &format!( - "v4/edge-apps/channels?select=channel,app_revision&channel=eq.{}&app_id=eq.{}", - channel, app_id + "v4/edge-apps/channels?select=channel,app_revision&channel=eq.{channel}&app_id=eq.{app_id}" ), &json!( { diff --git a/src/api/edge_app/installation.rs b/src/api/edge_app/installation.rs index 44065b2..0671f46 100644 --- a/src/api/edge_app/installation.rs +++ b/src/api/edge_app/installation.rs @@ -1,10 +1,10 @@ +use serde::{Deserialize, Serialize}; +use serde_json::json; + use crate::api::Api; use crate::commands; use crate::commands::CommandError; -use serde::{Deserialize, Serialize}; -use serde_json::json; - #[derive(Debug)] pub struct EdgeAppInstances { pub value: serde_json::Value, @@ -20,10 +20,7 @@ impl Api { pub fn get_instance_name(&self, installation_id: &str) -> Result { let response = commands::get( &self.authentication, - &format!( - "v4.1/edge-apps/installations?select=name&id=eq.{}", - installation_id - ), + &format!("v4.1/edge-apps/installations?select=name&id=eq.{installation_id}"), )?; #[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)] @@ -42,10 +39,7 @@ impl Api { pub fn list_installations(&self, app_id: &str) -> Result { let response = commands::get( &self.authentication, - &format!( - "v4/edge-apps/installations?select=id,name&app_id=eq.{}", - app_id - ), + &format!("v4/edge-apps/installations?select=id,name&app_id=eq.{app_id}"), )?; let instances = EdgeAppInstances::new(response); @@ -56,7 +50,7 @@ impl Api { pub fn delete_installation(&self, installation_id: &str) -> Result<(), CommandError> { commands::delete( &self.authentication, - &format!("v4.1/edge-apps/installations?id=eq.{}", installation_id), + &format!("v4.1/edge-apps/installations?id=eq.{installation_id}"), )?; Ok(()) } @@ -71,7 +65,7 @@ impl Api { }); commands::patch( &self.authentication, - &format!("v4.1/edge-apps/installations?id=eq.{}", installation_id), + &format!("v4.1/edge-apps/installations?id=eq.{installation_id}"), &payload, )?; Ok(()) diff --git a/src/api/edge_app/setting.rs b/src/api/edge_app/setting.rs index 71ea06f..3233bc5 100644 --- a/src/api/edge_app/setting.rs +++ b/src/api/edge_app/setting.rs @@ -1,19 +1,17 @@ -use crate::commands; -use crate::commands::CommandError; -use crate::{api::Api, commands::EdgeAppSettings}; - -use log::debug; -use serde_json::{json, Value}; use std::collections::HashMap; use std::ops::Not; use std::str::FromStr; -use serde::Deserializer; +use log::debug; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_json::{json, Value}; use strum::IntoEnumIterator; use strum_macros::{Display, EnumIter, EnumString}; +use crate::api::Api; +use crate::commands; use crate::commands::serde_utils::{deserialize_string_field, serialize_non_empty_string_field}; -use serde::{Deserialize, Serialize}; +use crate::commands::{CommandError, EdgeAppSettings}; #[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)] pub struct SettingValue { @@ -173,8 +171,7 @@ where match SettingType::from_str(&s.to_lowercase()) { Ok(setting_type) => Ok(setting_type), Err(_) => Err(serde::de::Error::custom(format!( - "Setting type should be one of the following:\n{}", - valid_setting_types + "Setting type should be one of the following:\n{valid_setting_types}" ))), } } @@ -212,8 +209,7 @@ impl Api { Ok(deserialize_settings_from_array(commands::get( &self.authentication, &format!( - "v4.1/edge-apps/settings?select=name,type,default_value,optional,title,help_text&app_id=eq.{}&order=name.asc", - app_id, + "v4.1/edge-apps/settings?select=name,type,default_value,optional,title,help_text&app_id=eq.{app_id}&order=name.asc", ), )?)?) } @@ -222,8 +218,7 @@ impl Api { let response = commands::get( &self.authentication, &format!( - "v4.1/edge-apps/settings?select=is_global&app_id=eq.{}&name=eq.{}", - app_id, setting_key, + "v4.1/edge-apps/settings?select=is_global&app_id=eq.{app_id}&name=eq.{setting_key}", ), )?; @@ -247,8 +242,7 @@ impl Api { // TODO: test values are returned properly when there are several installations. Most likely need to feed installation_id to the request. // installation_id=is.null or installation_id=eq.smth let app_settings: Vec> = serde_json::from_value(commands::get(&self.authentication, - &format!("v4.1/edge-apps/settings?select=name,type,default_value,optional,title,help_text,edge_app_setting_values(value)&app_id=eq.{}&order=name.asc", - app_id, + &format!("v4.1/edge-apps/settings?select=name,type,default_value,optional,title,help_text,edge_app_setting_values(value)&app_id=eq.{app_id}&order=name.asc", ))?)?; Ok(EdgeAppSettings::new(serde_json::to_value(app_settings)?)) @@ -262,8 +256,7 @@ impl Api { let response = commands::get( &self.authentication, &format!( - "v4.1/edge-apps/settings?select=name,type,edge_app_setting_values(value)&app_id=eq.{}&edge_app_setting_values.app_id=eq.{}&name=eq.{}", - app_id, app_id, setting_key + "v4.1/edge-apps/settings?select=name,type,edge_app_setting_values(value)&app_id=eq.{app_id}&edge_app_setting_values.app_id=eq.{app_id}&name=eq.{setting_key}" ), )?; let settings = serde_json::from_value::>(response)?; @@ -282,8 +275,7 @@ impl Api { let response = commands::get( &self.authentication, &format!( - "v4.1/edge-apps/settings?select=name,type,edge_app_setting_values(value)&edge_app_setting_values.installation_id=eq.{}&name=eq.{}&app_id=eq.{}", - installation_id, setting_key, app_id + "v4.1/edge-apps/settings?select=name,type,edge_app_setting_values(value)&edge_app_setting_values.installation_id=eq.{installation_id}&name=eq.{setting_key}&app_id=eq.{app_id}" ), )?; @@ -388,8 +380,7 @@ impl Api { commands::patch( &self.authentication, &format!( - "v4.1/edge-apps/settings/values?app_id=eq.{}&name=eq.{}&installation_id=is.null", - app_id, setting_key + "v4.1/edge-apps/settings/values?app_id=eq.{app_id}&name=eq.{setting_key}&installation_id=is.null" ), &json!({ "value": setting_value, @@ -408,8 +399,7 @@ impl Api { commands::patch( &self.authentication, &format!( - "v4.1/edge-apps/settings/values?installation_id=eq.{}&name=eq.{}", - installation_id, setting_key + "v4.1/edge-apps/settings/values?installation_id=eq.{installation_id}&name=eq.{setting_key}" ), &json!({ "value": setting_value, diff --git a/src/api/edge_app/version.rs b/src/api/edge_app/version.rs index 53af89d..74808fa 100644 --- a/src/api/edge_app/version.rs +++ b/src/api/edge_app/version.rs @@ -1,21 +1,19 @@ -use crate::api::Api; -use crate::commands; -use crate::commands::CommandError; - -use log::debug; -use serde_json::Value; use std::collections::HashMap; +use log::debug; use serde::Deserialize; -use serde_json::json; +use serde_json::{json, Value}; + +use crate::api::Api; +use crate::commands; +use crate::commands::CommandError; impl Api { pub fn version_exists(&self, app_id: &str, revision: u32) -> Result { let get_response = commands::get( &self.authentication, &format!( - "v4/edge-apps/versions?select=revision&app_id=eq.{}&revision=eq.{}", - app_id, revision + "v4/edge-apps/versions?select=revision&app_id=eq.{app_id}&revision=eq.{revision}" ), )?; let version = @@ -37,7 +35,7 @@ impl Api { if let Some(arr) = response.as_array() { if let Some(obj) = arr.first() { if let Some(revision) = obj["revision"].as_u64() { - debug!("New version revision: {}", revision); + debug!("New version revision: {revision}"); return Ok(revision as u32); } } @@ -54,8 +52,7 @@ impl Api { let response = commands::get( &self.authentication, &format!( - "v4/edge-apps/versions?select=file_tree&app_id=eq.{}&revision=eq.{}", - app_id, revision + "v4/edge-apps/versions?select=file_tree&app_id=eq.{app_id}&revision=eq.{revision}" ), )?; @@ -74,10 +71,7 @@ impl Api { pub fn publish_version(&self, app_id: &str, revision: u32) -> Result<(), CommandError> { commands::patch( &self.authentication, - &format!( - "v4/edge-apps/versions?app_id=eq.{}&revision=eq.{}", - app_id, revision - ), + &format!("v4/edge-apps/versions?app_id=eq.{app_id}&revision=eq.{revision}"), &json!({"published": true}), )?; Ok(()) diff --git a/src/api/version.rs b/src/api/version.rs index 5ef379c..6972f25 100644 --- a/src/api/version.rs +++ b/src/api/version.rs @@ -1,9 +1,9 @@ +use serde::{Deserialize, Serialize}; + use crate::api::Api; use crate::commands; use crate::commands::CommandError; -use serde::{Deserialize, Serialize}; - #[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)] pub struct EdgeAppVersion { #[serde(default)] @@ -30,8 +30,7 @@ impl Api { let response = commands::get( &self.authentication, &format!( - "v4.1/edge-apps/versions?select=user_version,description,icon,author,homepage_url,revision,ready_signal&app_id=eq.{}&order=revision.desc&limit=1", - app_id + "v4.1/edge-apps/versions?select=user_version,description,icon,author,homepage_url,revision,ready_signal&app_id=eq.{app_id}&order=revision.desc&limit=1" ), )?; diff --git a/src/authentication.rs b/src/authentication.rs index fd1ef03..ae14e67 100644 --- a/src/authentication.rs +++ b/src/authentication.rs @@ -130,7 +130,7 @@ pub fn verify_and_store_token( fn verify_token(token: &str, api_url: &str) -> anyhow::Result<(), AuthenticationError> { // Using uuid of non existing playlist. If we get 404 it means we authenticated successfully. - let url = format!("{}/v3/groups/11CF9Z3GZR0005XXKH00F8V20R/", api_url); + let url = format!("{api_url}/v3/groups/11CF9Z3GZR0005XXKH00F8V20R/"); let secret = format!("Token {token}"); let client = reqwest::blocking::Client::builder().build()?; @@ -153,7 +153,8 @@ mod tests { use envtestkit::lock::lock_test; use envtestkit::set_env; - use httpmock::{Method::GET, MockServer}; + use httpmock::Method::GET; + use httpmock::MockServer; use simple_logger::SimpleLogger; use tempfile::tempdir; diff --git a/src/cli.rs b/src/cli.rs index 93236cb..b97f17a 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -441,7 +441,7 @@ pub fn handle_command_execution_result( ) } _ => { - error!("Error occurred: {:?}", e); + error!("Error occurred: {e:?}"); } } std::process::exit(1); @@ -511,7 +511,7 @@ pub fn handle_cli(cli: &Cli) { std::process::exit(1); } _ => { - error!("Error occurred: {:?}", e); + error!("Error occurred: {e:?}"); std::process::exit(1); } }, @@ -538,7 +538,7 @@ fn get_user_input() -> String { match stdin.read_line(&mut user_input) { Ok(_) => {} Err(e) => { - error!("Error occurred: {}", e); + error!("Error occurred: {e}"); std::process::exit(1); } } @@ -563,7 +563,7 @@ pub fn handle_cli_screen_command(command: &ScreenCommands) { ScreenCommands::Delete { uuid } => { match get_screen_name(uuid, &screen_command) { Ok(name) => { - info!("You are about to delete the screen named \"{}\". This operation cannot be reversed.", name); + info!("You are about to delete the screen named \"{name}\". This operation cannot be reversed."); info!("Enter the screen name to confirm the screen deletion: "); if name != get_user_input() { error!("The name you entered is incorrect. Aborting."); @@ -571,7 +571,7 @@ pub fn handle_cli_screen_command(command: &ScreenCommands) { } } Err(e) => { - error!("Error occurred: {}", e); + error!("Error occurred: {e}"); std::process::exit(1); } } @@ -582,7 +582,7 @@ pub fn handle_cli_screen_command(command: &ScreenCommands) { std::process::exit(0); } Err(e) => { - error!("Error occurred: {:?}", e); + error!("Error occurred: {e:?}"); std::process::exit(1); } } @@ -612,7 +612,7 @@ pub fn handle_cli_playlist_command(command: &PlaylistCommands) { match playlist_file { Ok(playlist) => { let pretty_playlist_file = serde_json::to_string_pretty(&playlist).unwrap(); - println!("{}", pretty_playlist_file); + println!("{pretty_playlist_file}"); } Err(e) => { eprintln!("Error occurred when getting playlist: {e:?}") @@ -694,7 +694,7 @@ pub fn handle_cli_asset_command(command: &AssetCommands) { AssetCommands::Delete { uuid } => { match get_asset_title(uuid, &asset_command) { Ok(title) => { - info!("You are about to delete the asset named \"{}\". This operation cannot be reversed.", title); + info!("You are about to delete the asset named \"{title}\". This operation cannot be reversed."); info!("Enter the asset title to confirm the asset deletion: "); io::stdout().flush().unwrap(); @@ -703,7 +703,7 @@ pub fn handle_cli_asset_command(command: &AssetCommands) { match stdin.read_line(&mut user_input) { Ok(_) => {} Err(e) => { - error!("Error occurred: {}", e); + error!("Error occurred: {e}"); std::process::exit(1); } } @@ -714,7 +714,7 @@ pub fn handle_cli_asset_command(command: &AssetCommands) { } } Err(e) => { - error!("Error occurred: {}", e); + error!("Error occurred: {e}"); std::process::exit(1); } } @@ -724,7 +724,7 @@ pub fn handle_cli_asset_command(command: &AssetCommands) { std::process::exit(0); } Err(e) => { - error!("Error occurred: {:?}", e); + error!("Error occurred: {e:?}"); std::process::exit(1); } } @@ -732,17 +732,15 @@ pub fn handle_cli_asset_command(command: &AssetCommands) { AssetCommands::InjectJs { uuid, path } => { let js_code = if path.starts_with("http://") || path.starts_with("https://") { match reqwest::blocking::get(path) { - Ok(response) => { - match response.status() { - StatusCode::OK => response.text().unwrap_or_default(), - status => { - error!("Failed to retrieve JS injection code. Wrong response status: {}", status); - std::process::exit(1); - } + Ok(response) => match response.status() { + StatusCode::OK => response.text().unwrap_or_default(), + status => { + error!("Failed to retrieve JS injection code. Wrong response status: {status}"); + std::process::exit(1); } - } + }, Err(e) => { - error!("Failed to retrieve JS injection code. Error: {}", e); + error!("Failed to retrieve JS injection code. Error: {e}"); std::process::exit(1); } } @@ -750,7 +748,7 @@ pub fn handle_cli_asset_command(command: &AssetCommands) { match fs::read_to_string(path) { Ok(text) => text, Err(e) => { - error!("Failed to read file with JS injection code. Error: {}", e); + error!("Failed to read file with JS injection code. Error: {e}"); std::process::exit(1); } } @@ -761,7 +759,7 @@ pub fn handle_cli_asset_command(command: &AssetCommands) { info!("Asset updated successfully."); } Err(e) => { - error!("Error occurred: {:?}", e); + error!("Error occurred: {e:?}"); std::process::exit(1); } } @@ -772,7 +770,7 @@ pub fn handle_cli_asset_command(command: &AssetCommands) { info!("Asset updated successfully."); } Err(e) => { - error!("Error occurred: {:?}", e); + error!("Error occurred: {e:?}"); std::process::exit(1); } } @@ -787,7 +785,7 @@ pub fn handle_cli_asset_command(command: &AssetCommands) { info!("Asset updated successfully."); } Err(e) => { - error!("Error occurred: {:?}", e); + error!("Error occurred: {e:?}"); std::process::exit(1); } } @@ -798,7 +796,7 @@ pub fn handle_cli_asset_command(command: &AssetCommands) { info!("Asset updated successfully."); } Err(e) => { - error!("Error occurred: {:?}", e); + error!("Error occurred: {e:?}"); std::process::exit(1); } } @@ -812,7 +810,7 @@ pub fn handle_cli_asset_command(command: &AssetCommands) { info!("Asset updated successfully."); } Err(e) => { - error!("Error occurred: {:?}", e); + error!("Error occurred: {e:?}"); std::process::exit(1); } } @@ -863,10 +861,7 @@ pub fn handle_cli_edge_app_command(command: &EdgeAppCommands) { delete_missing_settings, } => match edge_app_command.deploy(path.clone(), *delete_missing_settings) { Ok(revision) => { - println!( - "Edge app successfully deployed. Revision: {revision}.", - revision = revision - ); + println!("Edge app successfully deployed. Revision: {revision}."); } Err(e) => { eprintln!("Failed to upload edge app: {e}."); @@ -883,7 +878,7 @@ pub fn handle_cli_edge_app_command(command: &EdgeAppCommands) { println!("Edge app setting successfully set."); } Err(e) => { - eprintln!("Failed to set edge app setting: {}", e); + eprintln!("Failed to set edge app setting: {e}"); std::process::exit(1); } } @@ -893,13 +888,13 @@ pub fn handle_cli_edge_app_command(command: &EdgeAppCommands) { let actual_app_id = match edge_app_command.get_app_id(path.clone()) { Ok(id) => id, Err(e) => { - error!("Error calling delete Edge App: {}", e); + error!("Error calling delete Edge App: {e}"); std::process::exit(1); } }; match edge_app_command.get_app_name(&actual_app_id) { Ok(name) => { - info!("You are about to delete the Edge App named \"{}\". This operation cannot be reversed.", name); + info!("You are about to delete the Edge App named \"{name}\". This operation cannot be reversed."); info!("Enter the Edge App name to confirm the app deletion: "); if name != get_user_input() { error!("The name you entered is incorrect. Aborting."); @@ -907,7 +902,7 @@ pub fn handle_cli_edge_app_command(command: &EdgeAppCommands) { } } Err(e) => { - error!("Error occurred: {}", e); + error!("Error occurred: {e}"); std::process::exit(1); } } @@ -930,14 +925,14 @@ pub fn handle_cli_edge_app_command(command: &EdgeAppCommands) { println!("App id cleared from manifest."); } Err(e) => { - error!("Error occurred while clearing manifest: {}", e); + error!("Error occurred while clearing manifest: {e}"); std::process::exit(1); } } std::process::exit(0); } Err(e) => { - error!("Error occurred: {:?}", e); + error!("Error occurred: {e:?}"); std::process::exit(1); } } @@ -946,7 +941,7 @@ pub fn handle_cli_edge_app_command(command: &EdgeAppCommands) { let actual_app_id = match edge_app_command.get_app_id(path.clone()) { Ok(id) => id, Err(e) => { - error!("Error calling delete Edge App: {}", e); + error!("Error calling delete Edge App: {e}"); std::process::exit(1); } }; @@ -1071,7 +1066,7 @@ pub fn handle_cli_edge_app_command(command: &EdgeAppCommands) { let actual_app_id = match edge_app_command.get_app_id(path.clone()) { Ok(id) => id, Err(e) => { - error!("Error calling list instances: {}", e); + error!("Error calling list instances: {e}"); std::process::exit(1); } }; @@ -1084,7 +1079,7 @@ pub fn handle_cli_edge_app_command(command: &EdgeAppCommands) { let actual_app_id = match edge_app_command.get_app_id(path.clone()) { Ok(id) => id, Err(e) => { - error!("Error calling create instance: {}", e); + error!("Error calling create instance: {e}"); std::process::exit(1); } }; @@ -1121,7 +1116,7 @@ pub fn handle_cli_edge_app_command(command: &EdgeAppCommands) { match edge_app_command.get_installation_id(path.clone()) { Ok(_installation_id) => _installation_id, Err(e) => { - error!("Error calling delete setting: {}", e); + error!("Error calling delete setting: {e}"); std::process::exit(1); } }; @@ -1136,7 +1131,7 @@ pub fn handle_cli_edge_app_command(command: &EdgeAppCommands) { } }, Err(e) => { - eprintln!("Failed to delete edge app instance. {:?}", e); + eprintln!("Failed to delete edge app instance. {e:?}"); std::process::exit(1); } }; @@ -1171,12 +1166,12 @@ pub fn handle_cli_edge_app_command(command: &EdgeAppCommands) { #[cfg(test)] mod tests { - use httpmock::{Method::GET, MockServer}; + use httpmock::Method::GET; + use httpmock::MockServer; use tempfile::tempdir; - use crate::authentication::Config; - use super::*; + use crate::authentication::Config; #[test] fn test_get_screen_name_should_return_correct_screen_name() { @@ -1210,10 +1205,7 @@ mod tests { let new_path = transform_edge_app_path_to_manifest(&path).unwrap(); - assert_eq!( - new_path, - PathBuf::from(format!("{}/screenly.yml", dir_path)) - ); + assert_eq!(new_path, PathBuf::from(format!("{dir_path}/screenly.yml"))); } #[test] diff --git a/src/commands/asset.rs b/src/commands/asset.rs index 3a22924..50f4496 100644 --- a/src/commands/asset.rs +++ b/src/commands/asset.rs @@ -1,15 +1,16 @@ -use crate::authentication::Authentication; -use crate::commands; -use crate::commands::{Assets, CommandError}; +use std::collections::HashMap; +use std::fs::File; +use std::time::Duration; + use indicatif::{ProgressBar, ProgressStyle}; use log::{debug, info}; - use reqwest::header::HeaderMap; use reqwest::StatusCode; use serde_json::json; -use std::collections::HashMap; -use std::fs::File; -use std::time::Duration; + +use crate::authentication::Authentication; +use crate::commands; +use crate::commands::{Assets, CommandError}; pub struct AssetCommand { authentication: Authentication, @@ -159,16 +160,16 @@ impl AssetCommand { #[cfg(test)] mod tests { - use super::*; - use crate::authentication::Config; - use crate::commands::{Formatter, OutputType}; + use std::fs; use httpmock::Method::{DELETE, GET, PATCH, POST}; use httpmock::MockServer; - - use std::fs; use tempfile::tempdir; + use super::*; + use crate::authentication::Config; + use crate::commands::{Formatter, OutputType}; + #[test] fn test_list_assets_should_return_correct_asset_list() { let asset_list = json!([{ diff --git a/src/commands/edge_app/app.rs b/src/commands/edge_app/app.rs index 19f2ea5..d88622e 100644 --- a/src/commands/edge_app/app.rs +++ b/src/commands/edge_app/app.rs @@ -1,37 +1,33 @@ -use crate::api::edge_app::setting::{Setting, SettingType}; -use crate::api::version::EdgeAppVersion; -use crate::commands::edge_app::instance_manifest::InstanceManifest; -use crate::commands::edge_app::manifest::{EdgeAppManifest, Entrypoint}; -use crate::commands::edge_app::EdgeAppCommand; -use crate::commands::{CommandError, EdgeApps}; - -use indicatif::ProgressBar; -use log::debug; use std::collections::HashMap; -use std::{io, str, thread}; - -use reqwest::header::HeaderMap; -use reqwest::StatusCode; -use serde_json::json; -use serde_yaml; -use std::fs; use std::fs::File; use std::io::Write; use std::path::{Path, PathBuf}; use std::sync::{Arc, Mutex}; +use std::time::{Duration, Instant}; +use std::{fs, io, str, thread}; +use indicatif::ProgressBar; +use log::debug; use rayon::iter::{IntoParallelRefIterator, ParallelIterator}; -use std::time::{Duration, Instant}; +use reqwest::header::HeaderMap; +use reqwest::StatusCode; +use serde_json::json; +use serde_yaml; +use crate::api::edge_app::setting::{Setting, SettingType}; +use crate::api::version::EdgeAppVersion; +use crate::commands::edge_app::instance_manifest::InstanceManifest; +use crate::commands::edge_app::manifest::{ + EdgeAppManifest, Entrypoint, EntrypointType, MANIFEST_VERSION, +}; use crate::commands::edge_app::utils::{ collect_paths_for_upload, detect_changed_files, detect_changed_settings, - ensure_edge_app_has_all_necessary_files, generate_file_tree, FileChanges, SettingChanges, + ensure_edge_app_has_all_necessary_files, generate_file_tree, + transform_edge_app_path_to_manifest, transform_instance_path_to_instance_manifest, FileChanges, + SettingChanges, }; - -use crate::commands::edge_app::utils::transform_edge_app_path_to_manifest; - -use crate::commands::edge_app::manifest::{EntrypointType, MANIFEST_VERSION}; -use crate::commands::edge_app::utils::transform_instance_path_to_instance_manifest; +use crate::commands::edge_app::EdgeAppCommand; +use crate::commands::{CommandError, EdgeApps}; // Edge apps commands impl EdgeAppCommand { @@ -181,7 +177,7 @@ impl EdgeAppCommand { Err(_) => true, }; - debug!("File tree changed: {}", file_tree_changed); + debug!("File tree changed: {file_tree_changed}"); if !self.requires_upload(&changed_files) && !file_tree_changed && !version_metadata_changed { return Err(CommandError::NoChangesToUpload( @@ -420,7 +416,7 @@ impl EdgeAppCommand { revision: u32, changed_files: &FileChanges, ) -> Result<(), CommandError> { - debug!("Changed files: {:#?}", changed_files); + debug!("Changed files: {changed_files:#?}"); let copied_signatures = self.copy_edge_app_assets( app_id, @@ -439,7 +435,7 @@ impl EdgeAppCommand { return Ok(()); } - debug!("Uploading edge app files: {:#?}", files_to_upload); + debug!("Uploading edge app files: {files_to_upload:#?}"); let file_paths: Vec = files_to_upload .iter() .map(|file| edge_app_dir.join(&file.path)) @@ -465,7 +461,7 @@ impl EdgeAppCommand { } let prompt = format!("It seems like the setting \"{}\" is absent in the YAML file, but it exists on the server. If you wish to skip deletion, you can leave the input blank. Warning, deleting the setting will drop all the associated values. To proceed with deletion, please confirm the setting name by writing it down: ", setting.name); - println!("{}", prompt); + println!("{prompt}"); io::stdin() .read_line(&mut input_name) .expect("Failed to read input"); @@ -534,7 +530,7 @@ impl EdgeAppCommand { let mut headers = HeaderMap::new(); headers.insert("Prefer", "return=representation".parse()?); - debug!("Uploading file: {:?}", path); + debug!("Uploading file: {path:?}"); let form = reqwest::blocking::multipart::Form::new() .text( "title", @@ -610,18 +606,18 @@ impl EdgeAppCommand { #[cfg(test)] mod tests { - use super::*; use std::env; - use crate::commands::edge_app::manifest::MANIFEST_VERSION; use httpmock::Method::{DELETE, GET, PATCH, POST}; + use tempfile::tempdir; + use super::*; + use crate::commands::edge_app::manifest::MANIFEST_VERSION; use crate::commands::edge_app::test_utils::tests::{ create_edge_app_manifest_for_test, create_instance_manifest_for_test, prepare_edge_apps_test, }; use crate::commands::edge_app::utils::EdgeAppFile; - use tempfile::tempdir; #[test] fn test_edge_app_create_should_create_app_and_required_files() { @@ -1833,7 +1829,7 @@ mod tests { let result = command.get_installation_id(Some(temp_dir.path().to_str().unwrap().to_string())); - println!("{:?}", result); + println!("{result:?}"); assert!(result.is_ok()); assert_eq!(result.unwrap(), "01H2QZ6Z8WXWNDC0KQ198XCZEB"); } diff --git a/src/commands/edge_app/instance.rs b/src/commands/edge_app/instance.rs index bd7ad66..8831331 100644 --- a/src/commands/edge_app/instance.rs +++ b/src/commands/edge_app/instance.rs @@ -1,12 +1,10 @@ -use super::EdgeAppCommand; +use std::path::Path; +use std::{fs, str}; +use super::EdgeAppCommand; use crate::commands::edge_app::instance_manifest::{InstanceManifest, INSTANCE_MANIFEST_VERSION}; use crate::commands::edge_app::utils::transform_instance_path_to_instance_manifest; use crate::commands::{CommandError, EdgeAppInstances}; -use std::str; - -use std::fs; -use std::path::Path; impl EdgeAppCommand { pub fn list_instances(&self, app_id: &str) -> Result { @@ -80,14 +78,12 @@ impl EdgeAppCommand { #[cfg(test)] mod tests { - use crate::commands::edge_app::instance_manifest::InstanceManifest; - use crate::commands::edge_app::manifest::EdgeAppManifest; - use crate::commands::edge_app::manifest::{Entrypoint, EntrypointType}; - use crate::commands::edge_app::test_utils::tests::prepare_edge_apps_test; use httpmock::Method::{DELETE, GET, PATCH, POST}; + use serde_json::{json, Value}; - use serde_json::json; - use serde_json::Value; + use crate::commands::edge_app::instance_manifest::InstanceManifest; + use crate::commands::edge_app::manifest::{EdgeAppManifest, Entrypoint, EntrypointType}; + use crate::commands::edge_app::test_utils::tests::prepare_edge_apps_test; #[test] fn test_instance_list_should_list_instances() { diff --git a/src/commands/edge_app/instance_manifest.rs b/src/commands/edge_app/instance_manifest.rs index 3d6feee..8c138f9 100644 --- a/src/commands/edge_app/instance_manifest.rs +++ b/src/commands/edge_app/instance_manifest.rs @@ -1,20 +1,15 @@ -use std::{ - fs::{self, File}, - path::Path, -}; - +use std::fs::{self, File}; use std::io::Write; +use std::path::Path; use reqwest::Url; use serde::{Deserialize, Serialize}; - use serde_with::serde_as; +use crate::commands::edge_app::manifest::beautify_error_message; use crate::commands::serde_utils::{ deserialize_option_string_field, string_field_is_none_or_empty, }; - -use crate::commands::edge_app::manifest::beautify_error_message; use crate::commands::CommandError; pub const INSTANCE_MANIFEST_VERSION: &str = "instance_v1"; @@ -68,8 +63,7 @@ where match s.as_str() { INSTANCE_MANIFEST_VERSION => Ok(s), invalid => Err(serde::de::Error::custom(format!( - "Invalid syntax: {}. Only 'instance_v1' is accepted.", - invalid + "Invalid syntax: {invalid}. Only 'instance_v1' is accepted." ))), } } @@ -147,9 +141,10 @@ impl InstanceManifest { #[cfg(test)] mod tests { - use super::*; use tempfile::tempdir; + use super::*; + const INSTANCE_MANIFEST_FILENAME: &str = "instance.yml"; fn create_valid_manifest() -> InstanceManifest { diff --git a/src/commands/edge_app/manifest.rs b/src/commands/edge_app/manifest.rs index 325fbea..712f2e5 100644 --- a/src/commands/edge_app/manifest.rs +++ b/src/commands/edge_app/manifest.rs @@ -1,21 +1,18 @@ -use crate::commands::CommandError; use std::collections::HashMap; - use std::fs; use std::fs::File; -use std::io::ErrorKind; -use std::io::Write; +use std::io::{ErrorKind, Write}; use std::path::Path; use serde::{Deserialize, Serialize}; use serde_json::json; +use super::manifest_auth::AuthType; use crate::api::edge_app::setting::{deserialize_settings, serialize_settings, Setting}; use crate::commands::serde_utils::{ deserialize_option_string_field, string_field_is_none_or_empty, }; - -use super::manifest_auth::AuthType; +use crate::commands::CommandError; pub const MANIFEST_VERSION: &str = "manifest_v1"; @@ -140,10 +137,7 @@ where match s.as_str() { "basic" => Ok(AuthType::Basic), "bearer" => Ok(AuthType::Bearer), - _ => Err(serde::de::Error::custom(format!( - "Invalid auth type: {}", - s - ))), + _ => Err(serde::de::Error::custom(format!("Invalid auth type: {s}"))), } } @@ -155,8 +149,7 @@ where match s.as_str() { MANIFEST_VERSION => Ok(s), invalid => Err(serde::de::Error::custom(format!( - "Invalid syntax: {}. Only 'manifest_v1' is accepted.", - invalid + "Invalid syntax: {invalid}. Only 'manifest_v1' is accepted." ))), } } @@ -331,9 +324,10 @@ pub fn beautify_error_message(error: &str) -> String { #[cfg(test)] mod tests { + use tempfile::tempdir; + use super::*; use crate::api::edge_app::setting::{Setting, SettingType}; - use tempfile::tempdir; fn create_test_manifest() -> EdgeAppManifest { EdgeAppManifest { diff --git a/src/commands/edge_app/server.rs b/src/commands/edge_app/server.rs index f699344..40d315e 100644 --- a/src/commands/edge_app/server.rs +++ b/src/commands/edge_app/server.rs @@ -1,20 +1,20 @@ -use crate::api::edge_app::setting::SettingType; -use crate::commands::edge_app::manifest::EdgeAppManifest; -use crate::commands::edge_app::EdgeAppCommand; -use crate::commands::ignorer::Ignorer; -use crate::commands::CommandError; -use anyhow::Result; -use futures::future::{self, BoxFuture, FutureExt}; use std::collections::HashMap; +use std::path::{Path, PathBuf}; use std::sync::{Arc, Mutex}; use std::{fs, str}; +use anyhow::Result; +use futures::future::{self, BoxFuture, FutureExt}; use serde::{Deserialize, Serialize}; - -use std::path::{Path, PathBuf}; use warp::reject::Reject; use warp::{Filter, Rejection, Reply}; +use crate::api::edge_app::setting::SettingType; +use crate::commands::edge_app::manifest::EdgeAppManifest; +use crate::commands::edge_app::EdgeAppCommand; +use crate::commands::ignorer::Ignorer; +use crate::commands::CommandError; + pub const MOCK_DATA_FILENAME: &str = "mock-data.yml"; #[derive(Debug, Clone, Deserialize, PartialEq)] @@ -80,7 +80,7 @@ pub async fn run_server( tokio::task::spawn(server_future); - Ok(format!("http://{}/edge/1", addr)) + Ok(format!("http://{addr}/edge/1")) } #[derive(Debug)] @@ -134,7 +134,7 @@ async fn generate_content( let data: MockData = match serde_yaml::from_str(&content) { Ok(data) => data, Err(e) => { - eprintln!("Failed to parse mock data: {}", e); + eprintln!("Failed to parse mock data: {e}"); return Err(warp::reject::not_found()); } }; @@ -206,19 +206,19 @@ fn format_section(name: &str, items: &[(String, Value)]) -> String { let content = items .iter() .map(|(k, v)| match v { - Value::Str(s) => format!(" \"{}\": \"{}\"", k, s), + Value::Str(s) => format!(" \"{k}\": \"{s}\""), Value::Array(arr) => format!( " \"{}\": [{}]", k, arr.iter() - .map(|item| format!("\"{}\"", item)) + .map(|item| format!("\"{item}\"")) .collect::>() .join(", ") ), }) .collect::>() .join(",\n"); - format!(" {}: {{\n{}\n }}", name, content) + format!(" {name}: {{\n{content}\n }}") } impl EdgeAppCommand { @@ -250,7 +250,7 @@ impl EdgeAppCommand { "{}/index.html", address_shared.lock().unwrap().as_ref().unwrap() )) { - eprintln!("{}", e); + eprintln!("{e}"); } loop { @@ -332,10 +332,11 @@ impl EdgeAppCommand { #[cfg(test)] mod tests { - use super::*; use std::io::Write; + use tempfile::tempdir; + use super::*; use crate::api::edge_app::setting::{Setting, SettingType}; use crate::authentication::{Authentication, Config}; use crate::commands::edge_app::test_utils::tests::{ @@ -380,7 +381,7 @@ settings: let address = run_server(&dir_path, vec![("key".to_string(), "value".to_string())]) .await .unwrap(); - let resp = reqwest::get(format!("{}/screenly.js?version=1", address)) + let resp = reqwest::get(format!("{address}/screenly.js?version=1")) .await .unwrap(); let content = resp.text().await.unwrap(); @@ -412,7 +413,7 @@ settings: let address = run_server(&dir_path, vec![("key".to_string(), "value".to_string())]) .await .unwrap(); - let resp = reqwest::get(format!("{}/screenly.js?version=1", address)) + let resp = reqwest::get(format!("{address}/screenly.js?version=1")) .await .unwrap(); @@ -428,7 +429,7 @@ settings: .await .unwrap(); - let resp = reqwest::get(format!("{}/screenly.js?version=2", address)) + let resp = reqwest::get(format!("{address}/screenly.js?version=2")) .await .unwrap(); @@ -443,7 +444,7 @@ settings: let address = run_server(&dir_path, vec![("key".to_string(), "value".to_string())]) .await .unwrap(); - let resp = reqwest::get(format!("{}/screenly.js?version=1", address)) + let resp = reqwest::get(format!("{address}/screenly.js?version=1")) .await .unwrap(); diff --git a/src/commands/edge_app/setting.rs b/src/commands/edge_app/setting.rs index 92976a5..14945f4 100644 --- a/src/commands/edge_app/setting.rs +++ b/src/commands/edge_app/setting.rs @@ -1,13 +1,13 @@ -use crate::api::edge_app::setting::Setting; -use crate::commands::edge_app::EdgeAppCommand; -use crate::commands::{CommandError, EdgeAppSettings}; - -use log::debug; use std::collections::HashMap; use std::str; +use log::debug; use serde::{Deserialize, Serialize}; +use crate::api::edge_app::setting::Setting; +use crate::commands::edge_app::EdgeAppCommand; +use crate::commands::{CommandError, EdgeAppSettings}; + impl EdgeAppCommand { pub fn list_settings(&self, path: Option) -> Result { let app_id = self.get_app_id(path)?; @@ -98,7 +98,7 @@ impl EdgeAppCommand { if setting.edge_app_setting_values.len() == 1 && setting.edge_app_setting_values[0].get("value").unwrap() == setting_value { - println!("Setting value is already set to {}", setting_value); + println!("Setting value is already set to {setting_value}"); return Ok(()); } @@ -123,7 +123,7 @@ impl EdgeAppCommand { let response = self.api.create_setting(&app_id, setting); if response.is_err() { let c = self.api.get_settings(&app_id)?; - debug!("Existing settings: {:?}", c); + debug!("Existing settings: {c:?}"); return Err(CommandError::NoChangesToUpload("".to_owned())); } @@ -155,14 +155,14 @@ impl EdgeAppCommand { #[cfg(test)] mod tests { - use super::*; - use serde_json::{json, Value}; use std::env; - use crate::api::edge_app::setting::SettingType; + use httpmock::Method::{GET, PATCH, POST}; + use serde_json::{json, Value}; + use super::*; + use crate::api::edge_app::setting::SettingType; use crate::commands::edge_app::test_utils::tests::prepare_edge_apps_test; - use httpmock::Method::{GET, PATCH, POST}; #[test] fn test_list_settings_should_send_correct_request() { @@ -723,7 +723,7 @@ mod tests { setting_is_global_get_mock.assert(); setting_mock_get.assert(); secrets_values_mock_post.assert(); - debug!("result: {:?}", result); + debug!("result: {result:?}"); assert!(result.is_ok()); } @@ -804,7 +804,7 @@ mod tests { setting_is_global_get_mock.assert(); setting_mock_get.assert(); secrets_values_mock_post.assert(); - debug!("result: {:?}", result); + debug!("result: {result:?}"); assert!(result.is_ok()); } diff --git a/src/commands/edge_app/test_utils.rs b/src/commands/edge_app/test_utils.rs index eaec855..ec8d1ed 100644 --- a/src/commands/edge_app/test_utils.rs +++ b/src/commands/edge_app/test_utils.rs @@ -1,10 +1,10 @@ #[cfg(test)] pub mod tests { - use crate::authentication::Config; - use tempfile::TempDir; + use httpmock::MockServer; + use tempfile::{tempdir, TempDir}; use crate::api::edge_app::setting::Setting; - use crate::authentication::Authentication; + use crate::authentication::{Authentication, Config}; use crate::commands::edge_app::instance_manifest::{ InstanceManifest, INSTANCE_MANIFEST_VERSION, }; @@ -13,10 +13,6 @@ pub mod tests { }; use crate::commands::edge_app::EdgeAppCommand; - use httpmock::MockServer; - - use tempfile::tempdir; - pub fn create_edge_app_manifest_for_test(settings: Vec) -> EdgeAppManifest { EdgeAppManifest { syntax: MANIFEST_VERSION.to_owned(), diff --git a/src/commands/edge_app/utils.rs b/src/commands/edge_app/utils.rs index 01602d2..5068daa 100644 --- a/src/commands/edge_app/utils.rs +++ b/src/commands/edge_app/utils.rs @@ -1,18 +1,17 @@ +use std::collections::{HashMap, HashSet}; +use std::env; +use std::path::{Path, PathBuf}; + +use log::debug; +use walkdir::{DirEntry, WalkDir}; + use crate::api::asset::AssetSignature; use crate::api::edge_app::setting::{Setting, SettingType}; use crate::commands::edge_app::instance_manifest::InstanceManifest; use crate::commands::edge_app::manifest::EdgeAppManifest; +use crate::commands::ignorer::Ignorer; use crate::commands::CommandError; use crate::signature::{generate_signature, sig_to_hex}; -use log::debug; -use std::collections::{HashMap, HashSet}; -use std::env; -use std::path::PathBuf; - -use crate::commands::ignorer::Ignorer; - -use std::path::Path; -use walkdir::{DirEntry, WalkDir}; const INSTANCE_FILE_NAME_ENV: &str = "INSTANCE_FILE_NAME"; const MANIFEST_FILE_NAME_ENV: &str = "MANIFEST_FILE_NAME"; @@ -137,7 +136,7 @@ pub fn collect_paths_for_upload(path: &Path) -> Result, Command let mut files = Vec::new(); let ignore = Ignorer::new(path).map_err(|e| { - CommandError::IgnoreError(format!("Failed to initialize ignore module: {}", e)) + CommandError::IgnoreError(format!("Failed to initialize ignore module: {e}")) })?; for entry in WalkDir::new(path) @@ -311,15 +310,17 @@ pub fn validate_manifests_dependacies( #[cfg(test)] mod tests { + use std::fs::File; + use std::io::Write; + + use temp_env; + use tempfile::tempdir; + use super::*; use crate::api::edge_app::setting::{Setting, SettingType}; use crate::commands::edge_app::instance_manifest::INSTANCE_MANIFEST_VERSION; use crate::commands::edge_app::manifest::{Auth, Entrypoint, EntrypointType, MANIFEST_VERSION}; use crate::commands::edge_app::manifest_auth::AuthType; - use std::fs::File; - use std::io::Write; - use temp_env; - use tempfile::tempdir; fn create_manifest() -> EdgeAppManifest { EdgeAppManifest { diff --git a/src/commands/ignorer.rs b/src/commands/ignorer.rs index 6942f3e..4e3210c 100644 --- a/src/commands/ignorer.rs +++ b/src/commands/ignorer.rs @@ -1,6 +1,7 @@ +use std::path::{Path, PathBuf}; + use anyhow::Result; use regex::RegexSet; -use std::path::{Path, PathBuf}; pub struct Ignorer { base_path: PathBuf, @@ -23,7 +24,7 @@ impl Ignorer { } else if pattern.contains('*') { // Convert wildcard '*' to regex '.*' let converted = pattern.replace('.', r"\.").replace('*', r".*"); - patterns.push(format!("^{}$", converted)); + patterns.push(format!("^{converted}$")); } else { patterns.push(format!("^{}$", regex::escape(pattern))); } @@ -47,12 +48,14 @@ impl Ignorer { #[cfg(test)] mod tests { - use super::Ignorer; use std::fs::File; use std::io::Write; use std::path::Path; + use tempfile::tempdir; + use super::Ignorer; + #[test] fn test_when_no_ignore_file_should_ignore_nothing() { let dir = tempdir().unwrap(); diff --git a/src/commands/mod.rs b/src/commands/mod.rs index 8fe758e..bff6612 100644 --- a/src/commands/mod.rs +++ b/src/commands/mod.rs @@ -1,17 +1,15 @@ -use crate::api::edge_app::app::EdgeApps; -use crate::api::edge_app::installation::EdgeAppInstances; -use crate::{Authentication, AuthenticationError}; -use prettytable::{cell, Cell, Row}; - -use log::debug; use std::time::Duration; +use log::debug; +use prettytable::{cell, Cell, Row}; +use reqwest::header::{HeaderMap, InvalidHeaderValue}; +use reqwest::StatusCode; use serde::{Deserialize, Deserializer, Serialize}; - use thiserror::Error; -use reqwest::header::{HeaderMap, InvalidHeaderValue}; -use reqwest::StatusCode; +use crate::api::edge_app::app::EdgeApps; +use crate::api::edge_app::installation::EdgeAppInstances; +use crate::{Authentication, AuthenticationError}; pub mod asset; pub mod edge_app; @@ -352,7 +350,7 @@ impl Formatter for EdgeAppSettings { } return Cell::new(""); } - debug!("field_name: {}, field_value: {:?}", field_name, field_value); + debug!("field_name: {field_name}, field_value: {field_value:?}"); Cell::new(field_value.as_str().unwrap_or_default()) }, ), diff --git a/src/commands/playlist.rs b/src/commands/playlist.rs index 450cb59..02e2f00 100644 --- a/src/commands/playlist.rs +++ b/src/commands/playlist.rs @@ -1,7 +1,8 @@ +use serde_json::json; + use crate::authentication::Authentication; use crate::commands; use crate::commands::{CommandError, PlaylistFile, PlaylistItem, PlaylistItems, Playlists}; -use serde_json::json; const POSITION_MULTIPLIER: u64 = 100000; pub struct PlaylistCommand { @@ -162,13 +163,14 @@ impl PlaylistCommand { #[cfg(test)] mod tests { - use super::*; - use crate::authentication::Config; + use std::ffi::OsString; use envtestkit::set_env; use httpmock::Method::{DELETE, GET, PATCH, POST}; use httpmock::MockServer; - use std::ffi::OsString; + + use super::*; + use crate::authentication::Config; #[test] fn test_create_playlist_should_send_correct_request() { diff --git a/src/commands/screen.rs b/src/commands/screen.rs index 21cce78..9434eec 100644 --- a/src/commands/screen.rs +++ b/src/commands/screen.rs @@ -1,10 +1,11 @@ +use std::collections::HashMap; + +use reqwest::StatusCode; + use crate::authentication::Authentication; use crate::commands; use crate::commands::{CommandError, Screens}; -use reqwest::StatusCode; -use std::collections::HashMap; - pub struct ScreenCommand { authentication: Authentication, } @@ -67,16 +68,14 @@ impl ScreenCommand { #[cfg(test)] mod tests { - use super::*; - - use httpmock::{Method::GET, MockServer}; - - use httpmock::Method::{DELETE, POST}; + use httpmock::Method::{DELETE, GET, POST}; + use httpmock::MockServer; + use serde_json::{json, Value}; + use tempfile::tempdir; + use super::*; use crate::authentication::{Authentication, Config}; use crate::commands::{Formatter, OutputType}; - use serde_json::{json, Value}; - use tempfile::tempdir; #[test] fn test_list_screens_should_return_correct_screen_list() { diff --git a/src/commands/serde_utils.rs b/src/commands/serde_utils.rs index b4b7db9..9bb7092 100644 --- a/src/commands/serde_utils.rs +++ b/src/commands/serde_utils.rs @@ -15,8 +15,7 @@ where Some(ref s) if s.trim().is_empty() => { if error_on_empty { Err(serde::de::Error::custom(format!( - "Field \"{}\" cannot be empty", - field_name + "Field \"{field_name}\" cannot be empty" ))) } else { Ok(None) @@ -36,8 +35,7 @@ where { if value.trim().is_empty() { Err(serde::ser::Error::custom(format!( - "Field \"{}\" cannot be empty", - field_name + "Field \"{field_name}\" cannot be empty" ))) } else { serializer.serialize_str(value) @@ -56,8 +54,7 @@ where if s.trim().is_empty() && error_on_empty { Err(serde::de::Error::custom(format!( - "Field \"{}\" cannot be empty", - field_name + "Field \"{field_name}\" cannot be empty" ))) } else { Ok(s) diff --git a/src/main.rs b/src/main.rs index c3064e8..ce4e956 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,11 +7,12 @@ mod signature; extern crate prettytable; -use crate::authentication::{Authentication, AuthenticationError}; +use std::env; + use clap::Parser; use simple_logger::{init_with_env, SimpleLogger}; -use std::env; +use crate::authentication::{Authentication, AuthenticationError}; fn main() { if env::var("RUST_LOG").is_ok() { diff --git a/src/pb_signature.rs b/src/pb_signature.rs index 7e57833..390c633 100644 --- a/src/pb_signature.rs +++ b/src/pb_signature.rs @@ -22,7 +22,7 @@ /// Generated files are compatible only with the same version /// of protobuf runtime. -const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_3_7_1; +const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_3_7_2; // @@protoc_insertion_point(message:Signature) #[derive(PartialEq,Clone,Default,Debug)] diff --git a/src/signature.rs b/src/signature.rs index b177cf3..410c974 100644 --- a/src/signature.rs +++ b/src/signature.rs @@ -1,15 +1,14 @@ -use crate::commands::CommandError; - -use crate::pb_signature::signature::Hash; -use crate::pb_signature::Signature; -use protobuf::Message; -use sha2::Digest; -use sha2::Sha256; use std::fs::File; - use std::io::Read; use std::path::Path; +use protobuf::Message; +use sha2::{Digest, Sha256}; + +use crate::commands::CommandError; +use crate::pb_signature::signature::Hash; +use crate::pb_signature::Signature; + pub fn sig_to_hex(signature: &Signature) -> String { let serialized_bytes = signature .write_to_bytes() @@ -59,10 +58,12 @@ pub fn checksum(chunk: &[u8]) -> Vec { #[cfg(test)] mod tests { - use super::*; use std::fs; + use tempfile::tempdir; + use super::*; + #[test] fn test_generate_signature_when_file_does_not_exist_should_return_error() { let file_path = Path::new("/non-existent-file");