From 6f4c7137c0bea270c503be1de776f80b98bac42b Mon Sep 17 00:00:00 2001 From: daimond113 <72147841+daimond113@users.noreply.github.com> Date: Fri, 10 Jan 2025 00:01:02 +0100 Subject: [PATCH] feat: add name.scope and name.name apis --- .gitignore | 3 ++- src/cli/commands/add.rs | 4 ++-- src/graph.rs | 11 +++-------- src/names.rs | 28 ++++++++++++++++++++++++++++ src/source/pesde/mod.rs | 10 ++++++++-- 5 files changed, 43 insertions(+), 13 deletions(-) diff --git a/.gitignore b/.gitignore index d32d12d..7809775 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ cobertura.xml tarpaulin-report.html build_rs_cov.profraw -registry/data \ No newline at end of file +registry/data +data \ No newline at end of file diff --git a/src/cli/commands/add.rs b/src/cli/commands/add.rs index 1aff9a5..aa7b759 100644 --- a/src/cli/commands/add.rs +++ b/src/cli/commands/add.rs @@ -181,7 +181,7 @@ impl AddCommand { }; let alias = self.alias.unwrap_or_else(|| match &self.name { - AnyPackageIdentifier::PackageName(versioned) => versioned.0.as_str().1.to_string(), + AnyPackageIdentifier::PackageName(versioned) => versioned.0.name().to_string(), AnyPackageIdentifier::Url((url, _)) => url .path .to_string() @@ -189,7 +189,7 @@ impl AddCommand { .last() .map(|s| s.to_string()) .unwrap_or(url.path.to_string()), - AnyPackageIdentifier::Workspace(versioned) => versioned.0.as_str().1.to_string(), + AnyPackageIdentifier::Workspace(versioned) => versioned.0.name().to_string(), AnyPackageIdentifier::Path(path) => path .file_name() .map(|s| s.to_string_lossy().to_string()) diff --git a/src/graph.rs b/src/graph.rs index a8195c2..f11292b 100644 --- a/src/graph.rs +++ b/src/graph.rs @@ -49,18 +49,13 @@ impl DependencyGraphNode { let (name, version) = package_id.parts(); if self.pkg_ref.is_wally_package() { - return PathBuf::from(format!( - "{}_{}@{}", - name.as_str().0, - name.as_str().1, - version - )) - .join(name.as_str().1); + return PathBuf::from(format!("{}_{}@{}", name.scope(), name.name(), version)) + .join(name.name()); } PathBuf::from(name.escaped()) .join(version.to_string()) - .join(name.as_str().1) + .join(name.name()) } /// Returns the folder to store the contents of the package in starting from the project's package directory diff --git a/src/names.rs b/src/names.rs index f1ddf0b..cebdb00 100644 --- a/src/names.rs +++ b/src/names.rs @@ -146,6 +146,24 @@ impl PackageNames { pub fn from_escaped(s: &str) -> Result { PackageNames::from_str(s.replacen('+', "/", 1).as_str()) } + + /// Returns the scope of the package name + pub fn scope(&self) -> &str { + match self { + PackageNames::Pesde(name) => name.scope(), + #[cfg(feature = "wally-compat")] + PackageNames::Wally(name) => name.scope(), + } + } + + /// Returns the name of the package name + pub fn name(&self) -> &str { + match self { + PackageNames::Pesde(name) => name.name(), + #[cfg(feature = "wally-compat")] + PackageNames::Wally(name) => name.name(), + } + } } impl Display for PackageNames { @@ -251,6 +269,16 @@ pub mod wally { pub fn escaped(&self) -> String { format!("wally#{}+{}", self.0, self.1) } + + /// Returns the scope of the package name + pub fn scope(&self) -> &str { + &self.0 + } + + /// Returns the name of the package name + pub fn name(&self) -> &str { + &self.1 + } } } diff --git a/src/source/pesde/mod.rs b/src/source/pesde/mod.rs index 321b3fa..8952040 100644 --- a/src/source/pesde/mod.rs +++ b/src/source/pesde/mod.rs @@ -211,8 +211,14 @@ impl PackageSource for PesdePackageSource { let url = config .download() .replace("{PACKAGE}", &urlencoding::encode(&id.name().to_string())) - .replace("{PACKAGE_VERSION}", &urlencoding::encode(&id.version_id().version().to_string())) - .replace("{PACKAGE_TARGET}", &urlencoding::encode(&id.version_id().target().to_string())); + .replace( + "{PACKAGE_VERSION}", + &urlencoding::encode(&id.version_id().version().to_string()), + ) + .replace( + "{PACKAGE_TARGET}", + &urlencoding::encode(&id.version_id().target().to_string()), + ); let mut request = reqwest.get(&url).header(ACCEPT, "application/octet-stream");