diff --git a/src/display_node.rs b/src/display_node.rs index 4ef10259..7f1f6276 100644 --- a/src/display_node.rs +++ b/src/display_node.rs @@ -1,6 +1,8 @@ use std::path::PathBuf; -#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone)] +use serde::Serialize; + +#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Serialize)] pub struct DisplayNode { // Note: the order of fields in important here, for PartialEq and PartialOrd pub size: u64, diff --git a/src/main.rs b/src/main.rs index 99e8e35e..628da3d1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -39,11 +39,6 @@ use terminal_size::{terminal_size, Height, Width}; use utils::get_filesystem_devices; use utils::simplify_dir_names; -use crate::node::Node; -use chrono::Local; -use std::fs::File; -use std::io::Write; - static DEFAULT_NUMBER_OF_LINES: usize = 30; static DEFAULT_TERMINAL_WIDTH: usize = 80; @@ -234,18 +229,6 @@ fn main() { let top_level_nodes = walk_it(simplified_dirs, &walk_data); - if config.get_output_json(&options) { - let datetime = Local::now().format("%Y%m%d%H%M%S").to_string(); - let output_filename = format!("node-{}.json", datetime); - let result = output_json(&output_filename, &top_level_nodes); - match result { - Ok(..) => {} - Err(err) => { - eprintln!("Error: {}", err) - } - } - } - let tree = match summarize_file_types { true => get_all_file_types(&top_level_nodes, number_of_lines), false => { @@ -302,13 +285,18 @@ fn main() { output_format, bars_on_right: config.get_bars_on_right(&options), }; - draw_it( - idd, - config.get_no_bars(&options), - terminal_width, - &root_node, - config.get_skip_total(&options), - ) + + if config.get_output_json(&options) { + println!("{}", serde_json::to_string(&root_node).unwrap()); + } else { + draw_it( + idd, + config.get_no_bars(&options), + terminal_width, + &root_node, + config.get_skip_total(&options), + ) + } } } @@ -323,13 +311,6 @@ fn init_rayon(stack_size: &Option, threads: &Option) { } } -fn output_json(output_filename: &str, top_level_nodes: &Vec) -> std::io::Result<()> { - let serialized: String = serde_json::to_string(&top_level_nodes).unwrap(); - let mut file = File::create(output_filename)?; - file.write_all(serialized.as_bytes())?; - Ok(()) -} - fn build_thread_pool( stack: Option, threads: Option, diff --git a/src/node.rs b/src/node.rs index 522e1bb9..78ecbf06 100644 --- a/src/node.rs +++ b/src/node.rs @@ -3,11 +3,10 @@ use crate::utils::is_filtered_out_due_to_invert_regex; use crate::utils::is_filtered_out_due_to_regex; use regex::Regex; -use serde::Serialize; use std::cmp::Ordering; use std::path::PathBuf; -#[derive(Debug, Eq, Clone, Serialize)] +#[derive(Debug, Eq, Clone)] pub struct Node { pub name: PathBuf, pub size: u64,