mirror of
https://github.com/cargo-bins/cargo-binstall.git
synced 2025-04-20 20:48:43 +00:00
Merge pull request #153 from passcod/clippy
This commit is contained in:
commit
ab678a8127
6 changed files with 54 additions and 42 deletions
|
@ -22,7 +22,7 @@ fn find_version<'a, V: Iterator<Item = &'a String>>(
|
|||
let filtered: BTreeSet<_> = version_iter
|
||||
.filter_map(|v| {
|
||||
// Remove leading `v` for git tags
|
||||
let ver_str = match v.strip_prefix("s") {
|
||||
let ver_str = match v.strip_prefix('s') {
|
||||
Some(v) => v,
|
||||
None => v,
|
||||
};
|
||||
|
@ -47,7 +47,7 @@ fn find_version<'a, V: Iterator<Item = &'a String>>(
|
|||
.iter()
|
||||
.max()
|
||||
.cloned()
|
||||
.ok_or_else(|| BinstallError::VersionMismatch { req: version_req })
|
||||
.ok_or(BinstallError::VersionMismatch { req: version_req })
|
||||
}
|
||||
|
||||
/// Fetch a crate by name and version from crates.io
|
||||
|
|
|
@ -54,14 +54,16 @@ impl MultiFetcher {
|
|||
|
||||
pub async fn first_available(&self) -> Option<&dyn Fetcher> {
|
||||
for fetcher in &self.fetchers {
|
||||
if fetcher.check().await.unwrap_or_else(|err| {
|
||||
let available = fetcher.check().await.unwrap_or_else(|err| {
|
||||
debug!(
|
||||
"Error while checking fetcher {}: {}",
|
||||
fetcher.source_name(),
|
||||
err
|
||||
);
|
||||
false
|
||||
}) {
|
||||
});
|
||||
|
||||
if available {
|
||||
return Some(&**fetcher);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@ impl GhCrateMeta {
|
|||
fn url(&self) -> Result<Url, BinstallError> {
|
||||
let ctx = Context::from_data(&self.data);
|
||||
debug!("Using context: {:?}", ctx);
|
||||
Ok(ctx.render_url(&self.data.meta.pkg_url)?)
|
||||
ctx.render_url(&self.data.meta.pkg_url)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -30,7 +30,9 @@ impl super::Fetcher for GhCrateMeta {
|
|||
let url = self.url()?;
|
||||
|
||||
if url.scheme() != "https" {
|
||||
warn!("URL is not HTTPS! This may become a hard error in the future, tell the upstream!");
|
||||
warn!(
|
||||
"URL is not HTTPS! This may become a hard error in the future, tell the upstream!"
|
||||
);
|
||||
}
|
||||
|
||||
info!("Checking for package at: '{url}'");
|
||||
|
@ -157,8 +159,11 @@ mod test {
|
|||
|
||||
#[test]
|
||||
fn no_repo_but_full_url() {
|
||||
let mut meta = PkgMeta::default();
|
||||
meta.pkg_url = format!("https://example.com{}", meta.pkg_url);
|
||||
let meta = PkgMeta {
|
||||
pkg_url: format!("https://example.com{}", PkgMeta::default().pkg_url),
|
||||
..Default::default()
|
||||
};
|
||||
|
||||
let data = Data {
|
||||
name: "cargo-binstall".to_string(),
|
||||
target: "x86_64-unknown-linux-gnu".to_string(),
|
||||
|
@ -176,8 +181,13 @@ mod test {
|
|||
|
||||
#[test]
|
||||
fn different_url() {
|
||||
let mut meta = PkgMeta::default();
|
||||
meta.pkg_url = "{ repo }/releases/download/v{ version }/sx128x-util-{ target }-v{ version }.{ archive-format }".to_string();
|
||||
let meta = PkgMeta {
|
||||
pkg_url:
|
||||
"{ repo }/releases/download/v{ version }/sx128x-util-{ target }-v{ version }.{ archive-format }"
|
||||
.into(),
|
||||
..Default::default()
|
||||
};
|
||||
|
||||
let data = Data {
|
||||
name: "radio-sx128x".to_string(),
|
||||
target: "x86_64-unknown-linux-gnu".to_string(),
|
||||
|
@ -195,8 +205,11 @@ mod test {
|
|||
|
||||
#[test]
|
||||
fn deprecated_format() {
|
||||
let mut meta = PkgMeta::default();
|
||||
meta.pkg_url = "{ repo }/releases/download/v{ version }/sx128x-util-{ target }-v{ version }.{ format }".to_string();
|
||||
let meta = PkgMeta {
|
||||
pkg_url: "{ repo }/releases/download/v{ version }/sx128x-util-{ target }-v{ version }.{ format }".into(),
|
||||
..Default::default()
|
||||
};
|
||||
|
||||
let data = Data {
|
||||
name: "radio-sx128x".to_string(),
|
||||
target: "x86_64-unknown-linux-gnu".to_string(),
|
||||
|
@ -214,11 +227,14 @@ mod test {
|
|||
|
||||
#[test]
|
||||
fn different_ext() {
|
||||
let mut meta = PkgMeta::default();
|
||||
meta.pkg_url =
|
||||
let meta = PkgMeta {
|
||||
pkg_url:
|
||||
"{ repo }/releases/download/v{ version }/{ name }-v{ version }-{ target }.tar.xz"
|
||||
.to_string();
|
||||
meta.pkg_fmt = PkgFmt::Txz;
|
||||
.into(),
|
||||
pkg_fmt: PkgFmt::Txz,
|
||||
..Default::default()
|
||||
};
|
||||
|
||||
let data = Data {
|
||||
name: "cargo-watch".to_string(),
|
||||
target: "aarch64-apple-darwin".to_string(),
|
||||
|
@ -236,9 +252,12 @@ mod test {
|
|||
|
||||
#[test]
|
||||
fn no_archive() {
|
||||
let mut meta = PkgMeta::default();
|
||||
meta.pkg_url = "{ repo }/releases/download/v{ version }/{ name }-v{ version }-{ target }{ binary-ext }".to_string();
|
||||
meta.pkg_fmt = PkgFmt::Bin;
|
||||
let meta = PkgMeta {
|
||||
pkg_url: "{ repo }/releases/download/v{ version }/{ name }-v{ version }-{ target }{ binary-ext }".into(),
|
||||
pkg_fmt: PkgFmt::Bin,
|
||||
..Default::default()
|
||||
};
|
||||
|
||||
let data = Data {
|
||||
name: "cargo-watch".to_string(),
|
||||
target: "aarch64-pc-windows-msvc".to_string(),
|
||||
|
|
|
@ -192,12 +192,13 @@ pub fn get_install_path<P: AsRef<Path>>(install_path: Option<P>) -> Option<PathB
|
|||
}
|
||||
|
||||
// Local executable dir if no cargo is found
|
||||
if let Some(d) = dirs::executable_dir() {
|
||||
let dir = dirs::executable_dir();
|
||||
|
||||
if let Some(d) = &dir {
|
||||
debug!("Fallback to {}", d.display());
|
||||
return Some(d.into());
|
||||
}
|
||||
|
||||
None
|
||||
dir
|
||||
}
|
||||
|
||||
pub fn confirm() -> Result<(), BinstallError> {
|
||||
|
@ -226,7 +227,7 @@ pub trait Template: Serialize {
|
|||
let mut tt = TinyTemplate::new();
|
||||
|
||||
// Add template to instance
|
||||
tt.add_template("path", &template)?;
|
||||
tt.add_template("path", template)?;
|
||||
|
||||
// Render output
|
||||
Ok(tt.render("path", self)?)
|
||||
|
|
20
src/lib.rs
20
src/lib.rs
|
@ -16,14 +16,14 @@ pub mod bins;
|
|||
pub mod fetchers;
|
||||
|
||||
/// Compiled target triple, used as default for binary fetching
|
||||
pub const TARGET: &'static str = env!("TARGET");
|
||||
pub const TARGET: &str = env!("TARGET");
|
||||
|
||||
/// Default package path template (may be overridden in package Cargo.toml)
|
||||
pub const DEFAULT_PKG_URL: &'static str =
|
||||
pub const DEFAULT_PKG_URL: &str =
|
||||
"{ repo }/releases/download/v{ version }/{ name }-{ target }-v{ version }.{ archive-format }";
|
||||
|
||||
/// Default binary name template (may be overridden in package Cargo.toml)
|
||||
pub const DEFAULT_BIN_DIR: &'static str = "{ name }-{ target }-v{ version }/{ bin }{ binary-ext }";
|
||||
pub const DEFAULT_BIN_DIR: &str = "{ name }-{ target }-v{ version }/{ bin }{ binary-ext }";
|
||||
|
||||
/// Binary format enumeration
|
||||
#[derive(
|
||||
|
@ -113,7 +113,7 @@ impl PkgMeta {
|
|||
/// Target specific overrides for binary installation
|
||||
///
|
||||
/// Exposed via `[package.metadata.TARGET]` in `Cargo.toml`
|
||||
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
|
||||
#[serde(rename_all = "kebab-case", default)]
|
||||
pub struct PkgOverride {
|
||||
/// URL template override for package downloads
|
||||
|
@ -126,16 +126,6 @@ pub struct PkgOverride {
|
|||
pub bin_dir: Option<String>,
|
||||
}
|
||||
|
||||
impl Default for PkgOverride {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
pkg_url: None,
|
||||
pkg_fmt: None,
|
||||
bin_dir: None,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
|
||||
#[serde(rename_all = "kebab-case")]
|
||||
pub struct BinMeta {
|
||||
|
@ -164,7 +154,7 @@ mod test {
|
|||
|
||||
let manifest = load_manifest_path(&manifest_dir).expect("Error parsing metadata");
|
||||
let package = manifest.package.unwrap();
|
||||
let meta = package.metadata.map(|m| m.binstall).flatten().unwrap();
|
||||
let meta = package.metadata.and_then(|m| m.binstall).unwrap();
|
||||
|
||||
assert_eq!(&package.name, "cargo-binstall");
|
||||
|
||||
|
|
|
@ -191,9 +191,8 @@ async fn entry() -> Result<()> {
|
|||
package
|
||||
.metadata
|
||||
.as_ref()
|
||||
.map(|m| m.binstall.clone())
|
||||
.flatten()
|
||||
.unwrap_or(PkgMeta::default()),
|
||||
.and_then(|m| m.binstall.clone())
|
||||
.unwrap_or_default(),
|
||||
manifest.bin,
|
||||
);
|
||||
|
||||
|
@ -254,6 +253,7 @@ async fn entry() -> Result<()> {
|
|||
}
|
||||
}
|
||||
|
||||
#[allow(clippy::too_many_arguments)]
|
||||
async fn install_from_package(
|
||||
binaries: Vec<Product>,
|
||||
fetcher: &dyn Fetcher,
|
||||
|
|
Loading…
Add table
Reference in a new issue