use oopsie::prelude::*;
fn read_config(path: &str) -> Result<String, Welp> {
let raw = std::fs::read_to_string(path).welp()?;
Ok(raw)
}
fn parse_port(value: &str) -> Result<u16, Welp> {
value
.trim()
.parse::<u16>()
.with_welp_context(|err| format!("invalid port {value:?}: {err}"))
}
fn validate(port: u16) -> Result<(), Welp> {
if port < 1024 {
return Err(Welp::new(format!("port {port} is privileged")));
}
Ok(())
}
fn run() -> Result<(), Welp> {
let raw = read_config("/nonexistent/app.toml")?;
let port = parse_port(&raw)?;
validate(port)?;
Ok(())
}
fn main() -> Report<Welp> {
Report::run(run)
}