summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorandy.boot <bootandy@gmail.com>2024-05-02 23:27:48 +0100
committerandy.boot <bootandy@gmail.com>2024-05-02 23:27:48 +0100
commitc03943613397f0be64187cd01dab231295a61964 (patch)
tree143943105c3b8bd86220477a0596f1b9806bcb33
parent2c34c38b29b06357430ad27c18328b4af60cb9a5 (diff)
refactor: cleanup -j / --output-json flagclean_json
Stop -j writing to a file, print to stdout instead.
-rw-r--r--src/display_node.rs4
-rw-r--r--src/main.rs43
-rw-r--r--src/node.rs3
3 files changed, 16 insertions, 34 deletions
diff --git a/src/display_node.rs b/src/display_node.rs
index 4ef1025..7f1f627 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 b2fc8a8..010e6f5 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;
@@ -233,18 +228,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 => {
@@ -301,13 +284,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),
+ )
+ }
}
}
@@ -342,10 +330,3 @@ fn init_rayon(stack_size: &Option<usize>) {
}
}
}
-
-fn output_json(output_filename: &str, top_level_nodes: &Vec<Node>) -> 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(())
-}
diff --git a/src/node.rs b/src/node.rs
index 522e1bb..78ecbf0 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,