From dec5dcc500bd12c153ad1f812a1e836e5a5aa15d Mon Sep 17 00:00:00 2001 From: Enrique Ortiz Date: Sat, 11 Nov 2023 02:26:59 -0400 Subject: [PATCH 1/8] chore: cli improvements --- crates/svm-rs/src/bin/svm-bin/install.rs | 45 +++++++ crates/svm-rs/src/bin/svm-bin/list.rs | 29 +++++ crates/svm-rs/src/bin/svm-bin/main.rs | 156 +++-------------------- crates/svm-rs/src/bin/svm-bin/remove.rs | 55 ++++++++ crates/svm-rs/src/bin/svm-bin/usev.rs | 42 ++++++ crates/svm-rs/src/bin/svm-bin/utils.rs | 8 ++ crates/svm-rs/src/releases.rs | 140 ++++++++++---------- 7 files changed, 272 insertions(+), 203 deletions(-) create mode 100644 crates/svm-rs/src/bin/svm-bin/install.rs create mode 100644 crates/svm-rs/src/bin/svm-bin/list.rs create mode 100644 crates/svm-rs/src/bin/svm-bin/remove.rs create mode 100644 crates/svm-rs/src/bin/svm-bin/usev.rs create mode 100644 crates/svm-rs/src/bin/svm-bin/utils.rs diff --git a/crates/svm-rs/src/bin/svm-bin/install.rs b/crates/svm-rs/src/bin/svm-bin/install.rs new file mode 100644 index 0000000..7fa1869 --- /dev/null +++ b/crates/svm-rs/src/bin/svm-bin/install.rs @@ -0,0 +1,45 @@ +use crate::print; +use clap::Parser; +use dialoguer::Input; +use semver::Version; + +#[derive(Debug, Clone, Parser)] +pub struct InstallArgs { + #[clap(long, short)] + pub versions: Vec, +} + +impl InstallArgs { + pub async fn run(self) -> anyhow::Result<()> { + for version in self.versions { + let version = Version::parse(&version)?; + let all_versions = svm_lib::all_versions().await?; + let installed_versions = svm_lib::installed_versions().unwrap_or_default(); + let current_version = svm_lib::current_version()?; + + if installed_versions.contains(&version) { + println!("Solc {version} is already installed"); + let input: String = Input::new() + .with_prompt("Would you like to set it as the global version?") + .with_initial_text("Y") + .default("N".into()) + .interact_text()?; + if matches!(input.as_str(), "y" | "Y" | "yes" | "Yes") { + svm_lib::use_version(&version)?; + print::set_global_version(&version); + } + } else if all_versions.contains(&version) { + let spinner = print::installing_version(&version); + svm_lib::install(&version).await?; + spinner.finish_with_message(format!("Downloaded Solc: {version}")); + if current_version.is_none() { + svm_lib::use_version(&version)?; + print::set_global_version(&version); + } + } else { + print::unsupported_version(&version); + } + } + Ok(()) + } +} diff --git a/crates/svm-rs/src/bin/svm-bin/list.rs b/crates/svm-rs/src/bin/svm-bin/list.rs new file mode 100644 index 0000000..94bfc5a --- /dev/null +++ b/crates/svm-rs/src/bin/svm-bin/list.rs @@ -0,0 +1,29 @@ +use std::collections::HashSet; + +use crate::print; +use clap::Parser; +use semver::Version; + +#[derive(Debug, Parser)] +pub struct ListArgs; + +impl ListArgs { + pub async fn run(self) -> anyhow::Result<()> { + let all_versions = svm_lib::all_versions().await?; + let installed_versions = svm_lib::installed_versions().unwrap_or_default(); + let current_version = svm_lib::current_version()?; + + let a: HashSet = all_versions.iter().cloned().collect(); + let b: HashSet = installed_versions.iter().cloned().collect(); + let c = &a - &b; + + let mut available_versions = c.iter().cloned().collect::>(); + available_versions.sort(); + + print::current_version(current_version); + print::installed_versions(installed_versions); + print::available_versions(available_versions); + + Ok(()) + } +} diff --git a/crates/svm-rs/src/bin/svm-bin/main.rs b/crates/svm-rs/src/bin/svm-bin/main.rs index a57b08b..f3f220a 100644 --- a/crates/svm-rs/src/bin/svm-bin/main.rs +++ b/crates/svm-rs/src/bin/svm-bin/main.rs @@ -1,22 +1,29 @@ -use clap::Parser; -use dialoguer::Input; -use semver::Version; +//! Main svm-rs binary entry point. -use std::collections::HashSet; +mod install; +mod list; +pub mod print; +mod remove; +mod usev; +mod utils; -mod print; +use clap::Parser; +use usev::UseArgs; +use install::InstallArgs; +use list::ListArgs; +use remove::RemoveArgs; #[derive(Debug, Parser)] #[clap(name = "solc-vm", about = "Solc version manager")] enum SolcVm { #[clap(about = "List all versions of Solc")] - List, + List(ListArgs), #[clap(about = "Install Solc versions")] - Install { versions: Vec }, + Install(InstallArgs), #[clap(about = "Use a Solc version")] - Use { version: String }, + Use(UseArgs), // { version: String }, #[clap(about = "Remove a Solc version")] - Remove { version: String }, + Remove(RemoveArgs), // { version: String }, } #[tokio::main] @@ -26,133 +33,10 @@ async fn main() -> anyhow::Result<()> { svm_lib::setup_data_dir()?; match opt { - SolcVm::List => { - handle_list().await?; - } - SolcVm::Install { versions } => { - for v in versions { - handle_install(Version::parse(&v)?).await?; - } - } - SolcVm::Use { version } => { - handle_use(Version::parse(&version)?).await?; - } - SolcVm::Remove { version } => match version.as_str() { - "ALL" | "all" => { - for v in svm_lib::installed_versions().unwrap_or_default() { - svm_lib::remove_version(&v)?; - } - svm_lib::unset_global_version()?; - } - _ => handle_remove(Version::parse(&version)?)?, - }, - } - - Ok(()) -} - -async fn handle_list() -> anyhow::Result<()> { - let all_versions = svm_lib::all_versions().await?; - let installed_versions = svm_lib::installed_versions().unwrap_or_default(); - let current_version = svm_lib::current_version()?; - - let a: HashSet = all_versions.iter().cloned().collect(); - let b: HashSet = installed_versions.iter().cloned().collect(); - let c = &a - &b; - - let mut available_versions = c.iter().cloned().collect::>(); - available_versions.sort(); - - print::current_version(current_version); - print::installed_versions(installed_versions); - print::available_versions(available_versions); - - Ok(()) -} - -async fn handle_install(version: Version) -> anyhow::Result<()> { - let all_versions = svm_lib::all_versions().await?; - let installed_versions = svm_lib::installed_versions().unwrap_or_default(); - let current_version = svm_lib::current_version()?; - - if installed_versions.contains(&version) { - println!("Solc {version} is already installed"); - let input: String = Input::new() - .with_prompt("Would you like to set it as the global version?") - .with_initial_text("Y") - .default("N".into()) - .interact_text()?; - if matches!(input.as_str(), "y" | "Y" | "yes" | "Yes") { - svm_lib::use_version(&version)?; - print::set_global_version(&version); - } - } else if all_versions.contains(&version) { - let spinner = print::installing_version(&version); - svm_lib::install(&version).await?; - spinner.finish_with_message(format!("Downloaded Solc: {version}")); - if current_version.is_none() { - svm_lib::use_version(&version)?; - print::set_global_version(&version); - } - } else { - print::unsupported_version(&version); - } - - Ok(()) -} - -async fn handle_use(version: Version) -> anyhow::Result<()> { - let all_versions = svm_lib::all_versions().await?; - let installed_versions = svm_lib::installed_versions().unwrap_or_default(); - - if installed_versions.contains(&version) { - svm_lib::use_version(&version)?; - print::set_global_version(&version); - } else if all_versions.contains(&version) { - println!("Solc {version} is not installed"); - let input: String = Input::new() - .with_prompt("Would you like to install it?") - .with_initial_text("Y") - .default("N".into()) - .interact_text()?; - if matches!(input.as_str(), "y" | "Y" | "yes" | "Yes") { - handle_install(version).await?; - } - } else { - print::unsupported_version(&version); - } - - Ok(()) -} - -fn handle_remove(version: Version) -> anyhow::Result<()> { - let mut installed_versions = svm_lib::installed_versions().unwrap_or_default(); - let current_version = svm_lib::current_version()?; - - if installed_versions.contains(&version) { - let input: String = Input::new() - .with_prompt("Are you sure?") - .with_initial_text("Y") - .default("N".into()) - .interact_text()?; - if matches!(input.as_str(), "y" | "Y" | "yes" | "Yes") { - svm_lib::remove_version(&version)?; - if let Some(v) = current_version { - if version == v { - if let Some(i) = installed_versions.iter().position(|x| *x == v) { - installed_versions.remove(i); - if let Some(new_version) = installed_versions.pop() { - svm_lib::use_version(&new_version)?; - print::set_global_version(&new_version); - } else { - svm_lib::unset_global_version()?; - } - } - } - } - } - } else { - print::version_not_found(&version); + SolcVm::List(cmd) => utils::block_on(cmd.run())?, + SolcVm::Install(cmd) => utils::block_on(cmd.run())?, + SolcVm::Use(cmd) => utils::block_on(cmd.run())?, + SolcVm::Remove(cmd) => utils::block_on(cmd.run())?, } Ok(()) diff --git a/crates/svm-rs/src/bin/svm-bin/remove.rs b/crates/svm-rs/src/bin/svm-bin/remove.rs new file mode 100644 index 0000000..7638908 --- /dev/null +++ b/crates/svm-rs/src/bin/svm-bin/remove.rs @@ -0,0 +1,55 @@ +use crate::print; +use clap::Parser; +use dialoguer::Input; +use semver::Version; + +#[derive(Debug, Clone, Parser)] +pub struct RemoveArgs { + #[clap(long, short)] + // TODO: Serde helper for parsing Version(?) + pub version: String, +} + +impl RemoveArgs { + pub async fn run(self) -> anyhow::Result<()> { + if self.version == "ALL" || self.version == "all" { + for v in svm_lib::installed_versions().unwrap_or_default() { + svm_lib::remove_version(&v)?; + } + svm_lib::unset_global_version()?; + return Ok(()); + } else { + let mut installed_versions = svm_lib::installed_versions().unwrap_or_default(); + let current_version = svm_lib::current_version()?; + let version = Version::parse(&self.version)?; + + if installed_versions.contains(&version) { + let input: String = Input::new() + .with_prompt("Are you sure?") + .with_initial_text("Y") + .default("N".into()) + .interact_text()?; + if matches!(input.as_str(), "y" | "Y" | "yes" | "Yes") { + svm_lib::remove_version(&version)?; + if let Some(v) = current_version { + if version == v { + if let Some(i) = installed_versions.iter().position(|x| *x == v) { + installed_versions.remove(i); + if let Some(new_version) = installed_versions.pop() { + svm_lib::use_version(&new_version)?; + print::set_global_version(&new_version); + } else { + svm_lib::unset_global_version()?; + } + } + } + } + } + } else { + print::version_not_found(&version); + } + } + + Ok(()) + } +} diff --git a/crates/svm-rs/src/bin/svm-bin/usev.rs b/crates/svm-rs/src/bin/svm-bin/usev.rs new file mode 100644 index 0000000..d176a3d --- /dev/null +++ b/crates/svm-rs/src/bin/svm-bin/usev.rs @@ -0,0 +1,42 @@ +use crate::{install::InstallArgs, print}; +use clap::Parser; +use dialoguer::Input; +use semver::Version; + +#[derive(Debug, Clone, Parser)] +pub struct UseArgs { + #[clap(long, short)] + // TODO: Serde helper for parsing Version(?) + pub version: String, +} + +impl UseArgs { + pub async fn run(self) -> anyhow::Result<()> { + let version = Version::parse(&self.version)?; + let all_versions = svm_lib::all_versions().await?; + let installed_versions = svm_lib::installed_versions().unwrap_or_default(); + + if installed_versions.contains(&version) { + svm_lib::use_version(&version)?; + print::set_global_version(&version); + } else if all_versions.contains(&version) { + println!("Solc {version} is not installed"); + let input: String = Input::new() + .with_prompt("Would you like to install it?") + .with_initial_text("Y") + .default("N".into()) + .interact_text()?; + if matches!(input.as_str(), "y" | "Y" | "yes" | "Yes") { + // TODO: Break up install fn into minimal install + crate::install::InstallArgs::run(InstallArgs { + versions: vec![self.version], + }) + .await?; + } + } else { + print::unsupported_version(&version); + } + + Ok(()) + } +} diff --git a/crates/svm-rs/src/bin/svm-bin/utils.rs b/crates/svm-rs/src/bin/svm-bin/utils.rs new file mode 100644 index 0000000..d0090ec --- /dev/null +++ b/crates/svm-rs/src/bin/svm-bin/utils.rs @@ -0,0 +1,8 @@ +use std::future::Future; + +/// Runs the `future` in a new [`tokio::runtime::Runtime`] +#[allow(unused)] +pub fn block_on(future: F) -> F::Output { + let rt = tokio::runtime::Runtime::new().expect("could not start tokio rt"); + rt.block_on(future) +} diff --git a/crates/svm-rs/src/releases.rs b/crates/svm-rs/src/releases.rs index 9f7ec60..323c9f6 100644 --- a/crates/svm-rs/src/releases.rs +++ b/crates/svm-rs/src/releases.rs @@ -121,83 +121,89 @@ mod hex_string { /// Blocking version fo [`all_realeases`] #[cfg(feature = "blocking")] pub fn blocking_all_releases(platform: Platform) -> Result { - if platform == Platform::LinuxAarch64 { - return Ok(reqwest::blocking::get(LINUX_AARCH64_RELEASES_URL)?.json::()?); - } - - if platform == Platform::MacOsAarch64 { - // The supported versions for both macos-amd64 and macos-aarch64 are the same. - // - // 1. For version >= 0.8.5 we fetch native releases from - // https://github.com/alloy-rs/solc-builds - // - // 2. For version <= 0.8.4 we fetch releases from https://binaries.soliditylang.org and - // require Rosetta support. - let mut native = reqwest::blocking::get(MACOS_AARCH64_RELEASES_URL)?.json::()?; - let mut releases = reqwest::blocking::get(format!( - "{}/{}/list.json", - SOLC_RELEASES_URL, - Platform::MacOsAmd64, - ))? - .json::()?; - releases - .builds - .retain(|b| b.version.lt(&MACOS_AARCH64_NATIVE)); - releases.builds.extend_from_slice(&native.builds); - releases.releases.append(&mut native.releases); - return Ok(releases); + match platform { + Platform::LinuxAarch64 => { + return Ok(reqwest::blocking::get(LINUX_AARCH64_RELEASES_URL)?.json::()?) + } + Platform::MacOsAarch64 => { + // The supported versions for both macos-amd64 and macos-aarch64 are the same. + // + // 1. For version >= 0.8.5 we fetch native releases from + // https://github.com/alloy-rs/solc-builds + // + // 2. For version <= 0.8.4 we fetch releases from https://binaries.soliditylang.org and + // require Rosetta support. + let mut native = + reqwest::blocking::get(MACOS_AARCH64_RELEASES_URL)?.json::()?; + let mut releases = reqwest::blocking::get(format!( + "{}/{}/list.json", + SOLC_RELEASES_URL, + Platform::MacOsAmd64, + ))? + .json::()?; + releases + .builds + .retain(|b| b.version.lt(&MACOS_AARCH64_NATIVE)); + releases.builds.extend_from_slice(&native.builds); + releases.releases.append(&mut native.releases); + return Ok(releases); + } + _ => { + let releases = + reqwest::blocking::get(format!("{SOLC_RELEASES_URL}/{platform}/list.json"))? + .json::()?; + Ok(unified_releases(releases, platform)) + } } - - let releases = reqwest::blocking::get(format!("{SOLC_RELEASES_URL}/{platform}/list.json"))? - .json::()?; - Ok(unified_releases(releases, platform)) } /// Fetch all releases available for the provided platform. pub async fn all_releases(platform: Platform) -> Result { - if platform == Platform::LinuxAarch64 { - return Ok(get(LINUX_AARCH64_RELEASES_URL) - .await? - .json::() - .await?); - } - - if platform == Platform::MacOsAarch64 { - // The supported versions for both macos-amd64 and macos-aarch64 are the same. - // - // 1. For version >= 0.8.5 we fetch native releases from - // https://github.com/alloy-rs/solc-builds - // - // 2. For version <= 0.8.4 we fetch releases from https://binaries.soliditylang.org and - // require Rosetta support. - let mut native = get(MACOS_AARCH64_RELEASES_URL) + match platform { + Platform::LinuxAarch64 => { + return Ok(get(LINUX_AARCH64_RELEASES_URL) + .await? + .json::() + .await?) + } + Platform::MacOsAarch64 => { + // The supported versions for both macos-amd64 and macos-aarch64 are the same. + // + // 1. For version >= 0.8.5 we fetch native releases from + // https://github.com/alloy-rs/solc-builds + // + // 2. For version <= 0.8.4 we fetch releases from https://binaries.soliditylang.org and + // require Rosetta support. + let mut native = get(MACOS_AARCH64_RELEASES_URL) + .await? + .json::() + .await?; + let mut releases = get(format!( + "{}/{}/list.json", + SOLC_RELEASES_URL, + Platform::MacOsAmd64, + )) .await? .json::() .await?; - let mut releases = get(format!( - "{}/{}/list.json", - SOLC_RELEASES_URL, - Platform::MacOsAmd64, - )) - .await? - .json::() - .await?; - releases - .builds - .retain(|b| b.version.lt(&MACOS_AARCH64_NATIVE)); - releases.releases.retain(|v, _| v.lt(&MACOS_AARCH64_NATIVE)); + releases + .builds + .retain(|b| b.version.lt(&MACOS_AARCH64_NATIVE)); + releases.releases.retain(|v, _| v.lt(&MACOS_AARCH64_NATIVE)); + + releases.builds.extend_from_slice(&native.builds); + releases.releases.append(&mut native.releases); + return Ok(releases); + } + _ => { + let releases = get(format!("{SOLC_RELEASES_URL}/{platform}/list.json")) + .await? + .json::() + .await?; - releases.builds.extend_from_slice(&native.builds); - releases.releases.append(&mut native.releases); - return Ok(releases); + Ok(unified_releases(releases, platform)) + } } - - let releases = get(format!("{SOLC_RELEASES_URL}/{platform}/list.json")) - .await? - .json::() - .await?; - - Ok(unified_releases(releases, platform)) } /// unifies the releases with old releases if on linux From 42021ae96dbae2ee6616e52eebf69c3e12ed0840 Mon Sep 17 00:00:00 2001 From: Enrique Ortiz Date: Thu, 14 Dec 2023 12:50:19 -0400 Subject: [PATCH 2/8] chore: lint --- crates/svm-rs/src/bin/svm-bin/main.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/svm-rs/src/bin/svm-bin/main.rs b/crates/svm-rs/src/bin/svm-bin/main.rs index f3f220a..8925c6f 100644 --- a/crates/svm-rs/src/bin/svm-bin/main.rs +++ b/crates/svm-rs/src/bin/svm-bin/main.rs @@ -8,10 +8,10 @@ mod usev; mod utils; use clap::Parser; -use usev::UseArgs; use install::InstallArgs; use list::ListArgs; use remove::RemoveArgs; +use usev::UseArgs; #[derive(Debug, Parser)] #[clap(name = "solc-vm", about = "Solc version manager")] From 8b10d779cb113e0612c66817c0660c2118f42a5f Mon Sep 17 00:00:00 2001 From: Enrique Ortiz Date: Thu, 14 Dec 2023 13:02:46 -0400 Subject: [PATCH 3/8] clippy --- Cargo.lock | 708 +++++++++++++++++++--------------- crates/svm-rs/src/releases.rs | 16 +- 2 files changed, 397 insertions(+), 327 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bc4d697..f247889 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "addr2line" -version = "0.20.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" dependencies = [ "gimli", ] @@ -30,58 +30,57 @@ dependencies = [ [[package]] name = "anstream" -version = "0.3.2" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163" +checksum = "d664a92ecae85fd0a7392615844904654d1d5f5514837f471ddef4a057aba1b6" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", - "is-terminal", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.1" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd" +checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" [[package]] name = "anstyle-parse" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333" +checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "1.0.1" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188" +checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" dependencies = [ "anstyle", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "anyhow" -version = "1.0.72" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b13c32d80ecc7ab747b80c3784bce54ee8a7a0cc4fbda9bf4cda2cf6fe90854" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" [[package]] name = "autocfg" @@ -91,9 +90,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "backtrace" -version = "0.3.68" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" dependencies = [ "addr2line", "cc", @@ -106,9 +105,9 @@ dependencies = [ [[package]] name = "base64" -version = "0.21.2" +version = "0.21.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" +checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" [[package]] name = "base64ct" @@ -124,9 +123,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.3.3" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" [[package]] name = "block-buffer" @@ -145,21 +144,21 @@ checksum = "b4ae4235e6dac0694637c763029ecea1a2ec9e4e06ec2729bd21ba4d9c863eb7" [[package]] name = "bumpalo" -version = "3.13.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" [[package]] name = "bzip2" @@ -184,11 +183,12 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.79" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" dependencies = [ "jobserver", + "libc", ] [[package]] @@ -209,20 +209,19 @@ dependencies = [ [[package]] name = "clap" -version = "4.3.19" +version = "4.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fd304a20bff958a57f04c4e96a2e7594cc4490a0e809cbd48bb6437edaa452d" +checksum = "bfaff671f6b22ca62406885ece523383b9b64022e341e53e009a62ebc47a45f2" dependencies = [ "clap_builder", "clap_derive", - "once_cell", ] [[package]] name = "clap_builder" -version = "4.3.19" +version = "4.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01c6a3f08f1fe5662a35cfe393aec09c4df95f60ee93b7556505260f75eee9e1" +checksum = "a216b506622bb1d316cd51328dce24e07bdff4a6128a47c7e7fad11878d5adbb" dependencies = [ "anstream", "anstyle", @@ -232,9 +231,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.3.12" +version = "4.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54a9bb5758fc5dfe728d1019941681eccaf0cf8a4189b692a0ee2f2ecf90a050" +checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" dependencies = [ "heck", "proc-macro2", @@ -244,9 +243,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" +checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" [[package]] name = "colorchoice" @@ -275,9 +274,9 @@ checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" [[package]] name = "core-foundation" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ "core-foundation-sys", "libc", @@ -285,15 +284,15 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a385f5d34e5eff161df2369056a3fd194fcabd8a64ce0eed02de09fcb3203434" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "cpufeatures" -version = "0.2.9" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" +checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" dependencies = [ "libc", ] @@ -309,9 +308,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.16" +version = "0.8.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" +checksum = "c06d96137f14f244c37f989d9fff8f95e6c18b918e71f36638f8c49112e4c78f" dependencies = [ "cfg-if", ] @@ -326,6 +325,15 @@ dependencies = [ "typenum", ] +[[package]] +name = "deranged" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eb30d70a07a3b04884d2677f06bec33509dc67ca60d92949e5535352d3191dc" +dependencies = [ + "powerfmt", +] + [[package]] name = "dialoguer" version = "0.10.4" @@ -382,45 +390,40 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "encoding_rs" -version = "0.8.32" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" dependencies = [ "cfg-if", ] [[package]] -name = "errno" -version = "0.3.1" +name = "equivalent" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" -dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys 0.48.0", -] +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] -name = "errno-dragonfly" -version = "0.1.2" +name = "errno" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" dependencies = [ - "cc", "libc", + "windows-sys 0.52.0", ] [[package]] name = "fastrand" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" [[package]] name = "flate2" -version = "1.0.26" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" dependencies = [ "crc32fast", "miniz_oxide", @@ -449,9 +452,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] @@ -468,57 +471,45 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" dependencies = [ "futures-core", ] [[package]] name = "futures-core" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" +checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" [[package]] name = "futures-io" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" - -[[package]] -name = "futures-macro" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] +checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" [[package]] name = "futures-sink" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" +checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" [[package]] name = "futures-task" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" +checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" [[package]] name = "futures-util" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" dependencies = [ "futures-core", "futures-io", - "futures-macro", "futures-task", "memchr", "pin-project-lite", @@ -538,9 +529,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" dependencies = [ "cfg-if", "libc", @@ -549,15 +540,15 @@ dependencies = [ [[package]] name = "gimli" -version = "0.27.3" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" [[package]] name = "h2" -version = "0.3.20" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049" +checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" dependencies = [ "bytes", "fnv", @@ -574,9 +565,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.12.3" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" [[package]] name = "heck" @@ -586,9 +577,9 @@ checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" [[package]] name = "hex" @@ -607,9 +598,9 @@ dependencies = [ [[package]] name = "http" -version = "0.2.9" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" dependencies = [ "bytes", "fnv", @@ -618,9 +609,9 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", "http", @@ -635,9 +626,9 @@ checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "httpdate" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" @@ -656,7 +647,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2", + "socket2 0.4.10", "tokio", "tower-service", "tracing", @@ -665,9 +656,9 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.24.1" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d78e1e73ec14cf7375674f74d7dde185c8206fd9dea6fb6295e8a98098aaa97" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http", @@ -692,9 +683,9 @@ dependencies = [ [[package]] name = "idna" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -702,19 +693,19 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.9.3" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" dependencies = [ - "autocfg", + "equivalent", "hashbrown", ] [[package]] name = "indicatif" -version = "0.17.5" +version = "0.17.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ff8cc23a7393a397ed1d7f56e6365cba772aba9f9912ab968b03043c395d057" +checksum = "fb28741c9db9a713d93deb3bb9515c20788cef5815265bee4980e87bde7e0f25" dependencies = [ "console", "instant", @@ -742,20 +733,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" - -[[package]] -name = "is-terminal" -version = "0.4.9" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" -dependencies = [ - "hermit-abi", - "rustix", - "windows-sys 0.48.0", -] +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" [[package]] name = "itertools" @@ -768,24 +748,24 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "jobserver" -version = "0.1.26" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" +checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" dependencies = [ "libc", ] [[package]] name = "js-sys" -version = "0.3.64" +version = "0.3.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" dependencies = [ "wasm-bindgen", ] @@ -798,27 +778,38 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.147" +version = "0.2.151" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" + +[[package]] +name = "libredox" +version = "0.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" +checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +dependencies = [ + "bitflags 2.4.1", + "libc", + "redox_syscall", +] [[package]] name = "linux-raw-sys" -version = "0.4.3" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09fc20d2ca12cb9f044c93e3bd6d32d523e6e2ec3db4f7b2939cd99026ecd3f0" +checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" [[package]] name = "log" -version = "0.4.19" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "memchr" -version = "2.5.0" +version = "2.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" [[package]] name = "mime" @@ -837,9 +828,9 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.8" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" +checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" dependencies = [ "libc", "wasi", @@ -882,26 +873,26 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "object" -version = "0.31.1" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" +checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "openssl" -version = "0.10.55" +version = "0.10.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "345df152bc43501c5eb9e4654ff05f794effb78d4efe3d53abc158baddc0703d" +checksum = "6b8419dc8cc6d866deb801274bba2e6f8f6108c1bb7fcc10ee5ab864931dbb45" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.1", "cfg-if", "foreign-types", "libc", @@ -929,9 +920,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.90" +version = "0.9.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "374533b0e45f3a7ced10fcaeccca020e66656bc03dac384f852e4e5a7a8104a6" +checksum = "c3eaad34cdd97d81de97964fc7f29e2d104f483840d906ef56daa1912338460b" dependencies = [ "cc", "libc", @@ -970,15 +961,15 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project-lite" -version = "0.2.10" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c40d25201921e5ff0c862a505c6557ea88568a4e3ace775ab55e93f2f4f9d57" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" [[package]] name = "pin-utils" @@ -994,9 +985,15 @@ checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] name = "portable-atomic" -version = "1.4.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edc55135a600d700580e406b4de0d59cb9ad25e344a3a091a97ded2622ec4ec6" +checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" @@ -1006,18 +1003,18 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "proc-macro2" -version = "1.0.66" +version = "1.0.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.32" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] @@ -1054,38 +1051,29 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" -dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "redox_syscall" -version = "0.3.5" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" dependencies = [ "bitflags 1.3.2", ] [[package]] name = "redox_users" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" dependencies = [ "getrandom", - "redox_syscall 0.2.16", + "libredox", "thiserror", ] [[package]] name = "reqwest" -version = "0.11.18" +version = "0.11.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55" +checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" dependencies = [ "base64", "bytes", @@ -1111,6 +1099,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", + "system-configuration", "tokio", "tokio-native-tls", "tokio-rustls", @@ -1125,17 +1114,16 @@ dependencies = [ [[package]] name = "ring" -version = "0.16.20" +version = "0.17.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74" dependencies = [ "cc", + "getrandom", "libc", - "once_cell", "spin", "untrusted", - "web-sys", - "winapi", + "windows-sys 0.48.0", ] [[package]] @@ -1146,22 +1134,22 @@ checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" [[package]] name = "rustix" -version = "0.38.4" +version = "0.38.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a962918ea88d644592894bc6dc55acc6c0956488adcebbfb6e273506b7fd6e5" +checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316" dependencies = [ - "bitflags 2.3.3", + "bitflags 2.4.1", "errno", "libc", "linux-raw-sys", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "rustls" -version = "0.21.5" +version = "0.21.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79ea77c539259495ce8ca47f53e66ae0330a8819f67e23ac96ca02f50e7b7d36" +checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" dependencies = [ "log", "ring", @@ -1171,18 +1159,18 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ "base64", ] [[package]] name = "rustls-webpki" -version = "0.101.1" +version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15f36a6828982f422756984e47912a7a51dcbc2a197aa791158f8ca61cd8204e" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ "ring", "untrusted", @@ -1190,9 +1178,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.15" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" [[package]] name = "schannel" @@ -1205,9 +1193,9 @@ dependencies = [ [[package]] name = "sct" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ "ring", "untrusted", @@ -1238,27 +1226,27 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.18" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" +checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" dependencies = [ "serde", ] [[package]] name = "serde" -version = "1.0.175" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d25439cd7397d044e2748a6fe2432b5e85db703d6d097bd014b3c0ad1ebff0b" +checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.175" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b23f7ade6f110613c0d63858ddb8b94c1041f550eab58a16b371bdf2c9c80ab4" +checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" dependencies = [ "proc-macro2", "quote", @@ -1267,9 +1255,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.103" +version = "1.0.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d03b412469450d4404fe8499a268edd7f8b79fecb074b0d812ad64ca21f4031b" +checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" dependencies = [ "itoa", "ryu", @@ -1290,9 +1278,9 @@ dependencies = [ [[package]] name = "sha1" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", "cpufeatures", @@ -1301,9 +1289,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.7" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", @@ -1318,28 +1306,38 @@ checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" [[package]] name = "slab" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" dependencies = [ "autocfg", ] [[package]] name = "socket2" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" dependencies = [ "libc", "winapi", ] +[[package]] +name = "socket2" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + [[package]] name = "spin" -version = "0.5.2" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" [[package]] name = "strsim" @@ -1393,42 +1391,63 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.27" +version = "2.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b60f673f44a8255b9c8c657daf66a596d435f2da81a555b06dc644d080ba45e0" +checksum = "44c8b28c477cc3bf0e7966561e3460130e1255f7a1cf71931075f1c5e7a7e269" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "tempfile" -version = "3.7.0" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5486094ee78b2e5038a6382ed7645bc084dc2ec433426ca4c3cb61e2007b8998" +checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" dependencies = [ "cfg-if", "fastrand", - "redox_syscall 0.3.5", + "redox_syscall", "rustix", "windows-sys 0.48.0", ] [[package]] name = "thiserror" -version = "1.0.44" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "611040a08a0439f8248d1990b111c95baa9c704c805fa1f62104b39655fd7f90" +checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.44" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "090198534930841fab3a5d1bb637cde49e339654e606195f8d9c76eeb081dc96" +checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" dependencies = [ "proc-macro2", "quote", @@ -1437,19 +1456,21 @@ dependencies = [ [[package]] name = "time" -version = "0.3.23" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59e399c068f43a5d116fedaf73b203fa4f9c519f17e2b34f63221d3792f81446" +checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5" dependencies = [ + "deranged", + "powerfmt", "serde", "time-core", ] [[package]] name = "time-core" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "tinyvec" @@ -1468,27 +1489,26 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.29.1" +version = "1.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "532826ff75199d5833b9d2c5fe410f29235e25704ee5f0ef599fb51c21f4a4da" +checksum = "841d45b238a16291a4e1584e61820b8ae57d696cc5015c459c229ccc6990cc1c" dependencies = [ - "autocfg", "backtrace", "bytes", "libc", "mio", "num_cpus", "pin-project-lite", - "socket2", + "socket2 0.5.5", "tokio-macros", "windows-sys 0.48.0", ] [[package]] name = "tokio-macros" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", @@ -1517,9 +1537,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.8" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" +checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" dependencies = [ "bytes", "futures-core", @@ -1537,47 +1557,46 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.37" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "cfg-if", "pin-project-lite", "tracing-core", ] [[package]] name = "tracing-core" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", ] [[package]] name = "try-lock" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "typenum" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "unicode-bidi" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416" [[package]] name = "unicode-ident" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" @@ -1590,21 +1609,21 @@ dependencies = [ [[package]] name = "unicode-width" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" [[package]] name = "untrusted" -version = "0.7.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" dependencies = [ "form_urlencoded", "idna", @@ -1646,9 +1665,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.87" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -1656,9 +1675,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.87" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" dependencies = [ "bumpalo", "log", @@ -1671,9 +1690,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.37" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" +checksum = "ac36a15a220124ac510204aec1c3e5db8a22ab06fd6706d881dc6149f8ed9a12" dependencies = [ "cfg-if", "js-sys", @@ -1683,9 +1702,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1693,9 +1712,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" dependencies = [ "proc-macro2", "quote", @@ -1706,38 +1725,25 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" [[package]] name = "web-sys" -version = "0.3.64" +version = "0.3.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f" dependencies = [ "js-sys", "wasm-bindgen", ] -[[package]] -name = "webpki" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" -dependencies = [ - "ring", - "untrusted", -] - [[package]] name = "webpki-roots" -version = "0.22.6" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" -dependencies = [ - "webpki", -] +checksum = "1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10" [[package]] name = "winapi" @@ -1776,7 +1782,16 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets 0.48.1", + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.0", ] [[package]] @@ -1796,17 +1811,32 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.48.1" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" dependencies = [ - "windows_aarch64_gnullvm 0.48.0", - "windows_aarch64_msvc 0.48.0", - "windows_i686_gnu 0.48.0", - "windows_i686_msvc 0.48.0", - "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm 0.48.0", - "windows_x86_64_msvc 0.48.0", + "windows_aarch64_gnullvm 0.52.0", + "windows_aarch64_msvc 0.52.0", + "windows_i686_gnu 0.52.0", + "windows_i686_msvc 0.52.0", + "windows_x86_64_gnu 0.52.0", + "windows_x86_64_gnullvm 0.52.0", + "windows_x86_64_msvc 0.52.0", ] [[package]] @@ -1817,9 +1847,15 @@ checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" [[package]] name = "windows_aarch64_msvc" @@ -1829,9 +1865,15 @@ checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" [[package]] name = "windows_aarch64_msvc" -version = "0.48.0" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" [[package]] name = "windows_i686_gnu" @@ -1841,9 +1883,15 @@ checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" [[package]] name = "windows_i686_gnu" -version = "0.48.0" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" [[package]] name = "windows_i686_msvc" @@ -1853,9 +1901,15 @@ checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" [[package]] name = "windows_i686_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" [[package]] name = "windows_x86_64_gnu" @@ -1865,9 +1919,15 @@ checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" [[package]] name = "windows_x86_64_gnullvm" @@ -1877,9 +1937,15 @@ checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" [[package]] name = "windows_x86_64_msvc" @@ -1889,17 +1955,24 @@ checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" [[package]] name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" [[package]] name = "winreg" -version = "0.10.1" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" dependencies = [ - "winapi", + "cfg-if", + "windows-sys 0.48.0", ] [[package]] @@ -1943,11 +2016,10 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.8+zstd.1.5.5" +version = "2.0.9+zstd.1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5556e6ee25d32df2586c098bbfa278803692a20d0ab9565e049480d52707ec8c" +checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656" dependencies = [ "cc", - "libc", "pkg-config", ] diff --git a/crates/svm-rs/src/releases.rs b/crates/svm-rs/src/releases.rs index 323c9f6..1121a3f 100644 --- a/crates/svm-rs/src/releases.rs +++ b/crates/svm-rs/src/releases.rs @@ -123,7 +123,7 @@ mod hex_string { pub fn blocking_all_releases(platform: Platform) -> Result { match platform { Platform::LinuxAarch64 => { - return Ok(reqwest::blocking::get(LINUX_AARCH64_RELEASES_URL)?.json::()?) + Ok(reqwest::blocking::get(LINUX_AARCH64_RELEASES_URL)?.json::()?) } Platform::MacOsAarch64 => { // The supported versions for both macos-amd64 and macos-aarch64 are the same. @@ -146,7 +146,7 @@ pub fn blocking_all_releases(platform: Platform) -> Result { let releases = @@ -160,12 +160,10 @@ pub fn blocking_all_releases(platform: Platform) -> Result Result { match platform { - Platform::LinuxAarch64 => { - return Ok(get(LINUX_AARCH64_RELEASES_URL) - .await? - .json::() - .await?) - } + Platform::LinuxAarch64 => Ok(get(LINUX_AARCH64_RELEASES_URL) + .await? + .json::() + .await?), Platform::MacOsAarch64 => { // The supported versions for both macos-amd64 and macos-aarch64 are the same. // @@ -193,7 +191,7 @@ pub async fn all_releases(platform: Platform) -> Result { releases.builds.extend_from_slice(&native.builds); releases.releases.append(&mut native.releases); - return Ok(releases); + Ok(releases) } _ => { let releases = get(format!("{SOLC_RELEASES_URL}/{platform}/list.json")) From 798d86d24aa312b23b59f05b06e9684ae63b7bac Mon Sep 17 00:00:00 2001 From: Enrique Ortiz Date: Thu, 14 Dec 2023 13:12:19 -0400 Subject: [PATCH 4/8] chore: cache all versions --- crates/svm-rs/src/bin/svm-bin/install.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/crates/svm-rs/src/bin/svm-bin/install.rs b/crates/svm-rs/src/bin/svm-bin/install.rs index 7fa1869..fd0daf0 100644 --- a/crates/svm-rs/src/bin/svm-bin/install.rs +++ b/crates/svm-rs/src/bin/svm-bin/install.rs @@ -11,11 +11,12 @@ pub struct InstallArgs { impl InstallArgs { pub async fn run(self) -> anyhow::Result<()> { + let all_versions = svm_lib::all_versions().await?; + for version in self.versions { - let version = Version::parse(&version)?; - let all_versions = svm_lib::all_versions().await?; let installed_versions = svm_lib::installed_versions().unwrap_or_default(); let current_version = svm_lib::current_version()?; + let version = Version::parse(&version)?; if installed_versions.contains(&version) { println!("Solc {version} is already installed"); @@ -40,6 +41,7 @@ impl InstallArgs { print::unsupported_version(&version); } } + Ok(()) } } From e95721d418eabce1710434b323f279c09af7f24e Mon Sep 17 00:00:00 2001 From: Enrique Ortiz Date: Thu, 14 Dec 2023 13:17:14 -0400 Subject: [PATCH 5/8] properly handle uninstalled, existing versions in use --- crates/svm-rs/src/bin/svm-bin/usev.rs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/crates/svm-rs/src/bin/svm-bin/usev.rs b/crates/svm-rs/src/bin/svm-bin/usev.rs index d176a3d..9fae11c 100644 --- a/crates/svm-rs/src/bin/svm-bin/usev.rs +++ b/crates/svm-rs/src/bin/svm-bin/usev.rs @@ -15,6 +15,7 @@ impl UseArgs { let version = Version::parse(&self.version)?; let all_versions = svm_lib::all_versions().await?; let installed_versions = svm_lib::installed_versions().unwrap_or_default(); + let current_version = svm_lib::current_version()?; if installed_versions.contains(&version) { svm_lib::use_version(&version)?; @@ -27,11 +28,13 @@ impl UseArgs { .default("N".into()) .interact_text()?; if matches!(input.as_str(), "y" | "Y" | "yes" | "Yes") { - // TODO: Break up install fn into minimal install - crate::install::InstallArgs::run(InstallArgs { - versions: vec![self.version], - }) - .await?; + let spinner = print::installing_version(&version); + svm_lib::install(&version).await?; + spinner.finish_with_message(format!("Downloaded Solc: {version}")); + if current_version.is_none() { + svm_lib::use_version(&version)?; + print::set_global_version(&version); + } } } else { print::unsupported_version(&version); From f90f65d7b3bc458a1ee2086848186c0d01c63f50 Mon Sep 17 00:00:00 2001 From: Enrique Ortiz Date: Thu, 14 Dec 2023 13:22:13 -0400 Subject: [PATCH 6/8] chore: just lowercase version --- crates/svm-rs/src/bin/svm-bin/remove.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/svm-rs/src/bin/svm-bin/remove.rs b/crates/svm-rs/src/bin/svm-bin/remove.rs index 7638908..b96bae0 100644 --- a/crates/svm-rs/src/bin/svm-bin/remove.rs +++ b/crates/svm-rs/src/bin/svm-bin/remove.rs @@ -12,7 +12,7 @@ pub struct RemoveArgs { impl RemoveArgs { pub async fn run(self) -> anyhow::Result<()> { - if self.version == "ALL" || self.version == "all" { + if self.version.to_ascii_lowercase() == "all" { for v in svm_lib::installed_versions().unwrap_or_default() { svm_lib::remove_version(&v)?; } From f9acbcd8f4f268b571ff6bbabb1a6d712a4439bb Mon Sep 17 00:00:00 2001 From: Enrique Ortiz Date: Thu, 14 Dec 2023 13:24:11 -0400 Subject: [PATCH 7/8] clippy --- crates/svm-rs/src/bin/svm-bin/usev.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/svm-rs/src/bin/svm-bin/usev.rs b/crates/svm-rs/src/bin/svm-bin/usev.rs index 9fae11c..cb8c572 100644 --- a/crates/svm-rs/src/bin/svm-bin/usev.rs +++ b/crates/svm-rs/src/bin/svm-bin/usev.rs @@ -1,4 +1,4 @@ -use crate::{install::InstallArgs, print}; +use crate::print; use clap::Parser; use dialoguer::Input; use semver::Version; From 259bd289b0b08d54e3deea0f048ddce9950f8a3b Mon Sep 17 00:00:00 2001 From: Enrique Ortiz Date: Wed, 20 Dec 2023 12:36:26 -0400 Subject: [PATCH 8/8] chore: remove todo --- crates/svm-rs/src/bin/svm-bin/usev.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/crates/svm-rs/src/bin/svm-bin/usev.rs b/crates/svm-rs/src/bin/svm-bin/usev.rs index cb8c572..cb432b1 100644 --- a/crates/svm-rs/src/bin/svm-bin/usev.rs +++ b/crates/svm-rs/src/bin/svm-bin/usev.rs @@ -6,7 +6,6 @@ use semver::Version; #[derive(Debug, Clone, Parser)] pub struct UseArgs { #[clap(long, short)] - // TODO: Serde helper for parsing Version(?) pub version: String, }