//! `comment-edit [body sources] [repo]` — edit an existing //! comment by id. use anyhow::Result; use clap::Args as ClapArgs; use serde_json::json; use crate::body; use crate::client::Client; use crate::verbs::print_json; #[derive(ClapArgs)] pub struct Args { /// Comment id. id: u64, /// Inline body text. #[arg(long, conflicts_with = "body_file")] body: Option, /// Read body from a file. `-` means stdin. #[arg(long = "body-file")] body_file: Option, } pub fn run(client: &Client, args: Args) -> Result<()> { let body = body::resolve_required( args.body.as_deref(), args.body_file.as_deref(), "comment-edit", )?; let repo = client.repo(); let resp = client.patch_json( &format!("/repos/{repo}/issues/comments/{}", args.id), &json!({ "body": body }), )?; print_json(&json!({ "id": resp.get("id"), "user": resp.get("user").and_then(|u| u.get("login")), "url": resp.get("html_url"), })) }