Skip to content

Commit ac6c98c

Browse files
author
Andrew McKnight
committed
get all prs and display state
1 parent 060adb3 commit ac6c98c

File tree

1 file changed

+22
-9
lines changed

1 file changed

+22
-9
lines changed

src/main.rs

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -626,24 +626,37 @@ impl Chain {
626626
let output = Command::new("gh")
627627
.arg("pr")
628628
.arg("list")
629+
.arg("--state")
630+
.arg("all")
629631
.arg("--head")
630632
.arg(&branch.branch_name)
631633
.arg("--json")
632-
.arg("url")
634+
.arg("url,state")
633635
.output();
634636

635637
match output {
636638
Ok(output) if output.status.success() => {
637639
let stdout = String::from_utf8_lossy(&output.stdout);
638640
let pr_objects: Vec<serde_json::Value> = serde_json::from_str(&stdout).unwrap_or_default();
639-
let pr_urls: Vec<String> = pr_objects.iter().filter_map(|pr| pr.get("url").and_then(|url| url.as_str()).map(String::from)).collect();
640-
641-
if !pr_urls.is_empty() {
642-
let pr_list = pr_urls
643-
.iter()
644-
.map(|url| format!("{}", url))
645-
.collect::<Vec<String>>()
646-
.join("; ");
641+
let pr_details: Vec<String> = pr_objects.iter().filter_map(|pr| {
642+
let url = pr.get("url").and_then(|url| url.as_str());
643+
let state = pr.get("state").and_then(|state| state.as_str());
644+
match (url, state) {
645+
(Some(url), Some(state)) => {
646+
let colored_state = match state {
647+
"MERGED" => "Merged".purple().to_string(),
648+
"OPEN" => "Open".green().to_string(),
649+
"CLOSED" => "Closed".red().to_string(),
650+
_ => state.to_string(),
651+
};
652+
Some(format!("{} [{}]", url, colored_state))
653+
},
654+
_ => None,
655+
}
656+
}).collect();
657+
658+
if !pr_details.is_empty() {
659+
let pr_list = pr_details.join("; ");
647660
status_line.push_str(&format!(" ({})", pr_list));
648661
}
649662
}

0 commit comments

Comments
 (0)