about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJakub Beránek <berykubik@gmail.com>2025-04-16 13:24:01 +0200
committerJakub Beránek <berykubik@gmail.com>2025-04-17 16:18:01 +0200
commitd14df2652df492fe0f19c5e0ae5041b39b5a4d20 (patch)
tree4640bc69c023b8d05609b482c3d308d4918da7b5
parent94015d3cd4b48d098abd0f3e44af97dab2b713b4 (diff)
downloadrust-d14df2652df492fe0f19c5e0ae5041b39b5a4d20.tar.gz
rust-d14df2652df492fe0f19c5e0ae5041b39b5a4d20.zip
Make `parent` in `download_auto_job_metrics` optional
-rw-r--r--src/ci/citool/src/main.rs2
-rw-r--r--src/ci/citool/src/metrics.rs23
2 files changed, 13 insertions, 12 deletions
diff --git a/src/ci/citool/src/main.rs b/src/ci/citool/src/main.rs
index a1956da352f..0fee862f572 100644
--- a/src/ci/citool/src/main.rs
+++ b/src/ci/citool/src/main.rs
@@ -180,7 +180,7 @@ fn postprocess_metrics(
 }
 
 fn post_merge_report(db: JobDatabase, current: String, parent: String) -> anyhow::Result<()> {
-    let metrics = download_auto_job_metrics(&db, &parent, &current)?;
+    let metrics = download_auto_job_metrics(&db, Some(&parent), &current)?;
 
     println!("\nComparing {parent} (parent) -> {current} (this PR)\n");
 
diff --git a/src/ci/citool/src/metrics.rs b/src/ci/citool/src/metrics.rs
index a816fb3c4f1..3d8b1ad84cf 100644
--- a/src/ci/citool/src/metrics.rs
+++ b/src/ci/citool/src/metrics.rs
@@ -46,24 +46,25 @@ pub struct JobMetrics {
 /// `parent` and `current` should be commit SHAs.
 pub fn download_auto_job_metrics(
     job_db: &JobDatabase,
-    parent: &str,
+    parent: Option<&str>,
     current: &str,
 ) -> anyhow::Result<HashMap<JobName, JobMetrics>> {
     let mut jobs = HashMap::default();
 
     for job in &job_db.auto_jobs {
         eprintln!("Downloading metrics of job {}", job.name);
-        let metrics_parent = match download_job_metrics(&job.name, parent) {
-            Ok(metrics) => Some(metrics),
-            Err(error) => {
-                eprintln!(
-                    r#"Did not find metrics for job `{}` at `{parent}`: {error:?}.
+        let metrics_parent =
+            parent.and_then(|parent| match download_job_metrics(&job.name, parent) {
+                Ok(metrics) => Some(metrics),
+                Err(error) => {
+                    eprintln!(
+                        r#"Did not find metrics for job `{}` at `{parent}`: {error:?}.
 Maybe it was newly added?"#,
-                    job.name
-                );
-                None
-            }
-        };
+                        job.name
+                    );
+                    None
+                }
+            });
         let metrics_current = download_job_metrics(&job.name, current)?;
         jobs.insert(
             job.name.clone(),