Remove redundant `Options` type
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
This commit is contained in:
parent
2f6cf9c7a5
commit
617e0c1877
|
|
@ -1,47 +1,7 @@
|
||||||
use std::{net, process};
|
use std::process;
|
||||||
|
|
||||||
use tracing::dispatcher::Dispatch;
|
|
||||||
|
|
||||||
use radicle_httpd as httpd;
|
use radicle_httpd as httpd;
|
||||||
|
use tracing::dispatcher::Dispatch;
|
||||||
#[derive(Debug)]
|
|
||||||
pub struct Options {
|
|
||||||
pub listen: net::SocketAddr,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Options {
|
|
||||||
fn from_env() -> Result<Self, lexopt::Error> {
|
|
||||||
use lexopt::prelude::*;
|
|
||||||
|
|
||||||
let mut parser = lexopt::Parser::from_env();
|
|
||||||
let mut listen = None;
|
|
||||||
|
|
||||||
while let Some(arg) = parser.next()? {
|
|
||||||
match arg {
|
|
||||||
Long("listen") => {
|
|
||||||
let addr = parser.value()?.parse()?;
|
|
||||||
listen = Some(addr);
|
|
||||||
}
|
|
||||||
Long("help") => {
|
|
||||||
println!("usage: radicle-httpd [--listen <addr>]");
|
|
||||||
process::exit(0);
|
|
||||||
}
|
|
||||||
_ => return Err(arg.unexpected()),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Ok(Self {
|
|
||||||
listen: listen.unwrap_or_else(|| ([0, 0, 0, 0], 8080).into()),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl From<Options> for httpd::Options {
|
|
||||||
fn from(other: Options) -> Self {
|
|
||||||
Self {
|
|
||||||
listen: other.listen,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(feature = "logfmt")]
|
#[cfg(feature = "logfmt")]
|
||||||
mod logger {
|
mod logger {
|
||||||
|
|
@ -64,14 +24,14 @@ mod logger {
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main() -> anyhow::Result<()> {
|
async fn main() -> anyhow::Result<()> {
|
||||||
let options = Options::from_env()?;
|
let options = parse_options()?;
|
||||||
|
|
||||||
tracing::dispatcher::set_global_default(Dispatch::new(logger::subscriber()))
|
tracing::dispatcher::set_global_default(Dispatch::new(logger::subscriber()))
|
||||||
.expect("Global logger hasn't already been set");
|
.expect("Global logger hasn't already been set");
|
||||||
|
|
||||||
tracing::info!("version {}-{}", env!("CARGO_PKG_VERSION"), env!("GIT_HEAD"));
|
tracing::info!("version {}-{}", env!("CARGO_PKG_VERSION"), env!("GIT_HEAD"));
|
||||||
|
|
||||||
match httpd::run(options.into()).await {
|
match httpd::run(options).await {
|
||||||
Ok(()) => {}
|
Ok(()) => {}
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
tracing::error!("Fatal: {:#}", err);
|
tracing::error!("Fatal: {:#}", err);
|
||||||
|
|
@ -80,3 +40,28 @@ async fn main() -> anyhow::Result<()> {
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Parse command-line arguments into HTTP options.
|
||||||
|
fn parse_options() -> Result<httpd::Options, lexopt::Error> {
|
||||||
|
use lexopt::prelude::*;
|
||||||
|
|
||||||
|
let mut parser = lexopt::Parser::from_env();
|
||||||
|
let mut listen = None;
|
||||||
|
|
||||||
|
while let Some(arg) = parser.next()? {
|
||||||
|
match arg {
|
||||||
|
Long("listen") => {
|
||||||
|
let addr = parser.value()?.parse()?;
|
||||||
|
listen = Some(addr);
|
||||||
|
}
|
||||||
|
Long("help") => {
|
||||||
|
println!("usage: radicle-httpd [--listen <addr>]");
|
||||||
|
process::exit(0);
|
||||||
|
}
|
||||||
|
_ => return Err(arg.unexpected()),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Ok(httpd::Options {
|
||||||
|
listen: listen.unwrap_or_else(|| ([0, 0, 0, 0], 8080).into()),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue