use std::path::PathBuf; use branchless::git::{NonZeroOid, Repo}; use tracing_chrome::ChromeLayerBuilder; use tracing_error::ErrorLayer; use tracing_subscriber::prelude::*; fn main() -> eyre::Result<()> { color_eyre::install()?; if std::env::var("RUST_PROFILE").is_ok() { let include_args = std::env::var("RUST_PROFILE_INCLUDE_ARGS").is_ok(); let (profile_layer, _profile_layer_guard) = ChromeLayerBuilder::new().include_args(include_args).build(); tracing_subscriber::registry() .with(ErrorLayer::default()) .with(profile_layer) .try_init()?; } let path_to_repo: PathBuf = std::env::var("PATH_TO_REPO") .expect("No `PATH_TO_REPO` was set") .into(); println!("Path to repo: {path_to_repo:?}"); let repo = Repo::from_dir(&path_to_repo)?; let commit = match std::env::var("COMMIT_OID") { Ok(commit_oid) => { let commit_oid: NonZeroOid = commit_oid.parse()?; repo.find_commit_or_fail(commit_oid)? } Err(_) => { let head_oid = repo .get_head_info()? .oid .expect("No `COMMIT_OID` was set, and no `HEAD` OID is available"); repo.find_commit_or_fail(head_oid)? } }; println!("Commit to check: {:?}", &commit); let result = repo.get_paths_touched_by_commit(&commit)?; println!("Result: {result:?}"); Ok(()) }