@@ -32,7 +32,6 @@ enum VersionTag {
34impl VersionTag {
34impl VersionTag {
36 fn tag(&self) -> &'static str {
35 fn tag(&self) -> &'static str {
37 match self {
36 match self {
38 VersionTag::Manual(_) => "manual",
37 VersionTag::Manual(_) => "manual",
@@ -77,6 +76,9 @@ pub fn outdated() {
77 let mut i = 0;
76 let mut i = 0;
79 for (package, version) in map {
78 for (package, version) in map {
79+ if is_boot(&package) {
80 if i % 100 == 0 {
82 if i % 100 == 0 {
81 println!("{:02}%", ((i as f64 / entries as f64) * 100.0).floor());
83 println!("{:02}%", ((i as f64 / entries as f64) * 100.0).floor());
@@ -85,33 +87,71 @@ pub fn outdated() {
85 if version.version() != latest {
87 if version.version() != latest {
87 "{} mismatch, {}: {}, hackage: {}",
89 "{} mismatch, {}: {}, hackage: {}",
88− package, version.tag(), version.version(), latest
92+ version.version(),
93 for ((package, version), dependents) in support {
98 for ((package, version), dependents) in support {
99+ if is_boot(&package) {
94 if i % 100 == 0 {
103 if i % 100 == 0 {
95 println!("{:02}%", ((i as f64 / entries as f64) * 100.0).floor());
104 println!("{:02}%", ((i as f64 / entries as f64) * 100.0).floor());
98 let latest = latest_version(&package);
107 let latest = latest_version(&package);
99 if version != latest {
108 if version != latest {
110+ let dependents_stripped = dependents.len().checked_sub(max).unwrap_or(0);
111+ let dependents = dependents
114+ .map(|(p, v)| format!("{}-{}", p, v))
115+ .collect::<Vec<String>>()
117+ let dependents = if dependents_stripped > 0 {
118+ format!("{} and {} more", dependents, dependents_stripped)
100 println!(
123 println!(
101 "{} mismatch, snapshot: {}, hackage: {}, dependents: {}",
124 "{} mismatch, snapshot: {}, hackage: {}, dependents: {}",
105− dependents
125+ package, version, latest, dependents,
107− .map(|(p, v)| format!("{}-{}", p, v))
108− .collect::<Vec<String>>()
131+fn is_boot(package: &str) -> bool {
115fn latest_version(pkg: &str) -> String {
155fn latest_version(pkg: &str) -> String {
116 String::from_utf8(
156 String::from_utf8(
117 Command::new("latest-version")
157 Command::new("latest-version")