use std::{ error::Error, path::PathBuf, }; use structopt::StructOpt; #[derive (Debug, StructOpt)] struct Opt { #[structopt (long)] file_server_root: Option , } #[tokio::main] async fn main () -> Result <(), Box > { use std::io::Read; let config_file = { let config_file_path = "config/ptth_server.toml"; let mut f = std::fs::File::open (config_file_path).unwrap_or_else (|_| panic! ("Can't open {:?}", config_file_path)); let mut buffer = vec! [0u8; 4096]; let bytes_read = f.read (&mut buffer).unwrap_or_else (|_| panic! ("Can't read {:?}", config_file_path)); buffer.truncate (bytes_read); let config_s = String::from_utf8 (buffer).unwrap_or_else (|_| panic! ("Can't parse {:?} as UTF-8", config_file_path)); toml::from_str (&config_s).unwrap_or_else (|_| panic! ("Can't parse {:?} as TOML", config_file_path)) }; ptth::server::main (config_file, None).await }