mirror of
https://github.com/YGGverse/nexy.git
synced 2026-03-31 17:25:27 +00:00
implement list sort options
This commit is contained in:
parent
0a22d1388c
commit
520b9c5695
4 changed files with 103 additions and 7 deletions
24
README.md
24
README.md
|
|
@ -89,6 +89,18 @@ nexy -p /path/to/public_dir
|
|||
--list-dir-modified
|
||||
Show directory modified time
|
||||
|
||||
--list-dir-sort-accessed
|
||||
Sort dirs by time accessed (name by default)
|
||||
|
||||
--list-dir-sort-created
|
||||
Sort dirs by time created (name by default)
|
||||
|
||||
--list-dir-sort-modified
|
||||
Sort dirs by time modified (name by default)
|
||||
|
||||
--list-dir-sort-count
|
||||
Sort dirs by count (name by default)
|
||||
|
||||
--list-dir-reverse
|
||||
Sort directories in list DESC (ASC by default)
|
||||
|
||||
|
|
@ -104,6 +116,18 @@ nexy -p /path/to/public_dir
|
|||
--list-file-modified
|
||||
Show file modified time
|
||||
|
||||
--list-file-sort-accessed
|
||||
Sort files by time accessed (name by default)
|
||||
|
||||
--list-file-sort-created
|
||||
Sort files by time created (name by default)
|
||||
|
||||
--list-file-sort-modified
|
||||
Sort files by time modified (name by default)
|
||||
|
||||
--list-file-sort-size
|
||||
Sort files by size (name by default)
|
||||
|
||||
--list-file-reverse
|
||||
Sort files in list DESC (ASC by default)
|
||||
|
||||
|
|
|
|||
|
|
@ -84,6 +84,22 @@ pub struct Config {
|
|||
#[arg(long, default_value_t = false)]
|
||||
pub list_dir_modified: bool,
|
||||
|
||||
/// Sort dirs by time accessed (name by default)
|
||||
#[arg(long, default_value_t = false)]
|
||||
pub list_dir_sort_accessed: bool,
|
||||
|
||||
/// Sort dirs by time created (name by default)
|
||||
#[arg(long, default_value_t = false)]
|
||||
pub list_dir_sort_created: bool,
|
||||
|
||||
/// Sort dirs by time modified (name by default)
|
||||
#[arg(long, default_value_t = false)]
|
||||
pub list_dir_sort_modified: bool,
|
||||
|
||||
/// Sort dirs by count (name by default)
|
||||
#[arg(long, default_value_t = false)]
|
||||
pub list_dir_sort_count: bool,
|
||||
|
||||
/// Sort directories in list DESC (ASC by default)
|
||||
#[arg(long, default_value_t = false)]
|
||||
pub list_dir_reverse: bool,
|
||||
|
|
@ -104,6 +120,22 @@ pub struct Config {
|
|||
#[arg(long, default_value_t = false)]
|
||||
pub list_file_modified: bool,
|
||||
|
||||
/// Sort files by time accessed (name by default)
|
||||
#[arg(long, default_value_t = false)]
|
||||
pub list_file_sort_accessed: bool,
|
||||
|
||||
/// Sort files by time created (name by default)
|
||||
#[arg(long, default_value_t = false)]
|
||||
pub list_file_sort_created: bool,
|
||||
|
||||
/// Sort files by time modified (name by default)
|
||||
#[arg(long, default_value_t = false)]
|
||||
pub list_file_sort_modified: bool,
|
||||
|
||||
/// Sort files by size (name by default)
|
||||
#[arg(long, default_value_t = false)]
|
||||
pub list_file_sort_size: bool,
|
||||
|
||||
/// Sort files in list DESC (ASC by default)
|
||||
#[arg(long, default_value_t = false)]
|
||||
pub list_file_reverse: bool,
|
||||
|
|
|
|||
|
|
@ -145,13 +145,25 @@ impl Storage {
|
|||
r.push("=> ../".to_string())
|
||||
}
|
||||
// format dirs list
|
||||
dirs.sort_by(|a, b| a.name.cmp(&b.name));
|
||||
if self.list_config.dir.is_reverse {
|
||||
let dc = &self.list_config.dir; // just short alias
|
||||
dirs.sort_by(|a, b| {
|
||||
if dc.is_sort_accessed {
|
||||
a.meta.atime().cmp(&b.meta.atime())
|
||||
} else if dc.is_sort_created {
|
||||
a.meta.ctime().cmp(&b.meta.ctime())
|
||||
} else if dc.is_sort_modified {
|
||||
a.meta.mtime().cmp(&b.meta.mtime())
|
||||
} else if dc.is_sort_count {
|
||||
a.meta.size().cmp(&b.meta.size())
|
||||
} else {
|
||||
a.name.cmp(&b.name)
|
||||
}
|
||||
});
|
||||
if dc.is_reverse {
|
||||
dirs.reverse()
|
||||
}
|
||||
for dir in dirs {
|
||||
r.push({
|
||||
let dc = &self.list_config.dir; // just short alias
|
||||
let mut l = format!("=> {}/", encode(&dir.name)); // link
|
||||
let mut a = Vec::new(); // alt
|
||||
if dc.is_count {
|
||||
|
|
@ -174,13 +186,25 @@ impl Storage {
|
|||
})
|
||||
}
|
||||
// format files list
|
||||
files.sort_by(|a, b| a.name.cmp(&b.name));
|
||||
if self.list_config.file.is_reverse {
|
||||
let fc = &self.list_config.file; // just short alias
|
||||
files.sort_by(|a, b| {
|
||||
if fc.is_sort_accessed {
|
||||
a.meta.atime().cmp(&b.meta.atime())
|
||||
} else if fc.is_sort_created {
|
||||
a.meta.ctime().cmp(&b.meta.ctime())
|
||||
} else if fc.is_sort_modified {
|
||||
a.meta.mtime().cmp(&b.meta.mtime())
|
||||
} else if fc.is_sort_size {
|
||||
a.meta.size().cmp(&b.meta.size())
|
||||
} else {
|
||||
a.name.cmp(&b.name)
|
||||
}
|
||||
});
|
||||
if fc.is_reverse {
|
||||
files.reverse()
|
||||
}
|
||||
for file in files {
|
||||
r.push({
|
||||
let fc = &self.list_config.file; // just short alias
|
||||
let mut l = format!("=> {}", encode(&file.name)); // link
|
||||
let mut a = Vec::new(); // alt
|
||||
if fc.is_size {
|
||||
|
|
|
|||
|
|
@ -7,11 +7,19 @@ pub struct Time {
|
|||
pub struct Dir {
|
||||
pub is_count: bool,
|
||||
pub is_reverse: bool,
|
||||
pub is_sort_accessed: bool,
|
||||
pub is_sort_count: bool,
|
||||
pub is_sort_created: bool,
|
||||
pub is_sort_modified: bool,
|
||||
pub time: Time,
|
||||
}
|
||||
pub struct File {
|
||||
pub is_reverse: bool,
|
||||
pub is_size: bool,
|
||||
pub is_sort_accessed: bool,
|
||||
pub is_sort_created: bool,
|
||||
pub is_sort_modified: bool,
|
||||
pub is_sort_size: bool,
|
||||
pub time: Time,
|
||||
}
|
||||
|
||||
|
|
@ -32,6 +40,10 @@ impl ListConfig {
|
|||
},
|
||||
is_count: config.list_dir_count,
|
||||
is_reverse: config.list_dir_reverse,
|
||||
is_sort_accessed: config.list_dir_sort_accessed,
|
||||
is_sort_created: config.list_dir_sort_created,
|
||||
is_sort_modified: config.list_dir_sort_modified,
|
||||
is_sort_count: config.list_dir_sort_count,
|
||||
},
|
||||
file: File {
|
||||
time: Time {
|
||||
|
|
@ -39,8 +51,12 @@ impl ListConfig {
|
|||
is_created: config.list_file_created,
|
||||
is_modified: config.list_file_modified,
|
||||
},
|
||||
is_size: config.list_file_size,
|
||||
is_reverse: config.list_file_reverse,
|
||||
is_size: config.list_file_size,
|
||||
is_sort_accessed: config.list_file_sort_accessed,
|
||||
is_sort_created: config.list_file_sort_created,
|
||||
is_sort_modified: config.list_file_sort_modified,
|
||||
is_sort_size: config.list_file_sort_size,
|
||||
},
|
||||
time_format: config.list_time_format.clone(),
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue