10
10
//! but forgot to bump its version.
11
11
//! ```
12
12
13
- use std:: collections:: HashSet ;
13
+ use std:: collections:: HashMap ;
14
14
use std:: fmt:: Write ;
15
15
use std:: fs;
16
16
use std:: task;
@@ -124,9 +124,9 @@ fn bump_check(args: &clap::ArgMatches, config: &mut cargo::util::Config) -> Carg
124
124
if let Some ( referenced_commit) = referenced_commit. as_ref ( ) {
125
125
status ( & format ! ( "compare against `{}`" , referenced_commit. id( ) ) ) ?;
126
126
for referenced_member in checkout_ws ( & ws, & repo, referenced_commit) ?. members ( ) {
127
- let Some ( changed_member ) = changed_members . get ( referenced_member ) else {
128
- let name = referenced_member . name ( ) . as_str ( ) ;
129
- tracing:: trace!( "skipping {name }, may be removed or not published" ) ;
127
+ let pkg_name = referenced_member . name ( ) . as_str ( ) ;
128
+ let Some ( changed_member ) = changed_members . get ( pkg_name ) else {
129
+ tracing:: trace!( "skipping {pkg_name }, may be removed or not published" ) ;
130
130
continue ;
131
131
} ;
132
132
@@ -317,7 +317,7 @@ fn changed<'r, 'ws>(
317
317
repo : & ' r git2:: Repository ,
318
318
base_commit : & git2:: Commit < ' r > ,
319
319
head : & git2:: Commit < ' r > ,
320
- ) -> CargoResult < HashSet < & ' ws Package > > {
320
+ ) -> CargoResult < HashMap < & ' ws str , & ' ws Package > > {
321
321
let root_pkg_name = ws. current ( ) ?. name ( ) ; // `cargo` crate.
322
322
let ws_members = ws
323
323
. members ( )
@@ -334,19 +334,20 @@ fn changed<'r, 'ws>(
334
334
let head_tree = head. as_object ( ) . peel_to_tree ( ) ?;
335
335
let diff = repo. diff_tree_to_tree ( Some ( & base_tree) , Some ( & head_tree) , Default :: default ( ) ) ?;
336
336
337
- let mut changed_members = HashSet :: new ( ) ;
337
+ let mut changed_members = HashMap :: new ( ) ;
338
338
339
339
for delta in diff. deltas ( ) {
340
340
let old = delta. old_file ( ) . path ( ) . unwrap ( ) ;
341
341
let new = delta. new_file ( ) . path ( ) . unwrap ( ) ;
342
342
for ( ref pkg_root, pkg) in ws_members. iter ( ) {
343
343
if old. starts_with ( pkg_root) || new. starts_with ( pkg_root) {
344
- changed_members. insert ( * pkg) ;
344
+ changed_members. insert ( pkg . name ( ) . as_str ( ) , * pkg) ;
345
345
break ;
346
346
}
347
347
}
348
348
}
349
349
350
+ tracing:: trace!( "changed_members: {:?}" , changed_members. keys( ) ) ;
350
351
Ok ( changed_members)
351
352
}
352
353
@@ -355,7 +356,7 @@ fn changed<'r, 'ws>(
355
356
/// Assumption: We always release a version larger than all existing versions.
356
357
fn check_crates_io < ' a > (
357
358
config : & Config ,
358
- changed_members : & HashSet < & ' a Package > ,
359
+ changed_members : & HashMap < & ' a str , & ' a Package > ,
359
360
needs_bump : & mut Vec < & ' a Package > ,
360
361
) -> CargoResult < ( ) > {
361
362
let source_id = SourceId :: crates_io ( config) ?;
@@ -366,10 +367,10 @@ fn check_crates_io<'a>(
366
367
STATUS ,
367
368
format_args ! ( "compare against `{}`" , source_id. display_registry_name( ) ) ,
368
369
) ?;
369
- for member in changed_members {
370
- let ( name , current) = ( member. name ( ) , member . version ( ) ) ;
370
+ for ( name , member) in changed_members {
371
+ let current = member. version ( ) ;
371
372
let version_req = format ! ( ">={current}" ) ;
372
- let query = Dependency :: parse ( name, Some ( & version_req) , source_id) ?;
373
+ let query = Dependency :: parse ( * name, Some ( & version_req) , source_id) ?;
373
374
let possibilities = loop {
374
375
// Exact to avoid returning all for path/git
375
376
match registry. query_vec ( & query, QueryKind :: Exact ) {
@@ -382,6 +383,13 @@ fn check_crates_io<'a>(
382
383
if possibilities. is_empty ( ) {
383
384
tracing:: trace!( "dep `{name}` has no version greater than or equal to `{current}`" ) ;
384
385
} else {
386
+ tracing:: trace!(
387
+ "`{name}@{current}` needs a bump because its should have a version newer than crates.io: {:?}`" ,
388
+ possibilities
389
+ . iter( )
390
+ . map( |s| format!( "{}@{}" , s. name( ) , s. version( ) ) )
391
+ . collect:: <Vec <_>>( ) ,
392
+ ) ;
385
393
needs_bump. push ( member) ;
386
394
}
387
395
}
0 commit comments