Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions dylint/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ package_options = [
"rewriter",
"syntect",
"walkdir",
"toml",
]
__cargo_cli = [
"cargo-util",
Expand Down
43 changes: 19 additions & 24 deletions dylint/src/package_options/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -109,29 +109,24 @@ pub fn upgrade_package(opts: &opts::Dylint, upgrade_opts: &opts::Upgrade) -> Res
None => &current_dir,
};

let rev = {
let revs = Revs::new(opts.quiet)?;
let mut iter = revs.iter()?;
match &upgrade_opts.rust_version {
Some(rust_version) => {
let clippy_utils_version = clippy_utils_version_from_rust_version(rust_version)?;
// smoelius: The next iterative search is a bottleneck. It should be a binary
// search.
iter.find(|result| {
result
.as_ref()
.map_or(true, |rev| rev.version == clippy_utils_version)
})
.unwrap_or_else(|| {
Err(anyhow!(
"Could not find `clippy_utils` version `{}`",
clippy_utils_version
))
})?
}
None => iter.next().unwrap_or_else(|| {
Err(anyhow!("Could not determine latest `clippy_utils` version"))
})?,
// Instantiate Revs once
let revs = Revs::new(opts.quiet)?;

let rev = match &upgrade_opts.rust_version {
Some(rust_version) => {
// Find the specific version using the new find_version
let clippy_utils_version = clippy_utils_version_from_rust_version(rust_version)?;
let found_version = revs.find_version(&clippy_utils_version)?;
found_version.ok_or_else(|| {
anyhow!(
"Could not find `clippy_utils` version `{}`",
clippy_utils_version
)
})?
}
None => {
// Find the latest version using the new find_latest_rev
revs.find_latest_rev()?
}
};

Expand All @@ -150,7 +145,7 @@ pub fn upgrade_package(opts: &opts::Dylint, upgrade_opts: &opts::Upgrade) -> Res
rev.channel
);
}
};
}

let rust_toolchain_path = path.join("rust-toolchain");
let cargo_toml_path = path.join("Cargo.toml");
Expand Down
Loading
Loading