@@ -5,7 +5,7 @@ use std::path::PathBuf;
55
66use anyhow:: Context as _;
77use cargo_edit:: {
8- get_compatible_dependency , get_latest_dependency , registry_url, set_dep_version, shell_note,
8+ find_compatible_version , find_latest_version , registry_url, set_dep_version, shell_note,
99 shell_status, shell_warn, shell_write_stdout, CargoResult , CertsSource , CrateSpec , Dependency ,
1010 IndexCache , LocalManifest , RustVersion , Source ,
1111} ;
@@ -290,18 +290,17 @@ fn exec(args: UpgradeArgs) -> CargoResult<()> {
290290 // we're offline.
291291 let registry_url = registry_url ( & manifest_path, dependency. registry ( ) ) ?;
292292 let index = index. index ( & registry_url) ?;
293+ let krate = index. krate ( & dependency. name ) ?;
294+ let versions = krate
295+ . as_ref ( )
296+ . map ( |k| k. versions . as_slice ( ) )
297+ . unwrap_or_default ( ) ;
293298 let is_prerelease = old_version_req. contains ( '-' ) ;
294299
295300 let latest_compatible = VersionReq :: parse ( & old_version_req)
296301 . ok ( )
297302 . and_then ( |old_version_req| {
298- get_compatible_dependency (
299- & dependency. name ,
300- & old_version_req,
301- rust_version,
302- index,
303- )
304- . ok ( )
303+ find_compatible_version ( & versions, & old_version_req, rust_version)
305304 } )
306305 . map ( |d| {
307306 d. version ( )
@@ -310,13 +309,11 @@ fn exec(args: UpgradeArgs) -> CargoResult<()> {
310309 } ) ;
311310
312311 let latest_version =
313- get_latest_dependency ( & dependency. name , is_prerelease, rust_version, index)
314- . ok ( )
315- . map ( |d| {
316- d. version ( )
317- . expect ( "registry packages always have a version" )
318- . to_owned ( )
319- } ) ;
312+ find_latest_version ( & versions, is_prerelease, rust_version) . map ( |d| {
313+ d. version ( )
314+ . expect ( "registry packages always have a version" )
315+ . to_owned ( )
316+ } ) ;
320317
321318 let latest_incompatible = if latest_version != latest_compatible {
322319 latest_version
0 commit comments