summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPiotr Wach <pwach@bloomberg.net>2024-01-07 09:34:16 +0000
committerPiotr Wach <pwach@bloomberg.net>2024-01-07 09:34:16 +0000
commite53036ad84b71e1121588929fe4653a7ababbf67 (patch)
treecf4b01ce08c2a937cff2364ca7121d2cb9513444 /src
parentfeec3eb37d50c4b927ae3f948159693f134edf4b (diff)
Move ByteFormat out of WalkOptions
Diffstat (limited to 'src')
-rw-r--r--src/aggregate.rs11
-rw-r--r--src/common.rs1
-rw-r--r--src/interactive/app/bytevis.rs4
-rw-r--r--src/interactive/app/terminal_app.rs8
-rw-r--r--src/interactive/app/tests/utils.rs20
-rw-r--r--src/main.rs7
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