From c260ab220a31241eaca971d6ddf4046f1f57865b Mon Sep 17 00:00:00 2001 From: Jeff Dickey <216188+jdx@users.noreply.github.com> Date: Sun, 18 Aug 2024 16:13:40 -0500 Subject: [PATCH] fix: vfox tweaks --- Cargo.lock | 120 ++++---------------------------------------- src/backend/mod.rs | 2 + src/backend/vfox.rs | 18 +++++-- src/main.rs | 2 +- 4 files changed, 25 insertions(+), 117 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0bf4edd00..563b5d7af 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -354,7 +354,6 @@ dependencies = [ "android-tzdata", "iana-time-zone", "num-traits", - "serde", "windows-targets 0.52.6", ] @@ -1118,21 +1117,6 @@ dependencies = [ "new_debug_unreachable", ] -[[package]] -name = "futures" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - [[package]] name = "futures-channel" version = "0.3.30" @@ -1149,34 +1133,12 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" -[[package]] -name = "futures-executor" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - [[package]] name = "futures-io" version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" -[[package]] -name = "futures-macro" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.75", -] - [[package]] name = "futures-sink" version = "0.3.30" @@ -1195,10 +1157,8 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ - "futures-channel", "futures-core", "futures-io", - "futures-macro", "futures-sink", "futures-task", "memchr", @@ -1373,20 +1333,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "homedir" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22074da8bba2ef26fc1737ae6c777b5baab5524c2dc403b5c6a76166766ccda5" -dependencies = [ - "cfg-if", - "nix 0.26.4", - "serde", - "widestring", - "windows-sys 0.48.0", - "wmi", -] - [[package]] name = "homedir" version = "0.3.3" @@ -1396,7 +1342,7 @@ dependencies = [ "cfg-if", "nix 0.26.4", "widestring", - "windows 0.57.0", + "windows", ] [[package]] @@ -4177,11 +4123,11 @@ dependencies = [ [[package]] name = "vfox" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "171b1adc383ae9e46366d21a25d5a2adad28ec01a2db0acdf8c27f168756351f" +checksum = "c63d042a549f54fd9de2efd62e5afd4ae7b200d463a47e0828dcd1a5fce56a78" dependencies = [ - "homedir 0.3.3", + "homedir", "indexmap 2.4.0", "itertools 0.13.0", "log", @@ -4386,18 +4332,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "windows" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" -dependencies = [ - "windows-core 0.52.0", - "windows-implement 0.52.0", - "windows-interface 0.52.0", - "windows-targets 0.52.6", -] - [[package]] name = "windows" version = "0.57.0" @@ -4423,23 +4357,12 @@ version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" dependencies = [ - "windows-implement 0.57.0", - "windows-interface 0.57.0", + "windows-implement", + "windows-interface", "windows-result", "windows-targets 0.52.6", ] -[[package]] -name = "windows-implement" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12168c33176773b86799be25e2a2ba07c7aab9968b37541f1094dbd7a60c8946" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.75", -] - [[package]] name = "windows-implement" version = "0.57.0" @@ -4451,17 +4374,6 @@ dependencies = [ "syn 2.0.75", ] -[[package]] -name = "windows-interface" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d8dc32e0095a7eeccebd0e3f09e9509365ecb3fc6ac4d6f5f14a3f6392942d1" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.75", -] - [[package]] name = "windows-interface" version = "0.57.0" @@ -4655,20 +4567,6 @@ version = "0.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" -[[package]] -name = "wmi" -version = "0.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc2f0a4062ca522aad4705a2948fd4061b3857537990202a8ddd5af21607f79a" -dependencies = [ - "chrono", - "futures", - "log", - "serde", - "thiserror", - "windows 0.52.0", -] - [[package]] name = "xattr" version = "1.3.1" @@ -4682,16 +4580,16 @@ dependencies = [ [[package]] name = "xx" -version = "1.1.5" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9960db6d05795260d426061b0a962282cf67c3cdc81656731d0f646807c26237" +checksum = "de8994f4da2802246b39d260c7915b652cc009a79840aee6eb27cb0acd13a82c" dependencies = [ "bzip2", "duct", "filetime", "flate2", "globwalk", - "homedir 0.2.1", + "homedir", "log", "miette", "regex", diff --git a/src/backend/mod.rs b/src/backend/mod.rs index 38bd81a0f..e40d8d160 100644 --- a/src/backend/mod.rs +++ b/src/backend/mod.rs @@ -188,6 +188,7 @@ pub trait Backend: Debug + Send + Sync { } fn list_remote_versions(&self) -> eyre::Result> { self.ensure_dependencies_installed()?; + trace!("Listing remote versions for {}", self.fa().to_string()); self._list_remote_versions() } fn _list_remote_versions(&self) -> eyre::Result>; @@ -297,6 +298,7 @@ pub trait Backend: Debug + Send + Sync { None } fn ensure_dependencies_installed(&self) -> eyre::Result<()> { + trace!("Ensuring dependencies installed for {}", self.id()); let deps = self .get_all_dependencies(&ToolRequest::System(self.id().into()))? .into_iter() diff --git a/src/backend/vfox.rs b/src/backend/vfox.rs index 9de70cb33..c6fd548c2 100644 --- a/src/backend/vfox.rs +++ b/src/backend/vfox.rs @@ -42,10 +42,10 @@ impl Backend for VfoxBackend { fn _list_remote_versions(&self) -> eyre::Result> { self.remote_version_cache .get_or_try_init(|| { - let plugin = self.vfox.install_plugin_from_url(&self.get_url()?)?; + self.ensure_plugin_installed()?; let versions = self .runtime()? - .block_on(self.vfox.list_available_versions(&plugin.name))?; + .block_on(self.vfox.list_available_versions(&self.pathname))?; Ok(versions .into_iter() .rev() @@ -58,9 +58,9 @@ impl Backend for VfoxBackend { fn install_version_impl(&self, ctx: &InstallContext) -> eyre::Result<()> { let settings = Settings::get(); settings.ensure_experimental("vfox backend")?; - let plugin = self.vfox.install_plugin_from_url(&self.get_url()?)?; + self.ensure_plugin_installed()?; self.runtime()?.block_on(self.vfox.install( - &plugin.name, + &self.pathname, &ctx.tv.version, ctx.tv.install_path(), ))?; @@ -68,7 +68,6 @@ impl Backend for VfoxBackend { } fn list_bin_paths(&self, tv: &ToolVersion) -> eyre::Result> { - dbg!(self._exec_env(tv)?); let path = self ._exec_env(tv)? .get("PATH") @@ -170,4 +169,13 @@ impl VfoxBackend { self.repo() } } + + fn ensure_plugin_installed(&self) -> eyre::Result<()> { + if !self.plugin_path.exists() { + let url = self.get_url()?; + trace!("Cloning vfox plugin: {url}"); + self.repo()?.clone(url.as_str())?; + } + Ok(()) + } } diff --git a/src/main.rs b/src/main.rs index b39b21699..76afe2ba7 100644 --- a/src/main.rs +++ b/src/main.rs @@ -76,7 +76,7 @@ fn handle_err(err: Report) -> eyre::Result<()> { return Ok(()); } } - if cfg!(not(debug_assertions)) || log::max_level() < log::LevelFilter::Debug { + if cfg!(not(debug_assertions)) && log::max_level() < log::LevelFilter::Debug { display_friendly_err(err); exit(1); }