diff --git a/src/main.rs b/src/main.rs index ee78500..436c072 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,4 @@ use phd; -use std::net::SocketAddr; use std::process; const DEFAULT_BIND: &str = "[::]:7070"; @@ -10,7 +9,7 @@ fn main() { let args = std::env::args().skip(1).collect::>(); let mut args = args.iter(); let mut root = "."; - let mut bind: SocketAddr = DEFAULT_BIND.parse().unwrap(); + let mut addr = DEFAULT_BIND; let mut host = DEFAULT_HOST; let mut port = DEFAULT_PORT; let mut render = ""; @@ -27,14 +26,8 @@ fn main() { } } "--bind" | "-b" | "-bind" => { - if let Some(b) = args.next() { - bind = b - .parse() - .map_err(|_| { - eprintln!("bad socket bind: {}", b); - process::exit(1) - }) - .unwrap(); + if let Some(a) = args.next() { + addr = a } } "--port" | "-p" | "-port" => { @@ -71,6 +64,13 @@ fn main() { } } + // If port was given and socket wasn't, bind to that port. + let bind = if port != DEFAULT_PORT && addr == DEFAULT_BIND { + format!("[::]:{}", port).parse().unwrap() + } else { + addr.parse().unwrap() + }; + if !render.is_empty() { return match phd::server::render(host, port, root, &render) { Ok(out) => print!("{}", out),