aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorboasting-squirrel <boasting.squirrel@gmail.com>2019-02-04 21:42:30 +0000
committerboasting-squirrel <boasting.squirrel@gmail.com>2019-02-04 21:42:30 +0000
commit47d67bb037383ffb6c979136a3d486d33f74a11b (patch)
treef839c78e4a0c2bcf004ff92e73bcd7f94e538dff
parentImplemented sorting (diff)
downloadminiserve-47d67bb037383ffb6c979136a3d486d33f74a11b.tar.gz
miniserve-47d67bb037383ffb6c979136a3d486d33f74a11b.zip
Added --reverse option to reverse sort order
-rw-r--r--README.md6
-rw-r--r--src/main.rs18
2 files changed, 23 insertions, 1 deletions
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<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 => {