mod app;
#[tokio::main]
async fn main() {
let args: Vec<String> = std::env::args().skip(1).collect();
if args.first().map(String::as_str) == Some("hash-password") {
match args.get(1) {
Some(password) => println!("{}", app::hash_password(password)),
None => eprintln!("usage: blog hash-password <password>"),
}
return;
}
let port = std::env::var("PORT").unwrap_or_else(|_| "3000".into());
let config = match app::Config::from_env(&port) {
Ok(config) => config,
Err(message) => {
eprintln!("configuration error: {message}");
std::process::exit(2);
}
};
if config.dev {
eprintln!("DEV mode: admin password is \"dev-password\", cookies are not Secure");
}
app::build(config)
.run(&format!("0.0.0.0:{port}"))
.await
.unwrap();
}