From 47d67bb037383ffb6c979136a3d486d33f74a11b Mon Sep 17 00:00:00 2001 From: boasting-squirrel Date: Mon, 4 Feb 2019 22:42:30 +0100 Subject: Added --reverse option to reverse sort order --- README.md | 6 ++++++ src/main.rs | 18 +++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4176e51..4011d7d 100644 --- a/README.md +++ b/README.md @@ -53,6 +53,12 @@ Sometimes this is just a more practical and quick way than doing things properly # 11 # 3 + miniserve --reverse /tmp/myshare + # 11 + # 3 + # 2/ + # 1/ + ## Features - Easy to use 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, 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::() .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) -> App { 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) -> App { no_symlinks, random_route.clone(), sort_method.clone(), + reverse_sort, ) }), ) @@ -484,6 +495,7 @@ fn directory_listing( skip_symlinks: bool, random_route: Option, sort_method: SortingMethods, + reverse_sort: bool, ) -> Result { let index_of = format!("Index of {}", req.path()); let mut body = String::new(); @@ -549,6 +561,10 @@ fn directory_listing( } }; + if reverse_sort { + entries.reverse(); + } + for entry in entries { match entry.entry_type { EntryType::Directory => { -- cgit v1.2.3