rename pr verbs per review: request-review -> assign-reviewer, assign -> assign-committer

This commit is contained in:
damocles 2026-07-02 21:00:38 +02:00 committed by mara
commit 224cb06004
5 changed files with 19 additions and 17 deletions

View file

@ -0,0 +1,41 @@
//! `pr assign-reviewer <number> <user> [--remove]` — add or remove a
//! requested reviewer on a PR. Unlike `pr assign-committer` (assignees,
//! mutate + PATCH the issue) Forgejo has a dedicated endpoint pair for review
//! requests: `POST /repos/{repo}/pulls/{index}/requested_reviewers`
//! adds, `DELETE` (same path + body) removes. Requesting a review from
//! a user who is already requested is a Forgejo-side no-op, so the verb
//! is idempotent in both directions.
use anyhow::Result;
use clap::Args as ClapArgs;
use serde_json::json;
use crate::client::Client;
#[derive(ClapArgs)]
pub struct Args {
/// PR number.
number: u64,
/// User login to request a review from (or withdraw with `--remove`).
user: String,
/// Withdraw the review request instead of adding it.
#[arg(long)]
remove: bool,
}
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] });
if args.remove {
client.delete(&path, Some(&body))?;
println!(
"review request withdrawn: {} on #{}",
args.user, args.number
);
} else {
client.post_json(&path, &body)?;
println!("review requested: {} on #{}", args.user, args.number);
}
Ok(())
}