Use tabwriter to pretty print the list response
This commit is contained in:
parent
a3ba3cd511
commit
6a21576236
3 changed files with 107 additions and 8 deletions
|
@ -1,6 +1,7 @@
|
|||
use crate::jira_config::JiraConfig;
|
||||
use reqwest::header::{HeaderMap, HeaderValue, CONTENT_TYPE};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::io::Write;
|
||||
|
||||
#[derive(Debug, Deserialize, Serialize)]
|
||||
struct JiraIssue {
|
||||
|
@ -81,18 +82,26 @@ async fn list_jira_issues(
|
|||
Ok(response.json::<JiraSearchResponse>().await?)
|
||||
}
|
||||
|
||||
fn display_issues_pretty(issues: &[JiraIssue], jira_url: &str) {
|
||||
fn display_issues_pretty(issues: &[JiraIssue]) -> Result<(), Box<dyn std::error::Error>> {
|
||||
println!("Found {} issues:", issues.len());
|
||||
println!("{:-<80}", "");
|
||||
|
||||
for issue in issues {
|
||||
println!("Key: {}", issue.key);
|
||||
println!("Summary: {}", issue.fields.summary);
|
||||
println!("Status: {}", issue.fields.status.name);
|
||||
println!("Created: {}", issue.fields.created);
|
||||
println!("URL: {}/browse/{}", jira_url, issue.key);
|
||||
let mut tw = tabwriter::TabWriter::new(vec![]);
|
||||
writeln!(tw, "Key:\t{}", issue.key)?;
|
||||
writeln!(tw, "Summary:\t{}", issue.fields.summary)?;
|
||||
writeln!(tw, "Status:\t{}", issue.fields.status.name)?;
|
||||
writeln!(tw, "Created:\t{}", issue.fields.created)?;
|
||||
writeln!(tw, "Due Date:\t{:?}", issue.fields.due_date)?;
|
||||
writeln!(tw, "URL:\t{}", issue.href)?;
|
||||
tw.flush().unwrap();
|
||||
|
||||
let written = String::from_utf8(tw.into_inner().unwrap()).unwrap();
|
||||
println!("{}", written);
|
||||
println!("{:-<80}", "");
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn display_issues_json(issues: &[JiraIssue]) -> Result<(), Box<dyn std::error::Error>> {
|
||||
|
@ -118,7 +127,7 @@ pub async fn list(json: bool) -> Result<(), Box<dyn std::error::Error>> {
|
|||
} else if response.issues.is_empty() {
|
||||
println!("No open issues found for assigned to you");
|
||||
} else {
|
||||
display_issues_pretty(&response.issues, &config.url);
|
||||
display_issues_pretty(&response.issues)?;
|
||||
println!("Total issues: {}", response.total);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue