Skip to content

Commit bb1d830

Browse files
committed
refactor(update): Consolidate status messages
This builds on the prior work to consolidate everything, simplifying the code and making it clearer what behavior differences exist between change kinds.
1 parent 2e1f9f4 commit bb1d830

File tree

2 files changed

+74
-100
lines changed

2 files changed

+74
-100
lines changed

src/cargo/ops/cargo_update.rs

Lines changed: 72 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -501,32 +501,39 @@ fn print_lockfile_generation(
501501
status_locking(ws, num_pkgs)?;
502502

503503
for change in changes {
504-
let possibilities = if let Some(query) = change.alternatives_query() {
505-
loop {
506-
match registry.query_vec(&query, QueryKind::Exact) {
507-
std::task::Poll::Ready(res) => {
508-
break res?;
504+
match change.kind {
505+
PackageChangeKind::Added => {
506+
let possibilities = if let Some(query) = change.alternatives_query() {
507+
loop {
508+
match registry.query_vec(&query, QueryKind::Exact) {
509+
std::task::Poll::Ready(res) => {
510+
break res?;
511+
}
512+
std::task::Poll::Pending => registry.block_until_ready()?,
513+
}
509514
}
510-
std::task::Poll::Pending => registry.block_until_ready()?,
511-
}
512-
}
513-
} else {
514-
vec![]
515-
};
515+
} else {
516+
vec![]
517+
};
516518

517-
{
518-
let package_id = change.package_id;
519-
let required_rust_version = report_required_rust_version(ws, resolve, package_id);
520-
let latest = report_latest(&possibilities, package_id);
521-
let note = required_rust_version.or(latest);
519+
let package_id = change.package_id;
520+
let required_rust_version = report_required_rust_version(ws, resolve, package_id);
521+
let latest = report_latest(&possibilities, package_id);
522+
let note = required_rust_version.or(latest);
522523

523-
if let Some(note) = note {
524-
assert_eq!(change.kind, PackageChangeKind::Added);
525-
ws.gctx().shell().status_with_color(
526-
change.kind.status(),
527-
format!("{change}{note}"),
528-
&change.kind.style(),
529-
)?;
524+
if let Some(note) = note {
525+
ws.gctx().shell().status_with_color(
526+
change.kind.status(),
527+
format!("{change}{note}"),
528+
&change.kind.style(),
529+
)?;
530+
}
531+
}
532+
PackageChangeKind::Upgraded
533+
| PackageChangeKind::Downgraded
534+
| PackageChangeKind::Removed
535+
| PackageChangeKind::Unchanged => {
536+
unreachable!("without a previous resolve, everything should be added")
530537
}
531538
}
532539
}
@@ -548,42 +555,24 @@ fn print_lockfile_sync(
548555
status_locking(ws, num_pkgs)?;
549556

550557
for change in changes {
551-
let possibilities = if let Some(query) = change.alternatives_query() {
552-
loop {
553-
match registry.query_vec(&query, QueryKind::Exact) {
554-
std::task::Poll::Ready(res) => {
555-
break res?;
558+
match change.kind {
559+
PackageChangeKind::Added
560+
| PackageChangeKind::Upgraded
561+
| PackageChangeKind::Downgraded => {
562+
let possibilities = if let Some(query) = change.alternatives_query() {
563+
loop {
564+
match registry.query_vec(&query, QueryKind::Exact) {
565+
std::task::Poll::Ready(res) => {
566+
break res?;
567+
}
568+
std::task::Poll::Pending => registry.block_until_ready()?,
569+
}
556570
}
557-
std::task::Poll::Pending => registry.block_until_ready()?,
558-
}
559-
}
560-
} else {
561-
vec![]
562-
};
563-
564-
let package_id = change.package_id;
565-
if change.previous_id.is_some() {
566-
let required_rust_version = report_required_rust_version(ws, resolve, package_id);
567-
let latest = report_latest(&possibilities, package_id);
568-
let note = required_rust_version.or(latest).unwrap_or_default();
569-
570-
let msg = format!("{change}{note}");
571+
} else {
572+
vec![]
573+
};
571574

572-
if change.kind == PackageChangeKind::Downgraded {
573-
ws.gctx().shell().status_with_color(
574-
change.kind.status(),
575-
msg,
576-
&change.kind.style(),
577-
)?;
578-
} else {
579-
ws.gctx().shell().status_with_color(
580-
change.kind.status(),
581-
msg,
582-
&change.kind.style(),
583-
)?;
584-
}
585-
} else {
586-
if change.kind == PackageChangeKind::Added {
575+
let package_id = change.package_id;
587576
let required_rust_version = report_required_rust_version(ws, resolve, package_id);
588577
let latest = report_latest(&possibilities, package_id);
589578
let note = required_rust_version.or(latest).unwrap_or_default();
@@ -594,6 +583,7 @@ fn print_lockfile_sync(
594583
&change.kind.style(),
595584
)?;
596585
}
586+
PackageChangeKind::Removed | PackageChangeKind::Unchanged => {}
597587
}
598588
}
599589

@@ -628,61 +618,45 @@ fn print_lockfile_updates(
628618
vec![]
629619
};
630620

631-
let package_id = change.package_id;
632-
if change.previous_id.is_some() {
633-
let required_rust_version = report_required_rust_version(ws, resolve, package_id);
634-
let latest = report_latest(&possibilities, package_id);
635-
let note = required_rust_version.or(latest).unwrap_or_default();
636-
637-
let msg = format!("{change}{note}");
621+
match change.kind {
622+
PackageChangeKind::Added
623+
| PackageChangeKind::Upgraded
624+
| PackageChangeKind::Downgraded => {
625+
let package_id = change.package_id;
626+
let required_rust_version = report_required_rust_version(ws, resolve, package_id);
627+
let latest = report_latest(&possibilities, package_id);
628+
let note = required_rust_version.or(latest).unwrap_or_default();
638629

639-
if change.kind == PackageChangeKind::Downgraded {
640630
ws.gctx().shell().status_with_color(
641631
change.kind.status(),
642-
msg,
643-
&change.kind.style(),
644-
)?;
645-
} else {
646-
ws.gctx().shell().status_with_color(
647-
change.kind.status(),
648-
msg,
632+
format!("{change}{note}"),
649633
&change.kind.style(),
650634
)?;
651635
}
652-
} else {
653-
if change.kind == PackageChangeKind::Removed {
636+
PackageChangeKind::Removed => {
654637
ws.gctx().shell().status_with_color(
655638
change.kind.status(),
656639
format!("{change}"),
657640
&change.kind.style(),
658641
)?;
659-
} else if change.kind == PackageChangeKind::Added {
642+
}
643+
PackageChangeKind::Unchanged => {
644+
let package_id = change.package_id;
660645
let required_rust_version = report_required_rust_version(ws, resolve, package_id);
661646
let latest = report_latest(&possibilities, package_id);
662-
let note = required_rust_version.or(latest).unwrap_or_default();
647+
let note = required_rust_version.as_deref().or(latest.as_deref());
663648

664-
ws.gctx().shell().status_with_color(
665-
change.kind.status(),
666-
format!("{change}{note}"),
667-
&change.kind.style(),
668-
)?;
669-
}
670-
}
671-
if change.kind == PackageChangeKind::Unchanged {
672-
let required_rust_version = report_required_rust_version(ws, resolve, package_id);
673-
let latest = report_latest(&possibilities, package_id);
674-
let note = required_rust_version.as_deref().or(latest.as_deref());
675-
676-
if let Some(note) = note {
677-
if latest.is_some() {
678-
unchanged_behind += 1;
679-
}
680-
if ws.gctx().shell().verbosity() == Verbosity::Verbose {
681-
ws.gctx().shell().status_with_color(
682-
change.kind.status(),
683-
format!("{change}{note}"),
684-
&change.kind.style(),
685-
)?;
649+
if let Some(note) = note {
650+
if latest.is_some() {
651+
unchanged_behind += 1;
652+
}
653+
if ws.gctx().shell().verbosity() == Verbosity::Verbose {
654+
ws.gctx().shell().status_with_color(
655+
change.kind.status(),
656+
format!("{change}{note}"),
657+
&change.kind.style(),
658+
)?;
659+
}
686660
}
687661
}
688662
}

tests/testsuite/global_cache_tracker.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -439,7 +439,7 @@ fn frequency() {
439439
.env("CARGO_GC_AUTO_FREQUENCY", "1 day")
440440
.masquerade_as_nightly_cargo(&["gc"])
441441
.run();
442-
assert_eq!(get_index_names().len(), 1);
442+
assert_eq!(get_index_names().len(), 0);
443443
assert_eq!(get_registry_names("src").len(), 0);
444444
assert_eq!(get_registry_names("cache").len(), 0);
445445
}
@@ -613,7 +613,7 @@ fn auto_gc_various_commands() {
613613
.acquire_package_cache_lock(CacheLockMode::MutateExclusive)
614614
.unwrap();
615615
let indexes = tracker.registry_index_all().unwrap();
616-
assert_eq!(indexes.len(), 1);
616+
assert_eq!(indexes.len(), 0);
617617
let crates = tracker.registry_crate_all().unwrap();
618618
assert_eq!(crates.len(), 0);
619619
let srcs = tracker.registry_src_all().unwrap();

0 commit comments

Comments
 (0)