From d6918e676ebc2f6d79ba250932362a0d8d44c384 Mon Sep 17 00:00:00 2001 From: Alfie John Date: Sun, 29 Sep 2024 08:20:32 +1000 Subject: [PATCH 1/2] Fix component URL if bundled within the forc tarball (#654) --- component/src/lib.rs | 15 ++++++----- src/download.rs | 2 +- src/target_triple.rs | 59 +++++++++++++++++++++----------------------- 3 files changed, 38 insertions(+), 38 deletions(-) diff --git a/component/src/lib.rs b/component/src/lib.rs index 8beb0758..7b91c309 100644 --- a/component/src/lib.rs +++ b/component/src/lib.rs @@ -187,12 +187,15 @@ impl Components { Ok(executables) } - pub fn is_distributed_by_forc(plugin_name: &str) -> bool { - let components = Self::from_toml(COMPONENTS_TOML).expect("Failed to parse components toml"); - if let Some(forc) = components.component.get(FORC) { - return forc.executables.contains(&plugin_name.to_string()); - }; - false + pub fn is_distributed_by_forc(component: &str) -> bool { + Component::from_name(component) + .map(|comp| { + comp.name == FORC + || Component::from_name(FORC) + .map(|forc| comp.tarball_prefix == forc.tarball_prefix) + .unwrap_or(false) + }) + .unwrap_or(false) } } diff --git a/src/download.rs b/src/download.rs index 4d562311..53a133d2 100644 --- a/src/download.rs +++ b/src/download.rs @@ -52,7 +52,7 @@ impl DownloadCfg { .map_err(|e| anyhow!("Error getting latest tag for '{}': {}", name, e))?, }; - let (tarball_name, tarball_url) = if name == FUELUP { + let (tarball_name, tarball_url) = if component::Components::is_distributed_by_forc(name) { let tarball_name = tarball_name(FUELUP, &version, &target); let tarball_url = github_releases_download_url(FUELUP, &version, &tarball_name); (tarball_name, tarball_url) diff --git a/src/target_triple.rs b/src/target_triple.rs index da18f9c5..98103235 100644 --- a/src/target_triple.rs +++ b/src/target_triple.rs @@ -1,5 +1,5 @@ use anyhow::{bail, Result}; -use component::{self, Component}; +use component::{self, Components}; use std::fmt; #[derive(Debug, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Default)] @@ -53,40 +53,37 @@ impl TargetTriple { } pub fn from_component(component: &str) -> Result { - match Component::from_name(component).map(|c| c.name)?.as_str() { - component::FORC => { - let os = match std::env::consts::OS { - "macos" => "darwin", - "linux" => "linux", - unsupported_os => bail!("Unsupported os: {}", unsupported_os), - }; - let architecture = match std::env::consts::ARCH { - "aarch64" => "arm64", - "x86_64" => "amd64", - unsupported_arch => bail!("Unsupported architecture: {}", unsupported_arch), - }; + if Components::is_distributed_by_forc(component) { + let os = match std::env::consts::OS { + "macos" => "darwin", + "linux" => "linux", + unsupported_os => bail!("Unsupported os: {}", unsupported_os), + }; + let architecture = match std::env::consts::ARCH { + "aarch64" => "arm64", + "x86_64" => "amd64", + unsupported_arch => bail!("Unsupported architecture: {}", unsupported_arch), + }; - Ok(Self(format!("{os}_{architecture}"))) - } - _ => { - let architecture = match std::env::consts::ARCH { - "aarch64" | "x86_64" => std::env::consts::ARCH, - unsupported_arch => bail!("Unsupported architecture: {}", unsupported_arch), - }; + Ok(Self(format!("{os}_{architecture}"))) + } else { + let architecture = match std::env::consts::ARCH { + "aarch64" | "x86_64" => std::env::consts::ARCH, + unsupported_arch => bail!("Unsupported architecture: {}", unsupported_arch), + }; - let vendor = match std::env::consts::OS { - "macos" => "apple", - _ => "unknown", - }; + let vendor = match std::env::consts::OS { + "macos" => "apple", + _ => "unknown", + }; - let os = match std::env::consts::OS { - "macos" => "darwin", - "linux" => "linux-gnu", - unsupported_os => bail!("Unsupported os: {}", unsupported_os), - }; + let os = match std::env::consts::OS { + "macos" => "darwin", + "linux" => "linux-gnu", + unsupported_os => bail!("Unsupported os: {}", unsupported_os), + }; - Ok(Self(format!("{architecture}-{vendor}-{os}"))) - } + Ok(Self(format!("{architecture}-{vendor}-{os}"))) } } } From 7fb6275a985c1336d390a622881061b108b0eb08 Mon Sep 17 00:00:00 2001 From: Alfie John Date: Sun, 29 Sep 2024 08:43:56 +1000 Subject: [PATCH 2/2] Fix for clippy (#654) --- tests/testcfg/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/testcfg/mod.rs b/tests/testcfg/mod.rs index 43bd7047..6083f0aa 100644 --- a/tests/testcfg/mod.rs +++ b/tests/testcfg/mod.rs @@ -130,7 +130,7 @@ impl TestCfg { .args(args) .current_dir(&self.home) .env("HOME", &self.home) - .env("CARGO_HOME", &self.home.join(".cargo")) + .env("CARGO_HOME", self.home.join(".cargo")) .env( "PATH", format!(