//! `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; use crate::verbs::print_json; #[derive(ClapArgs)] pub struct Args { /// PR number. number: u64, } pub fn run(client: &Client, args: Args) -> Result<()> { let repo = client.repo(); let v = client.get_json(&format!("/repos/{repo}/pulls/{}", args.number))?; let trimmed = json!({ "number": v.get("number"), "title": v.get("title"), "state": v.get("state"), "merged": v.get("merged"), "user": v.get("user").and_then(|u| u.get("login")), "head_sha": v.get("head").and_then(|h| h.get("sha")), "head_branch": v.get("head").and_then(|h| h.get("label")), "base_branch": v.get("base").and_then(|b| b.get("label")), }); print_json(&trimmed) }