From 1c7a058150f36dd0a5536fa9e9e5012863fc7acd Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Wed, 10 Jul 2024 15:12:25 -0400 Subject: [PATCH] gen-job-list: add verbose option Signed-off-by: Kent Overstreet --- src/bin/gen-job-list.rs | 25 ++++++++++++++++++++----- src/bin/get-test-job.rs | 6 +----- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/bin/gen-job-list.rs b/src/bin/gen-job-list.rs index 81212bf..dfe7893 100644 --- a/src/bin/gen-job-list.rs +++ b/src/bin/gen-job-list.rs @@ -12,6 +12,7 @@ use file_lock::{FileLock, FileOptions}; use memoize::memoize; use anyhow; use chrono::Utc; +use clap::Parser; #[memoize] fn get_subtests(test_path: PathBuf) -> Vec { @@ -174,7 +175,9 @@ fn rc_test_jobs(rc: &CiConfig, repo: &git2::Repository, ret } -fn write_test_jobs(rc: &CiConfig, jobs_in: Vec) -> anyhow::Result<()> { +fn write_test_jobs(rc: &CiConfig, jobs_in: Vec, verbose: bool) -> anyhow::Result<()> { + eprintln!("Writing new test jobs"); + let jobs_fname = rc.ktest.output_dir.join("jobs"); let jobs_fname_new = rc.ktest.output_dir.join("jobs.new"); let mut jobs_out = std::io::BufWriter::new(File::create(&jobs_fname_new)?); @@ -259,23 +262,33 @@ fn fetch_remotes(rc: &CiConfig, repo: &git2::Repository) -> anyhow::Result Ok(true) } -fn update_jobs(rc: &CiConfig, repo: &git2::Repository) -> anyhow::Result<()> { +fn update_jobs(rc: &CiConfig, repo: &git2::Repository, verbose: bool) -> anyhow::Result<()> { if !fetch_remotes(rc, repo)? { + eprintln!("remotes unchanged, skipping updating joblist"); return Ok(()); } let lockfile = rc.ktest.output_dir.join("jobs.lock"); let filelock = FileLock::lock(lockfile, true, FileOptions::new().create(true).write(true))?; - let jobs_in = rc_test_jobs(rc, repo, false); - write_test_jobs(rc, jobs_in)?; + let jobs_in = rc_test_jobs(rc, repo, verbose); + write_test_jobs(rc, jobs_in, verbose)?; drop(filelock); Ok(()) } +#[derive(Parser)] +#[command(author, version, about, long_about = None)] +struct Args { + #[arg(short, long)] + verbose: bool, +} + fn main() { + let args = Args::parse(); + let rc = ciconfig_read(); if let Err(e) = rc { eprintln!("could not read config; {}", e); @@ -291,5 +304,7 @@ fn main() { } let repo = repo.unwrap(); - update_jobs(&rc, &repo).ok(); + if let Err(e) = update_jobs(&rc, &repo, args.verbose) { + eprintln!("update_jobs() error: {}", e); + } } diff --git a/src/bin/get-test-job.rs b/src/bin/get-test-job.rs index 11d1817..66ec48d 100644 --- a/src/bin/get-test-job.rs +++ b/src/bin/get-test-job.rs @@ -4,8 +4,8 @@ use std::process; use ci_cgi::{Ktestrc, ciconfig_read, lockfile_exists}; use ci_cgi::{Worker, workers_update}; use file_lock::{FileLock, FileOptions}; -use clap::Parser; use chrono::Utc; +use clap::Parser; #[derive(Debug)] struct TestJob { @@ -131,10 +131,6 @@ fn get_and_lock_job(rc: &Ktestrc) -> Option { } fn main() { - std::process::Command::new("gen-job-list") - .output() - .expect("failed to execute gen-job-list"); - let args = Args::parse(); let rc = ciconfig_read();