feat: collect env into Config and note planned operations
All checks were successful
Test / test (push) Successful in 3s
All checks were successful
Test / test (push) Successful in 3s
This commit is contained in:
parent
307e463c87
commit
eea2e14fb0
2 changed files with 51 additions and 16 deletions
|
@ -6,3 +6,4 @@ edition = "2021"
|
||||||
[dependencies]
|
[dependencies]
|
||||||
anyhow = "1.0"
|
anyhow = "1.0"
|
||||||
regex = "1.10"
|
regex = "1.10"
|
||||||
|
ureq = "2.10"
|
||||||
|
|
66
src/main.rs
66
src/main.rs
|
@ -1,28 +1,62 @@
|
||||||
|
use std::path::PathBuf;
|
||||||
|
|
||||||
use anyhow::Context;
|
use anyhow::Context;
|
||||||
|
use regex::Regex;
|
||||||
|
|
||||||
|
struct Config {
|
||||||
|
workdir: PathBuf,
|
||||||
|
repo: String,
|
||||||
|
server: String,
|
||||||
|
auth_token: Option<String>,
|
||||||
|
prefix_pattern: Regex,
|
||||||
|
issue_pattern: Regex,
|
||||||
|
}
|
||||||
|
|
||||||
fn main() -> anyhow::Result<()> {
|
fn main() -> anyhow::Result<()> {
|
||||||
println!("Forgejo TODO Checker!");
|
println!("Forgejo TODO Checker!");
|
||||||
|
|
||||||
let ci_repo = std::env::var("GITHUB_REPOSITORY").context("GITHUB_REPOSITORY")?;
|
let config = Config {
|
||||||
let ci_server_url = std::env::var("GITHUB_SERVER_URL").context("GITHUB_SERVER_URL")?;
|
workdir: std::env::var("GITHUB_WORKSPACE")
|
||||||
let ci_repo_url = format!("{ci_server_url}/{ci_repo}");
|
.context("GITHUB_WORKSPACE")?
|
||||||
|
.into(),
|
||||||
|
repo: std::env::var("GITHUB_REPOSITORY").context("GITHUB_REPOSITORY")?,
|
||||||
|
server: std::env::var("GITHUB_SERVER_URL").context("GITHUB_SERVER_URL")?,
|
||||||
|
auth_token: std::env::var("REPO_TOKEN").ok(),
|
||||||
|
prefix_pattern: regex::Regex::new(r"(#|//)\s*(TODO|FIXME)").context("prefix regex")?,
|
||||||
|
issue_pattern: regex::Regex::new(r"( |)(\(|\(#)(?P<ISSUE_NUMBER>\d+)(\))")
|
||||||
|
.context("issue regex")?,
|
||||||
|
};
|
||||||
|
|
||||||
// optional arg for private repos
|
println!("Repo: {}", config.repo);
|
||||||
let repo_token = std::env::var("REPO_TOKEN").ok();
|
println!("Prefix: {}", config.prefix_pattern);
|
||||||
|
println!("Issues: {}", config.issue_pattern);
|
||||||
|
|
||||||
// Regex to match a todo or fixme comment
|
// TODO: scan files in workdir
|
||||||
let prefix = regex::Regex::new(r"(#|//)\s*(TODO|FIXME)").context("prefix regex")?;
|
// TODO: ignore files listed in .rgignore .ignore or .gitignore
|
||||||
// Regex to match the rest of the line to find an issue number
|
// TODO: scan for malformed TODO and FIXME comments (e.g. no issue number) - add to error list
|
||||||
let issue =
|
// TODO: build list of expected open issues with file locations where found
|
||||||
regex::Regex::new(r"( |)(\(|\(#)(?P<ISSUE_NUMBER>\d+)(\))").context("issue regex")?;
|
|
||||||
|
|
||||||
println!("[ci_repo:{ci_repo}][ci_repo_url:{ci_repo_url}][repo_token:{repo_token:?}][prefix:{prefix}][issue:{issue}]");
|
|
||||||
|
|
||||||
// list files in current directory to get a feel for what we have access to
|
// list files in current directory to get a feel for what we have access to
|
||||||
std::fs::read_dir(".")?
|
// std::fs::read_dir(workdir)?
|
||||||
.filter_map(Result::ok)
|
// .filter_map(Result::ok)
|
||||||
.map(|e| e.path())
|
// .map(|e| e.path())
|
||||||
.for_each(|e| println!("{e:?}"));
|
// .for_each(|e| println!("{e:?}"));
|
||||||
|
|
||||||
|
// Collect open issues:
|
||||||
|
// let limit = 10;
|
||||||
|
// let page = 0;
|
||||||
|
// let api = format!(
|
||||||
|
// "{ci_server_url}/api/v1/repos/{ci_repo}/issues?state=open&limit=${limit}&page=${page}"
|
||||||
|
// );
|
||||||
|
// TODO: add authentication when provided
|
||||||
|
// let issues = ureq::get(&api).call()?.into_string()?;
|
||||||
|
// TODO: parse issues to get list of open issue numbers
|
||||||
|
|
||||||
|
// TODO: loop over list of expected issues and drop any where they do exist and are open
|
||||||
|
// TODO: if remaining list is not empty - add all to error list
|
||||||
|
//
|
||||||
|
// TODO: if error list is empty - exit okay
|
||||||
|
// TODO: if error list is not empty - log erros and exit not okay
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue