@@ -67,10 +67,6 @@ pub struct UpgradeArgs {
67
67
#[ clap( long) ]
68
68
dry_run : bool ,
69
69
70
- /// Only update a dependency if the new version is semver incompatible.
71
- #[ clap( long, conflicts_with = "to-lockfile" ) ]
72
- skip_compatible : bool ,
73
-
74
70
/// Only update a dependency if it is not currently pinned in the manifest.
75
71
/// "Pinned" refers to dependencies with a '=' or '<' or '<=' version requirement
76
72
#[ clap( long) ]
@@ -245,9 +241,18 @@ fn exec(args: UpgradeArgs) -> CargoResult<()> {
245
241
} else {
246
242
// Not checking `selected_dependencies.is_empty`, it was checked earlier
247
243
let new_version = if args. to_lockfile {
248
- find_locked_version ( & dependency. name , & old_version_req, & locked) . ok_or_else (
249
- || anyhow:: format_err!( "{} is not in block file" , dependency. name) ,
250
- )
244
+ match find_locked_version ( & dependency. name , & old_version_req, & locked) {
245
+ Some ( new_version) => new_version,
246
+ None => {
247
+ args. verbose ( || {
248
+ shell_warn ( & format ! (
249
+ "ignoring {}, could not find package: not in lock file" ,
250
+ dependency. toml_key( ) ,
251
+ ) )
252
+ } ) ?;
253
+ continue ;
254
+ }
255
+ }
251
256
} else {
252
257
// Update indices for any alternative registries, unless
253
258
// we're offline.
@@ -263,7 +268,7 @@ fn exec(args: UpgradeArgs) -> CargoResult<()> {
263
268
}
264
269
}
265
270
let is_prerelease = old_version_req. contains ( '-' ) ;
266
- get_latest_dependency (
271
+ let new_version = get_latest_dependency (
267
272
& dependency. name ,
268
273
is_prerelease,
269
274
& manifest_path,
@@ -273,34 +278,33 @@ fn exec(args: UpgradeArgs) -> CargoResult<()> {
273
278
d. version ( )
274
279
. expect ( "registry packages always have a version" )
275
280
. to_owned ( )
276
- } )
277
- } ;
278
- let new_version = match new_version {
279
- Ok ( new_version) => new_version,
280
- Err ( err) => {
281
+ } ) ;
282
+ let new_version = match new_version {
283
+ Ok ( new_version) => new_version,
284
+ Err ( err) => {
285
+ args. verbose ( || {
286
+ shell_warn ( & format ! (
287
+ "ignoring {}, could not find package: {}" ,
288
+ dependency. toml_key( ) ,
289
+ err
290
+ ) )
291
+ } ) ?;
292
+ continue ;
293
+ }
294
+ } ;
295
+ if old_version_compatible ( & old_version_req, & new_version) {
281
296
args. verbose ( || {
282
297
shell_warn ( & format ! (
283
- "ignoring {}, could not find package: {}" ,
298
+ "ignoring {}, version ({}) is compatible with {}" ,
284
299
dependency. toml_key( ) ,
285
- err
300
+ old_version_req,
301
+ new_version
286
302
) )
287
303
} ) ?;
288
304
continue ;
289
305
}
306
+ new_version
290
307
} ;
291
- if args. skip_compatible
292
- && old_version_compatible ( & old_version_req, & new_version)
293
- {
294
- args. verbose ( || {
295
- shell_warn ( & format ! (
296
- "ignoring {}, version ({}) is compatible with {}" ,
297
- dependency. toml_key( ) ,
298
- old_version_req,
299
- new_version
300
- ) )
301
- } ) ?;
302
- continue ;
303
- }
304
308
let mut new_version_req = new_version;
305
309
let new_ver: semver:: Version = new_version_req. parse ( ) ?;
306
310
match cargo_edit:: upgrade_requirement ( & old_version_req, & new_ver) {
0 commit comments