agate

Simple gemini server for static files
git clone https://github.com/mbrubeck/agate.git
Log | Files | Refs | README

commit b25da60e10a8780d2559cd3ccc2348734738aee1
parent 9b260dfdd2fba8c0d7d3af0a2ebdf7fe1a90dad8
Author: Matt Brubeck <mbrubeck@limpet.net>
Date:   Sat, 20 Jun 2020 11:16:41 -0700

Make usage output friendlier

Diffstat:
Msrc/main.rs | 30++++++++++++------------------
1 file changed, 12 insertions(+), 18 deletions(-)

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