Parse issue list

This commit is contained in:
Rahix 2026-03-01 15:47:42 +01:00
parent 1db4778dc4
commit b3e0270e38
5 changed files with 56 additions and 29 deletions

View file

@ -4,19 +4,31 @@ use anyhow::Context as _;
pub async fn collect_tasks(ctx: &crate::Context) -> anyhow::Result<Vec<task::Task>> {
let issues = list_all_issues(ctx).await?;
let issues: Vec<_> = issues
.iter()
.map(|i| {
format!(
"#{} — {}",
i.number.unwrap_or(-1),
i.title.as_deref().unwrap_or("")
)
})
.collect();
dbg!(issues);
todo!()
let tasks = issues
.into_iter()
.map(|issue| {
task_from_issue(&issue).with_context(|| {
format!(
"Error while converting issue #{} to task",
issue.number.unwrap_or(-1)
)
})
})
.collect::<anyhow::Result<Vec<_>>>()?;
Ok(tasks)
}
fn task_from_issue(issue: &forgejo_api::structs::Issue) -> anyhow::Result<task::Task> {
Ok(task::Task {
issue_number: issue
.number
.context("Missing issue number")?
.try_into()
.context("Failed converting issue number")?,
title: issue.title.as_ref().context("Missing issue title")?.clone(),
})
}
async fn list_all_issues(ctx: &crate::Context) -> anyhow::Result<Vec<forgejo_api::structs::Issue>> {