From 29a11476a41b40110c8583cfe67a6a79bdd5be2f Mon Sep 17 00:00:00 2001 From: damocles Date: Sun, 2 Aug 2026 12:38:07 +0200 Subject: [PATCH] hive-forge: show/pr show now list current dependencies --- hive-forge/src/verbs/issue.rs | 4 +++- hive-forge/src/verbs/mod.rs | 29 ++++++++++++++++++++++++++++- hive-forge/src/verbs/pr.rs | 4 +++- 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/hive-forge/src/verbs/issue.rs b/hive-forge/src/verbs/issue.rs index dd2cde97..08a00049 100644 --- a/hive-forge/src/verbs/issue.rs +++ b/hive-forge/src/verbs/issue.rs @@ -5,7 +5,7 @@ use clap::Args as ClapArgs; use serde_json::json; use crate::client::{Client, index}; -use crate::verbs::print_json; +use crate::verbs::{dependency_summaries, print_json}; #[derive(ClapArgs)] pub struct Args { @@ -33,6 +33,7 @@ pub fn run(client: &Client, args: Args) -> Result<()> { .iter() .filter_map(|l| l.name.as_deref()) .collect(); + let dependencies = dependency_summaries(client, owner, name, args.number)?; let trimmed = json!({ "number": issue.number, "title": issue.title, @@ -40,6 +41,7 @@ pub fn run(client: &Client, args: Args) -> Result<()> { "user": issue.user.as_ref().and_then(|u| u.login.as_deref()), "assignees": assignees, "labels": labels, + "dependencies": dependencies, "body": issue.body, }); print_json(&trimmed) diff --git a/hive-forge/src/verbs/mod.rs b/hive-forge/src/verbs/mod.rs index 784df9e1..f2cd9bc8 100644 --- a/hive-forge/src/verbs/mod.rs +++ b/hive-forge/src/verbs/mod.rs @@ -46,7 +46,7 @@ pub mod view; use std::fmt::Write as _; use anyhow::Result; -use serde_json::Value; +use serde_json::{Value, json}; use time::OffsetDateTime; use time::format_description::well_known::Rfc3339; @@ -204,6 +204,33 @@ pub(crate) fn latest_reviews(client: &Client, repo: &str, pr: u64) -> Result Result> { + let deps = client + .api() + .issue_list_issue_dependencies(owner, name, index(number)?) + .send()?; + Ok(deps + .into_iter() + .map(|d| json!({ "number": d.number, "title": d.title })) + .collect()) +} + #[cfg(test)] mod tests { use super::pct_encode; diff --git a/hive-forge/src/verbs/pr.rs b/hive-forge/src/verbs/pr.rs index 46aa5e6d..0e3d7c4c 100644 --- a/hive-forge/src/verbs/pr.rs +++ b/hive-forge/src/verbs/pr.rs @@ -5,7 +5,7 @@ use clap::Args as ClapArgs; use serde_json::json; use crate::client::{Client, index}; -use crate::verbs::print_json; +use crate::verbs::{dependency_summaries, print_json}; #[derive(ClapArgs)] pub struct Args { @@ -19,6 +19,7 @@ pub fn run(client: &Client, args: Args) -> Result<()> { .api() .repo_get_pull_request(owner, name, index(args.number)?) .send()?; + let dependencies = dependency_summaries(client, owner, name, args.number)?; let trimmed = json!({ "number": pull.number, "title": pull.title, @@ -28,6 +29,7 @@ pub fn run(client: &Client, args: Args) -> Result<()> { "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()), + "dependencies": dependencies, }); print_json(&trimmed) }