jirust_cli/utils/
json_printer.rs

1use super::PrintableData;
2
3/// Print the data in JSON format
4///
5/// # Arguments
6///
7/// * `data` - The data to be printed
8///
9/// # Example
10///
11/// ```
12/// use jira_v3_openapi::models::Version;
13/// use jirust_cli::utils::{PrintableData, json_printer::print_json};
14///
15/// let versions: Vec<Version> = vec![Version::new()];
16///
17/// print_json(PrintableData::Version { versions });
18/// ```
19pub fn print_json(data: PrintableData) {
20    match data {
21        PrintableData::Generic { data } => {
22            if let Ok(output) = serde_json::to_string_pretty(&data) {
23                println!("{}", output);
24            } else {
25                println!("Failed to serialize data");
26            }
27        }
28        PrintableData::IssueTransitions { transitions } => {
29            if let Ok(output) = serde_json::to_string_pretty(&transitions) {
30                println!("{}", output);
31            } else {
32                println!("Failed to serialize data");
33            }
34        }
35        PrintableData::IssueCreated { issues } => {
36            if let Ok(output) = serde_json::to_string_pretty(&issues) {
37                println!("{}", output);
38            } else {
39                println!("Failed to serialize data");
40            }
41        }
42        PrintableData::IssueData { issues } => {
43            if let Ok(output) = serde_json::to_string_pretty(&issues) {
44                println!("{}", output);
45            } else {
46                println!("Failed to serialize data");
47            }
48        }
49        PrintableData::IssueType { issue_types } => {
50            if let Ok(output) = serde_json::to_string_pretty(&issue_types) {
51                println!("{}", output);
52            } else {
53                println!("Failed to serialize data");
54            }
55        }
56        PrintableData::IssueTypeField { issue_type_fields } => {
57            if let Ok(output) = serde_json::to_string_pretty(&issue_type_fields) {
58                println!("{}", output);
59            } else {
60                println!("Failed to serialize data");
61            }
62        }
63        PrintableData::Project { projects } => {
64            if let Ok(output) = serde_json::to_string_pretty(&projects) {
65                println!("{}", output);
66            } else {
67                println!("Failed to serialize data");
68            }
69        }
70        PrintableData::TransitionedIssue { issues } => {
71            let printable = issues
72                .iter()
73                .map(|(issue, transitioned, assigned, fix_version)| {
74                    serde_json::json!({
75                        "issue": issue,
76                        "transitioned": transitioned,
77                        "assigned": assigned,
78                        "fixVersion": fix_version,
79                    })
80                })
81                .collect::<Vec<_>>();
82            if let Ok(output) = serde_json::to_string_pretty(&printable) {
83                println!("{}", output);
84            } else {
85                println!("Failed to serialize data");
86            }
87        }
88        PrintableData::Version { versions } => {
89            if let Ok(output) = serde_json::to_string_pretty(&versions) {
90                println!("{}", output);
91            } else {
92                println!("Failed to serialize data");
93            }
94        }
95    }
96}