forgejo-todo-checker/src/main.rs

45 lines
1 KiB
Rust
Raw Normal View History

2024-09-18 11:55:33 +01:00
//
use anyhow::{bail, Context as _, Result};
2024-09-19 19:12:41 +01:00
use init::init_config;
2024-09-20 07:23:36 +01:00
use issues::fetch_open_issues;
use printer::{Printer, StandardPrinter};
use scanner::{find_markers, DefaultFileScanner};
2024-09-18 11:55:33 +01:00
2024-09-19 19:12:41 +01:00
mod init;
2024-09-20 07:23:36 +01:00
mod issues;
2024-09-18 11:55:33 +01:00
mod model;
mod patterns;
mod printer;
2024-09-19 19:12:41 +01:00
mod scanner;
2024-09-19 19:32:15 +01:00
#[cfg(test)]
mod tests;
2024-09-20 07:23:36 +01:00
#[tokio::main]
#[cfg(not(tarpaulin_include))]
2024-09-20 07:23:36 +01:00
async fn main() -> std::result::Result<(), Box<dyn std::error::Error>> {
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?)
2024-09-19 20:37:23 +01:00
}
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(())
}