refactor(hive-forge): port CLI verbs to forgejo-api

This commit is contained in:
müde 2026-07-07 09:24:53 +02:00
commit 4636987469
36 changed files with 1463 additions and 1153 deletions

View file

@ -8,9 +8,9 @@
use anyhow::Result;
use clap::Args as ClapArgs;
use serde_json::json;
use forgejo_api::structs::PullReviewRequestOptions;
use crate::client::Client;
use crate::client::{Client, index};
#[derive(ClapArgs)]
pub struct Args {
@ -24,17 +24,26 @@ pub struct Args {
}
pub fn run(client: &Client, args: Args) -> Result<()> {
let repo = client.repo();
let path = format!("/repos/{repo}/pulls/{}/requested_reviewers", args.number);
let body = json!({ "reviewers": [args.user] });
let (owner, name) = client.owner_repo()?;
let idx = index(args.number)?;
let body = PullReviewRequestOptions {
reviewers: Some(vec![args.user.clone()]),
team_reviewers: None,
};
if args.remove {
client.delete(&path, Some(&body))?;
client
.api()
.repo_delete_pull_review_requests(owner, name, idx, body)
.send()?;
println!(
"review request withdrawn: {} on #{}",
args.user, args.number
);
} else {
client.post_json(&path, &body)?;
client
.api()
.repo_create_pull_review_requests(owner, name, idx, body)
.send()?;
println!("review requested: {} on #{}", args.user, args.number);
}
Ok(())