//! `pr [repo]` — print key fields of a PR as JSON. use anyhow::Result; use clap::Args as ClapArgs; use serde_json::json; use crate::client::{Client, index}; use crate::verbs::print_json; #[derive(ClapArgs)] pub struct Args { /// PR number. number: u64, } pub fn run(client: &Client, args: Args) -> Result<()> { let (owner, name) = client.owner_repo()?; let pull = client .api() .repo_get_pull_request(owner, name, index(args.number)?) .send()?; let trimmed = json!({ "number": pull.number, "title": pull.title, "state": pull.state, "merged": pull.merged, "user": pull.user.as_ref().and_then(|u| u.login.as_deref()), "head_sha": pull.head.as_ref().and_then(|h| h.sha.as_deref()), "head_branch": pull.head.as_ref().and_then(|h| h.label.as_deref()), "base_branch": pull.base.as_ref().and_then(|b| b.label.as_deref()), }); print_json(&trimmed) }