diff --git a/src/render/context/mod.rs b/src/render/context/mod.rs index 0a4f006b..273cc1c2 100644 --- a/src/render/context/mod.rs +++ b/src/render/context/mod.rs @@ -78,8 +78,8 @@ pub struct Context { pub prune: bool, /// Sort-order to display directory content - #[arg(short, long, value_enum)] - sort: Option, + #[arg(short, long, value_enum, default_value_t = SortType::None)] + sort: SortType, /// Always sorts directories above files #[arg(long)] @@ -151,7 +151,7 @@ impl Context { } /// The sort-order used for printing. - pub fn sort(&self) -> Option { + pub fn sort(&self) -> SortType { self.sort } diff --git a/src/render/context/test.rs b/src/render/context/test.rs index 1e0fcb63..c9817aaf 100644 --- a/src/render/context/test.rs +++ b/src/render/context/test.rs @@ -13,9 +13,7 @@ fn config() { assert_eq!(level, 1, "Failed to properly read 'level' from config"); - let sort = context - .sort() - .expect("Failed to properly read 'sort' from config"); + let sort = context.sort(); assert_eq!( sort, diff --git a/src/render/order.rs b/src/render/order.rs index a2e0e8f7..ff606a79 100644 --- a/src/render/order.rs +++ b/src/render/order.rs @@ -13,6 +13,9 @@ pub enum SortType { /// Sort entries by size largest to smallest, bottom to top SizeRev, + + /// Do not sort entries + None, } #[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] @@ -56,6 +59,7 @@ impl SortType { Self::Name => Some(Box::new(Self::name_comparator)), Self::Size => Some(Box::new(Self::size_comparator)), Self::SizeRev => Some(Box::new(Self::size_rev_comparator)), + Self::None => None, } } diff --git a/src/render/tree/mod.rs b/src/render/tree/mod.rs index ec9ea8b8..45be38d3 100644 --- a/src/render/tree/mod.rs +++ b/src/render/tree/mod.rs @@ -167,10 +167,8 @@ impl Tree { current_node.set_file_size(dir_size) } - if let Some(order) = ctx.sort().map(|s| Order::from((s, ctx.dirs_first()))) { - if let Some(func) = order.comparator() { - current_node.sort_children(func); - } + if let Some(func) = Order::from((ctx.sort(), ctx.dirs_first())).comparator() { + current_node.sort_children(func) } } }