Make usage output friendlier

This commit is contained in:
Matt Brubeck 2020-06-20 11:16:41 -07:00
parent 9b260dfdd2
commit b25da60e10

View file

@ -1,22 +1,16 @@
use { use async_std::{io::prelude::*, net::{TcpListener, TcpStream}, stream::StreamExt, task};
async_std::{ use async_tls::TlsAcceptor;
io::prelude::*, use once_cell::sync::Lazy;
net::{TcpListener, TcpStream}, use rustls::{ServerConfig, NoClientAuth, internal::pemfile::{certs, pkcs8_private_keys}};
stream::StreamExt, use std::{error::Error, ffi::OsStr, fs::File, io::BufReader, marker::Unpin, sync::Arc};
task::{block_on, spawn}, use url::Url;
},
async_tls::TlsAcceptor,
once_cell::sync::Lazy,
std::{error::Error, ffi::OsStr, fs::File, io::BufReader, marker::Unpin, sync::Arc},
url::Url,
};
fn main() -> Result { fn main() -> Result {
block_on(async { task::block_on(async {
let listener = TcpListener::bind(&ARGS.sock_addr).await?; let listener = TcpListener::bind(&ARGS.sock_addr).await?;
let mut incoming = listener.incoming(); let mut incoming = listener.incoming();
while let Some(Ok(stream)) = incoming.next().await { while let Some(Ok(stream)) = incoming.next().await {
spawn(async { task::spawn(async {
if let Err(e) = handle_request(stream).await { if let Err(e) = handle_request(stream).await {
eprintln!("Error: {:?}", e); eprintln!("Error: {:?}", e);
} }
@ -28,8 +22,10 @@ fn main() -> Result {
type Result<T=()> = std::result::Result<T, Box<dyn Error + Send + Sync>>; type Result<T=()> = std::result::Result<T, Box<dyn Error + Send + Sync>>;
static ARGS: Lazy<Args> = static ARGS: Lazy<Args> = Lazy::new(|| args().unwrap_or_else(|| {
Lazy::new(|| args().expect("usage: agate <addr:port> <dir> <cert> <key>")); eprintln!("usage: agate <addr:port> <dir> <cert> <key>");
std::process::exit(1);
}));
struct Args { struct Args {
sock_addr: String, sock_addr: String,
@ -72,8 +68,6 @@ async fn handle_request(stream: TcpStream) -> Result {
/// TLS configuration. /// TLS configuration.
fn acceptor() -> Result<TlsAcceptor> { fn acceptor() -> Result<TlsAcceptor> {
use rustls::{ServerConfig, NoClientAuth, internal::pemfile::{certs, pkcs8_private_keys}};
let cert_file = File::open(&ARGS.cert_file)?; let cert_file = File::open(&ARGS.cert_file)?;
let certs = certs(&mut BufReader::new(cert_file)).or(Err("bad cert"))?; let certs = certs(&mut BufReader::new(cert_file)).or(Err("bad cert"))?;