diff options
author | Piotr Wach <pwach@bloomberg.net> | 2024-01-07 09:34:16 +0000 |
---|---|---|
committer | Piotr Wach <pwach@bloomberg.net> | 2024-01-07 09:34:16 +0000 |
commit | e53036ad84b71e1121588929fe4653a7ababbf67 (patch) | |
tree | cf4b01ce08c2a937cff2364ca7121d2cb9513444 /src | |
parent | feec3eb37d50c4b927ae3f948159693f134edf4b (diff) |
Move ByteFormat out of WalkOptions
Diffstat (limited to 'src')
-rw-r--r-- | src/aggregate.rs | 11 | ||||
-rw-r--r-- | src/common.rs | 1 | ||||
-rw-r--r-- | src/interactive/app/bytevis.rs | 4 | ||||
-rw-r--r-- | src/interactive/app/terminal_app.rs | 8 | ||||
-rw-r--r-- | src/interactive/app/tests/utils.rs | 20 | ||||
-rw-r--r-- | src/main.rs | 7 |
6 files changed, 29 insertions, 22 deletions
diff --git a/src/aggregate.rs b/src/aggregate.rs index f867247..d314571 100644 --- a/src/aggregate.rs +++ b/src/aggregate.rs @@ -1,4 +1,4 @@ -use crate::{crossdev, InodeFilter, Throttle, WalkOptions, WalkResult}; +use crate::{crossdev, InodeFilter, Throttle, WalkOptions, WalkResult, ByteFormat}; use anyhow::Result; use filesize::PathExt; use owo_colors::{AnsiColors as Color, OwoColorize}; @@ -14,6 +14,7 @@ pub fn aggregate( walk_options: WalkOptions, compute_total: bool, sort_by_size_in_bytes: bool, + byte_format: ByteFormat, paths: impl IntoIterator<Item = impl AsRef<Path>>, ) -> Result<(WalkResult, Statistics)> { let mut res = WalkResult::default(); @@ -94,6 +95,7 @@ pub fn aggregate( num_bytes, num_errors, path_color_of(&path), + byte_format )?; } total += num_bytes; @@ -114,6 +116,7 @@ pub fn aggregate( num_bytes, num_errors, path_color_of(&path), + byte_format )?; } } @@ -126,6 +129,7 @@ pub fn aggregate( total, res.num_errors, None, + byte_format )?; } Ok((res, stats)) @@ -142,10 +146,11 @@ fn output_colored_path( num_bytes: u128, num_errors: u64, path_color: Option<Color>, + byte_format: ByteFormat, ) -> std::result::Result<(), io::Error> { - let size = options.byte_format.display(num_bytes).to_string(); + let size = byte_format.display(num_bytes).to_string(); let size = size.green(); - let size_width = options.byte_format.width(); + let size_width = byte_format.width(); let path = path.as_ref().display(); let errors = (num_errors != 0) diff --git a/src/common.rs b/src/common.rs index 7f4f89e..47c0b10 100644 --- a/src/common.rs +++ b/src/common.rs @@ -166,7 +166,6 @@ pub struct WalkOptions { /// The amount of threads to use. Refer to [`WalkDir::num_threads()`](https://docs.rs/jwalk/0.4.0/jwalk/struct.WalkDir.html#method.num_threads) /// for more information. pub threads: usize, - pub byte_format: ByteFormat, pub count_hard_links: bool, pub apparent_size: bool, pub sorting: TraversalSorting, diff --git a/src/interactive/app/bytevis.rs b/src/interactive/app/bytevis.rs index 1d1bc33..26a99e7 100644 --- a/src/interactive/app/bytevis.rs +++ b/src/interactive/app/bytevis.rs @@ -106,8 +106,8 @@ pub struct DisplayOptions { pub byte_vis: ByteVisualization, } -impl From<WalkOptions> for DisplayOptions { - fn from(WalkOptions { byte_format, .. }: WalkOptions) -> Self { +impl DisplayOptions { + pub fn new(byte_format: ByteFormat) -> Self { DisplayOptions { byte_format, byte_vis: ByteVisualization::default(), diff --git a/src/interactive/app/terminal_app.rs b/src/interactive/app/terminal_app.rs index 1367724..9d97ae7 100644 --- a/src/interactive/app/terminal_app.rs +++ b/src/interactive/app/terminal_app.rs @@ -2,7 +2,7 @@ use std::path::PathBuf; use crossbeam::channel::Receiver; use crosstermion::input::Event; -use dua::{traverse::{Traversal, Tree, EntryData}, WalkResult, WalkOptions}; +use dua::{traverse::{Traversal, Tree, EntryData}, WalkResult, WalkOptions, ByteFormat}; use tui::prelude::Backend; use tui_react::Terminal; use anyhow::Result; @@ -60,7 +60,7 @@ impl TerminalApp { pub fn initialize<B>( terminal: &mut Terminal<B>, - options: WalkOptions, + byte_format: ByteFormat, input_paths: Vec<PathBuf>, keys_rx: Receiver<Event>, ) -> Result<Option<KeyboardInputAndApp>> @@ -70,9 +70,7 @@ impl TerminalApp { terminal.hide_cursor()?; terminal.clear()?; - let mut display: DisplayOptions = options.clone().into(); - display.byte_vis = ByteVisualization::PercentageAndBar; - + let mut display = DisplayOptions::new(byte_format); let mut window = MainWindow::default(); // #[inline] diff --git a/src/interactive/app/tests/utils.rs b/src/interactive/app/tests/utils.rs index 82cf00b..e5c432a 100644 --- a/src/interactive/app/tests/utils.rs +++ b/src/interactive/app/tests/utils.rs @@ -179,15 +179,7 @@ pub fn initialized_app_and_terminal_with_closure( let input_paths = fixture_paths.iter().map(|c| convert(c.as_ref())).collect(); let app = TerminalApp::initialize( &mut terminal, - WalkOptions { - threads: 1, - byte_format: ByteFormat::Metric, - apparent_size: true, - count_hard_links: false, - sorting: TraversalSorting::AlphabeticalByFileName, - cross_filesystems: false, - ignore_dirs: Default::default(), - }, + ByteFormat::Metric, input_paths, keys_rx, )? @@ -196,6 +188,16 @@ pub fn initialized_app_and_terminal_with_closure( terminal, app.expect("app that didn't try to abort iteration"), )) + + // WalkOptions { + // threads: 1, + // byte_format: , + // apparent_size: true, + // count_hard_links: false, + // sorting: TraversalSorting::AlphabeticalByFileName, + // cross_filesystems: false, + // ignore_dirs: Default::default(), + // } } pub fn new_test_terminal() -> std::io::Result<Terminal<TestBackend>> { diff --git a/src/main.rs b/src/main.rs index 636b01a..7694cf1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -9,6 +9,7 @@ use std::{fs, io, io::Write, path::PathBuf, process}; use crate::interactive::input::input_channel; use crate::interactive::terminal_app::TerminalApp; +use crate::options::ByteFormat; mod crossdev; #[cfg(feature = "tui-crossplatform")] @@ -42,9 +43,9 @@ fn main() -> Result<()> { info!("dua options={opt:#?}"); } + let byte_format: dua::ByteFormat = opt.format.into(); let walk_options = dua::WalkOptions { threads: opt.threads, - byte_format: opt.format.into(), apparent_size: opt.apparent_size, count_hard_links: opt.count_hard_links, sorting: TraversalSorting::None, @@ -70,7 +71,7 @@ fn main() -> Result<()> { let keys_rx = input_channel(); let res = TerminalApp::initialize( &mut terminal, - walk_options, + byte_format, extract_paths_maybe_set_cwd(input, !opt.stay_on_filesystem)?, keys_rx, )? @@ -123,6 +124,7 @@ fn main() -> Result<()> { walk_options, !no_total, !no_sort, + byte_format, extract_paths_maybe_set_cwd(input, !opt.stay_on_filesystem)?, )?; if statistics { @@ -139,6 +141,7 @@ fn main() -> Result<()> { walk_options, true, true, + byte_format, extract_paths_maybe_set_cwd(opt.input, !opt.stay_on_filesystem)?, )? .0 |