Support for port arg

This commit is contained in:
Thomas Forgione 2026-03-07 17:33:23 +01:00
parent 2db55162a5
commit 15d629bd5c

View File

@ -27,6 +27,7 @@ fn main() {
let mut watching = None; let mut watching = None;
let mut command = None; let mut command = None;
let mut ignore = vec![]; let mut ignore = vec![];
let mut port = None;
let exit_code = loop { let exit_code = loop {
let arg = args.next(); let arg = args.next();
@ -37,50 +38,69 @@ fn main() {
let watch_is_some = watching.is_some(); let watch_is_some = watching.is_some();
let command_is_some = command.is_some(); let command_is_some = command.is_some();
let port_is_some = port.is_some();
match (arg, next, watch_is_some, command_is_some) { match (arg, next, watch_is_some, command_is_some, port_is_some) {
(None, _, _, _) => { (None, _, _, _, _) => {
break None; break None;
} }
(Some("-w") | Some("--watch"), Some(value), false, _) => { (Some("-w") | Some("--watch"), Some(value), false, _, _) => {
watching = Some(value.to_string()); watching = Some(value.to_string());
} }
(Some("-w") | Some("--watch"), Some(_), true, _) => { (Some("-w") | Some("--watch"), Some(_), true, _, _) => {
error!("argument watch present multiple times"); error!("argument watch present multiple times");
break Some(1); break Some(1);
} }
(Some("-w") | Some("--watch"), None, _, _) => { (Some("-w") | Some("--watch"), None, _, _, _) => {
error!("argument watch without value"); error!("argument watch without value");
break Some(1); break Some(1);
} }
(Some("-i") | Some("--ignore"), Some(value), _, _) => { (Some("-i") | Some("--ignore"), Some(value), _, _, _) => {
ignore.push(value.to_string()); ignore.push(value.to_string());
} }
(Some("-i") | Some("--ignore"), None, _, _) => { (Some("-i") | Some("--ignore"), None, _, _, _) => {
error!("argument ignore without value"); error!("argument ignore without value");
break Some(1); break Some(1);
} }
(Some("-c") | Some("--command"), Some(value), _, false) => { (Some("-c") | Some("--command"), Some(value), _, false, _) => {
command = Some(value.to_string()); command = Some(value.to_string());
} }
(Some("-c") | Some("--command"), Some(_), _, true) => { (Some("-c") | Some("--command"), Some(_), _, true, _) => {
error!("argument command present multiple times"); error!("argument command present multiple times");
break Some(1); break Some(1);
} }
(Some("-c") | Some("--command"), None, _, _) => { (Some("-c") | Some("--command"), None, _, _, _) => {
error!("argument command without value"); error!("argument command without value");
break Some(1); break Some(1);
} }
(Some(value), _, _, _) => { (Some("-p") | Some("--port"), Some(value), _, _, false) => match value.parse::<u16>() {
Ok(v) => port = Some(v),
Err(e) => {
error!("couldn't parse port \"{}\", : {}", value, e);
break Some(1);
}
},
(Some("-p") | Some("--port"), Some(_), _, _, true) => {
error!("argument port present multiple times");
break Some(1);
}
(Some("-p") | Some("--port"), None, _, _, _) => {
error!("argument port without value");
break Some(1);
}
(Some(value), _, _, _, _) => {
error!("argument \"{}\" unknown", value); error!("argument \"{}\" unknown", value);
break Some(1); break Some(1);
} }
@ -89,6 +109,8 @@ fn main() {
args.next(); args.next();
}; };
let port = port.unwrap_or(1500);
if let Some(exit_code) = exit_code { if let Some(exit_code) = exit_code {
exit(exit_code); exit(exit_code);
} }
@ -106,7 +128,7 @@ fn main() {
let clone = tasks.clone(); let clone = tasks.clone();
thread::spawn(move || { thread::spawn(move || {
let addr = ([127, 0, 0, 1], 1500).into(); let addr = ([127, 0, 0, 1], port).into();
let server = Server::bind(&addr) let server = Server::bind(&addr)
.serve(move || { .serve(move || {