// use anyhow::{bail, Context as _, Result}; use init::init_config; use issues::fetch_open_issues; use printer::{Printer, StandardPrinter}; use scanner::{find_markers, DefaultFileScanner}; mod init; mod issues; mod model; mod patterns; mod printer; mod scanner; #[cfg(test)] mod tests; #[tokio::main] #[cfg(not(tarpaulin_include))] async fn main() -> std::result::Result<(), Box> { let github_workspace = std::env::var("GITHUB_WORKSPACE").context("GITHUB_WORKSPACE")?; let fs = kxio::fs::new(github_workspace); let net = kxio::net::new(); Ok(run(&StandardPrinter, &fs, &net).await?) } async fn run( printer: &impl Printer, fs: &kxio::fs::FileSystem, net: &kxio::net::Net, ) -> Result<()> { printer.println("Forgejo TODO Checker!"); let config = init_config(printer, fs, net)?; let issues = fetch_open_issues(&config).await?; let errors = find_markers(printer, &config, issues, &DefaultFileScanner)?; if errors > 0 { bail!("Invalid or closed TODO/FIXMEs found") } Ok(()) }