Add a compact output mode
This commit is contained in:
parent
f05461f1f7
commit
a3352aa892
4 changed files with 28 additions and 1 deletions
|
@ -12,6 +12,7 @@ pub struct Cli {
|
||||||
pub enum FormatMode {
|
pub enum FormatMode {
|
||||||
Pretty,
|
Pretty,
|
||||||
Json,
|
Json,
|
||||||
|
Compact,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl std::fmt::Display for FormatMode {
|
impl std::fmt::Display for FormatMode {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use crate::cli::FormatMode;
|
use crate::cli::FormatMode;
|
||||||
use crate::jira_config::JiraConfig;
|
use crate::jira_config::JiraConfig;
|
||||||
use crate::types::issue::{display_issues_json, display_issues_pretty};
|
use crate::types::issue::{display_issues_compact, display_issues_json, display_issues_pretty};
|
||||||
|
|
||||||
pub async fn exec(output: FormatMode, jql: &str) -> Result<(), Box<dyn std::error::Error>> {
|
pub async fn exec(output: FormatMode, jql: &str) -> Result<(), Box<dyn std::error::Error>> {
|
||||||
let config = JiraConfig::load().map_err(|e| format!("Configuration error: {}", e))?;
|
let config = JiraConfig::load().map_err(|e| format!("Configuration error: {}", e))?;
|
||||||
|
@ -26,6 +26,10 @@ pub async fn exec(output: FormatMode, jql: &str) -> Result<(), Box<dyn std::erro
|
||||||
}
|
}
|
||||||
(FormatMode::Json, false) => display_issues_json(&result.issues)?,
|
(FormatMode::Json, false) => display_issues_json(&result.issues)?,
|
||||||
(FormatMode::Json, true) => println!("[]"),
|
(FormatMode::Json, true) => println!("[]"),
|
||||||
|
(FormatMode::Compact, false) => display_issues_compact(&result.issues)?,
|
||||||
|
(FormatMode::Compact, true) => {
|
||||||
|
println!("No results found for query.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
|
@ -142,6 +142,7 @@ pub async fn exec(output: FormatMode, issue_key: &str) -> Result<(), Box<dyn std
|
||||||
match output {
|
match output {
|
||||||
FormatMode::Pretty => pretty_print(&fetched_issue)?,
|
FormatMode::Pretty => pretty_print(&fetched_issue)?,
|
||||||
FormatMode::Json => json_print(&fetched_issue)?,
|
FormatMode::Json => json_print(&fetched_issue)?,
|
||||||
|
FormatMode::Compact => todo!(),
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
|
@ -122,6 +122,27 @@ pub fn display_issues_pretty(issues: &[JiraIssue]) -> Result<(), Box<dyn std::er
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn display_issues_compact(issues: &[JiraIssue]) -> Result<(), Box<dyn std::error::Error>> {
|
||||||
|
println!("Found {} issues:", issues.len());
|
||||||
|
println!("{:-<80}", "");
|
||||||
|
|
||||||
|
let mut tw = tabwriter::TabWriter::new(vec![]);
|
||||||
|
for issue in issues {
|
||||||
|
writeln!(
|
||||||
|
tw,
|
||||||
|
"{}:\t{}",
|
||||||
|
issue.key.clone().blue(),
|
||||||
|
issue.fields.summary.clone().green()
|
||||||
|
)?;
|
||||||
|
}
|
||||||
|
|
||||||
|
tw.flush().unwrap();
|
||||||
|
let written = String::from_utf8(tw.into_inner().unwrap()).unwrap();
|
||||||
|
print!("{}", written);
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
pub fn display_issues_json(issues: &[JiraIssue]) -> Result<(), Box<dyn std::error::Error>> {
|
pub fn display_issues_json(issues: &[JiraIssue]) -> Result<(), Box<dyn std::error::Error>> {
|
||||||
let j = serde_json::to_string_pretty(issues)?;
|
let j = serde_json::to_string_pretty(issues)?;
|
||||||
println!("{}", j);
|
println!("{}", j);
|
||||||
|
|
Loading…
Reference in a new issue