1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
use std::net::SocketAddr; use std::process::Command; mod file_host; pub struct Config { pub addr: SocketAddr, } impl Config { pub fn run(&self) -> Result<(), String> { self.build_docs()?; self.host_docs() } fn build_docs(&self) -> Result<(), String> { println!("Building docs..."); let child = Command::new("cargo") .args(&["doc"]) .status() .expect("failed to spawn `cargo doc`"); match child.code() { Some(0) => Ok(()), Some(exit_code) => Err(format!("`cargo doc` exited with status code {}", exit_code)), None => Err(String::from("`cargo doc` was killed by a signal")), } } fn host_docs(&self) -> Result<(), String> { file_host::serve(&self.addr) } }