diff options
author | boasting-squirrel <boasting.squirrel@gmail.com> | 2019-02-04 21:42:30 +0000 |
---|---|---|
committer | boasting-squirrel <boasting.squirrel@gmail.com> | 2019-02-04 21:42:30 +0000 |
commit | 47d67bb037383ffb6c979136a3d486d33f74a11b (patch) | |
tree | f839c78e4a0c2bcf004ff92e73bcd7f94e538dff /src | |
parent | Implemented sorting (diff) | |
download | miniserve-47d67bb037383ffb6c979136a3d486d33f74a11b.tar.gz miniserve-47d67bb037383ffb6c979136a3d486d33f74a11b.zip |
Added --reverse option to reverse sort order
Diffstat (limited to 'src')
-rw-r--r-- | src/main.rs | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/main.rs b/src/main.rs index e7392bd..24f7d82 100644 --- a/src/main.rs +++ b/src/main.rs @@ -49,6 +49,7 @@ pub struct MiniserveConfig { no_symlinks: bool, random_route: Option<String>, sort_method: SortingMethods, + reverse_sort: bool, } #[derive(PartialEq)] @@ -208,7 +209,12 @@ pub fn parse_args() -> MiniserveConfig { .long("sort") .possible_values(&["natural", "alpha", "dirsfirst"]) .default_value("natural") - .help("Sort results"), + .help("Sort files"), + ) + .arg( + Arg::with_name("reverse") + .long("reverse") + .help("Reverse sorting order"), ) .arg( Arg::with_name("no-symlinks") @@ -256,6 +262,8 @@ pub fn parse_args() -> MiniserveConfig { .parse::<SortingMethods>() .unwrap(); + let reverse_sort = matches.is_present("reverse"); + MiniserveConfig { verbose, path: PathBuf::from(path.unwrap_or(".")), @@ -266,6 +274,7 @@ pub fn parse_args() -> MiniserveConfig { no_symlinks, random_route, sort_method, + reverse_sort, } } @@ -280,6 +289,7 @@ fn configure_app(app: App<MiniserveConfig>) -> App<MiniserveConfig> { let no_symlinks = app.state().no_symlinks; let random_route = app.state().random_route.clone(); let sort_method = app.state().sort_method.clone(); + let reverse_sort = app.state().reverse_sort; if path.is_file() { None } else { @@ -294,6 +304,7 @@ fn configure_app(app: App<MiniserveConfig>) -> App<MiniserveConfig> { no_symlinks, random_route.clone(), sort_method.clone(), + reverse_sort, ) }), ) @@ -484,6 +495,7 @@ fn directory_listing<S>( skip_symlinks: bool, random_route: Option<String>, sort_method: SortingMethods, + reverse_sort: bool, ) -> Result<HttpResponse, io::Error> { let index_of = format!("Index of {}", req.path()); let mut body = String::new(); @@ -549,6 +561,10 @@ fn directory_listing<S>( } }; + if reverse_sort { + entries.reverse(); + } + for entry in entries { match entry.entry_type { EntryType::Directory => { |