From b7111ddf628c5d270240f259b98c509ae521bf23 Mon Sep 17 00:00:00 2001 From: Edu4rdSHL Date: Wed, 9 Jun 2021 21:28:50 -0500 Subject: [PATCH] Make static directory user-configurable. Defaults to /var/lib/webtail-rs/static Better message printing. Signed-off-by: Edu4rdSHL --- src/args.rs | 2 ++ src/cli.yml | 59 ++++++++++++++++++++++++++++---------------------- src/main.rs | 7 ++++-- src/structs.rs | 1 + src/worker.rs | 2 +- 5 files changed, 42 insertions(+), 29 deletions(-) diff --git a/src/args.rs b/src/args.rs index 232b8ed..28251ce 100644 --- a/src/args.rs +++ b/src/args.rs @@ -14,5 +14,7 @@ pub fn get_args() -> Args { delay: value_t!(matches.value_of("delay"), u64).unwrap_or(1), port: value_t!(matches.value_of("port"), u16).unwrap_or(8080), config_file: value_t!(matches.value_of("config"), String).unwrap_or_default(), + static_folder: value_t!(matches.value_of("static-folder"), String) + .unwrap_or_else(|_| "/var/lib/webtail-rs/static".to_string()), } } diff --git a/src/cli.yml b/src/cli.yml index 7d6eb83..a06198f 100644 --- a/src/cli.yml +++ b/src/cli.yml @@ -1,34 +1,41 @@ name: webtail-rs author: Eduard Tolosa settings: - - ArgRequiredElseHelp - - StrictUtf8 + - ArgRequiredElseHelp + - StrictUtf8 about: tail -f for your browser. args: - - file: - short: f - long: file - help: File to follow. - takes_value: true - multiple: false + - file: + short: f + long: file + help: File to follow. + takes_value: true + multiple: false - - delay: - short: d - long: delay - help: Time between reads. - takes_value: true - multiple: false + - delay: + short: d + long: delay + help: Time between reads. + takes_value: true + multiple: false - - port: - short: p - long: port - help: Port to use. - takes_value: true - multiple: false + - port: + short: p + long: port + help: Port to use. + takes_value: true + multiple: false - - config: - short: c - long: config - help: Config file to use. You can use the path:port syntax for viewing multiple files. - takes_value: true - multiple: false + - config: + short: c + long: config + help: Config file to use. You can use the path:port syntax for viewing multiple files. + takes_value: true + multiple: false + + - static-folder: + short: s + long: static-folder + help: Path to the folder which contains the static file 'index.html'. + takes_value: true + multiple: false diff --git a/src/main.rs b/src/main.rs index dc5aa09..a86ccbc 100644 --- a/src/main.rs +++ b/src/main.rs @@ -37,7 +37,10 @@ fn main() { .par_iter() .map(|(file, port)| { if Path::new(&file).exists() { - println!("\n=> Watching file {} in http://127.0.0.1:{}", file, port); + println!( + "\n=> Watching file \"{}\" in http://127.0.0.1:{}", + file, port + ); let error = rocket::custom( Config::build(Environment::Production) .log_level(LoggingLevel::Off) @@ -51,7 +54,7 @@ fn main() { delay: args.delay, }) .mount("/", routes![updates]) - .mount("/", StaticFiles::from("static")) + .mount("/", StaticFiles::from(args.static_folder.clone())) .launch(); eprintln!( "Launch failed for file {} in port {}! Error: {}", diff --git a/src/structs.rs b/src/structs.rs index 393e9f3..b985b8e 100644 --- a/src/structs.rs +++ b/src/structs.rs @@ -4,6 +4,7 @@ pub struct Args { pub delay: u64, pub port: u16, pub config_file: String, + pub static_folder: String, } pub struct File { diff --git a/src/worker.rs b/src/worker.rs index 12dde53..f8a8ff7 100644 --- a/src/worker.rs +++ b/src/worker.rs @@ -29,7 +29,7 @@ impl Read for File { self.data.clear(); - self.data += &format!("data: Watching file {}\ndata: \n", self.name); + self.data += &format!("data: Watching file \"{}\"\ndata: \n", self.name); for line in utils::return_bufreader(&self.name).lines() { self.data += &format!("data: {}\n", line.expect("Error"))