diff --git a/README.md b/README.md index 1627cdf..e7c2c20 100644 --- a/README.md +++ b/README.md @@ -89,6 +89,9 @@ nexy -p /path/to/public_dir --list-dir-modified Show directory modified time +--list-dir-reverse + Sort directories in list DESC (ASC by default) + --list-file-size Show file size in list (as the alternative text for navigation links) @@ -101,6 +104,9 @@ nexy -p /path/to/public_dir --list-file-modified Show file modified time +--list-file-reverse + Sort files in list DESC (ASC by default) + --list-time-format Time format for listing items diff --git a/src/config.rs b/src/config.rs index 7608a74..d9f2403 100644 --- a/src/config.rs +++ b/src/config.rs @@ -84,6 +84,10 @@ pub struct Config { #[arg(long, default_value_t = false)] pub list_dir_modified: bool, + /// Sort directories in list DESC (ASC by default) + #[arg(long, default_value_t = false)] + pub list_dir_reverse: bool, + /// Show file size in list (as the alternative text for navigation links) #[arg(long, default_value_t = false)] pub list_file_size: bool, @@ -100,6 +104,10 @@ pub struct Config { #[arg(long, default_value_t = false)] pub list_file_modified: bool, + /// Sort files in list DESC (ASC by default) + #[arg(long, default_value_t = false)] + pub list_file_reverse: bool, + /// Time format for listing items /// /// * use escape notation for `%` e.g. `"%%Y-%%m-%%d %%H:%%M:%%S"` diff --git a/src/session/storage.rs b/src/session/storage.rs index bdc6559..373a365 100644 --- a/src/session/storage.rs +++ b/src/session/storage.rs @@ -146,6 +146,9 @@ impl Storage { } // format dirs list dirs.sort_by(|a, b| a.name.cmp(&b.name)); + if self.list_config.dir.is_reverse { + dirs.reverse() + } for dir in dirs { r.push({ let dc = &self.list_config.dir; // just short alias @@ -172,6 +175,9 @@ impl Storage { } // format files list files.sort_by(|a, b| a.name.cmp(&b.name)); + if self.list_config.file.is_reverse { + files.reverse() + } for file in files { r.push({ let fc = &self.list_config.file; // just short alias diff --git a/src/session/storage/list_config.rs b/src/session/storage/list_config.rs index 4317003..bf6076c 100644 --- a/src/session/storage/list_config.rs +++ b/src/session/storage/list_config.rs @@ -5,12 +5,14 @@ pub struct Time { } pub struct Dir { - pub time: Time, pub is_count: bool, + pub is_reverse: bool, + pub time: Time, } pub struct File { - pub time: Time, + pub is_reverse: bool, pub is_size: bool, + pub time: Time, } pub struct ListConfig { @@ -29,6 +31,7 @@ impl ListConfig { is_modified: config.list_dir_modified, }, is_count: config.list_dir_count, + is_reverse: config.list_dir_reverse, }, file: File { time: Time { @@ -37,6 +40,7 @@ impl ListConfig { is_modified: config.list_file_modified, }, is_size: config.list_file_size, + is_reverse: config.list_file_reverse, }, time_format: config.list_time_format.clone(), }