aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Cargo.toml2
-rw-r--r--README.md24
-rw-r--r--src/sersve.rs7
3 files changed, 20 insertions, 13 deletions
diff --git a/Cargo.toml b/Cargo.toml
index 7163e16..1d4aec6 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -20,8 +20,10 @@ regex = "*"
num_cpus = "*"
serde = "*"
serde_macros = "*"
+serde_json = "*"
lazy_static = "*"
libc = "*"
docopt = "*"
docopt_macros = "*"
rustc-serialize = "*"
+env_logger = "*"
diff --git a/README.md b/README.md
index fe34ab0..aa1a674 100644
--- a/README.md
+++ b/README.md
@@ -18,18 +18,20 @@ target/release/sersve # target/sersve respectively
## Options
```
-Usage: target/release/sersve [options]
-A minimal directory server, written in Rust with Iron.
+A minimal static file server, written in Rust with Iron.
+Usage: sersve [options]
Options:
- -c --config NAME set config file name
- -a --address HOST the address to bind to
- -p --port PORT the port to serve
- -r --root ROOT the uppermost directory to serve
- -f --filter REGEX a regular expression to filter the filenames
- -s --size BYTES the maximum size of a file that will be served
- -t --template TEMPLATE
- a mustache template to use for rendering
- -h --help print this help menu
+ -h, --help Show this message.
+ -v, --version Show the version of sersve (duh).
+ -c, --config FILE Provide a configuration file (JSON).
+ -a, --address HOST The address to bind to.
+ -p, --port PORT The port to serve.
+ -r, --root ROOT The uppermost directory to serve.
+ -f, --filter REGEX A regular expression to filter the filenames.
+ -s, --size BYTES The maximum size of a file that will be served.
+ -t, --template TEMPLATE A Mustache template to use for rendering.
+ --threads THREADS Amount of threads to use for serving.
+ --fork Fork sersve into a background process.
```
## Configuration format
diff --git a/src/sersve.rs b/src/sersve.rs
index 1ed1129..e70e2bb 100644
--- a/src/sersve.rs
+++ b/src/sersve.rs
@@ -12,6 +12,8 @@ extern crate serde;
extern crate lazy_static;
extern crate docopt;
extern crate rustc_serialize;
+extern crate env_logger;
+extern crate serde_json;
use std::{ env, fs, process };
use std::path::{ Path, PathBuf };
@@ -25,7 +27,7 @@ use regex::Regex;
use conduit_mime_types::Types;
-use serde::json::{ self, Value };
+use serde_json::Value;
use iron::prelude::*;
use iron::status;
@@ -101,7 +103,7 @@ lazy_static! {
.unwrap();
// cannot if-let, because typesafe errors are helpful
- let json = match json::from_str(&conf) {
+ let json = match serde_json::from_str(&conf) {
Ok(Value::Object(o)) => o,
_ => panic!("Invalid configuration file. Doesn't contain valid top-level object.")
};
@@ -289,6 +291,7 @@ fn serve(req: &mut Request) -> IronResult<Response> {
}
fn main() {
+ env_logger::init().ok().expect("Unable to initialise env_logger.");
let (host, port, threads) = {
(ARGS.flag_address.clone().unwrap_or(HOST.into()),
ARGS.flag_port.clone().unwrap_or(PORT),