From 403158ddda1d0cffbac73adcab20262b6ba5b6ad Mon Sep 17 00:00:00 2001 From: Magnus Hoff Date: Wed, 15 Nov 2017 15:06:18 +0100 Subject: [PATCH] Split entry point into main.rs and lib.rs. This might enable some integration tests --- src/lib.rs | 59 +++++++++++++++++++++++++++++++++++++++++++++++++ src/main.rs | 63 +++++++---------------------------------------------- 2 files changed, 67 insertions(+), 55 deletions(-) create mode 100644 src/lib.rs diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..bc7d884 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,59 @@ +#![recursion_limit="128"] // for diesel's infer_schema! + +#[macro_use] extern crate bart_derive; +#[macro_use] extern crate codegen; +#[macro_use] extern crate diesel_codegen; +#[macro_use] extern crate diesel; +#[macro_use] extern crate hyper; +#[macro_use] extern crate lazy_static; +#[macro_use] extern crate maplit; +#[macro_use] extern crate serde_derive; + +extern crate chrono; +extern crate diff; +extern crate futures_cpupool; +extern crate futures; +extern crate percent_encoding; +extern crate pulldown_cmark; +extern crate r2d2_diesel; +extern crate r2d2; +extern crate serde_json; +extern crate serde_urlencoded; +extern crate serde; +extern crate slug; +extern crate titlecase; + +use std::net::{IpAddr, SocketAddr}; + +mod assets; +mod db; +mod mimes; +mod models; +mod rendering; +mod resources; +mod schema; +mod site; +mod state; +mod web; +mod wiki_lookup; + +pub fn main(db_file: String, bind_host: IpAddr, bind_port: u16, trust_identity: bool) -> Result<(), Box> { + let db_pool = db::create_pool(db_file)?; + let cpu_pool = futures_cpupool::CpuPool::new_num_cpus(); + + let state = state::State::new(db_pool, cpu_pool); + let lookup = wiki_lookup::WikiLookup::new(state, trust_identity); + + let server = + hyper::server::Http::new() + .bind( + &SocketAddr::new(bind_host, bind_port), + move || Ok(site::Site::new(lookup.clone(), trust_identity)) + )?; + + println!("Listening on http://{}", server.local_addr().unwrap()); + + server.run()?; + + Ok(()) +} diff --git a/src/main.rs b/src/main.rs index ad30d02..7d04f33 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,42 +1,7 @@ -#![recursion_limit="128"] // for diesel's infer_schema! - -#[macro_use] extern crate bart_derive; -#[macro_use] extern crate codegen; -#[macro_use] extern crate diesel_codegen; -#[macro_use] extern crate diesel; -#[macro_use] extern crate hyper; -#[macro_use] extern crate lazy_static; -#[macro_use] extern crate maplit; -#[macro_use] extern crate serde_derive; - -extern crate chrono; extern crate clap; -extern crate diff; -extern crate futures_cpupool; -extern crate futures; -extern crate percent_encoding; -extern crate pulldown_cmark; -extern crate r2d2_diesel; -extern crate r2d2; -extern crate serde_json; -extern crate serde_urlencoded; -extern crate serde; -extern crate slug; -extern crate titlecase; +extern crate sausagewiki; -use std::net::{IpAddr, SocketAddr}; - -mod assets; -mod db; -mod mimes; -mod models; -mod rendering; -mod resources; -mod schema; -mod site; -mod state; -mod web; -mod wiki_lookup; +use std::net::IpAddr; const DATABASE: &str = "DATABASE"; const TRUST_IDENTITY: &str = "trust-identity"; @@ -91,24 +56,12 @@ fn core_main() -> Result<(), Box> { let trust_identity = args.is_present(TRUST_IDENTITY); - let db_pool = db::create_pool(db_file)?; - let cpu_pool = futures_cpupool::CpuPool::new_num_cpus(); - - let state = state::State::new(db_pool, cpu_pool); - let lookup = wiki_lookup::WikiLookup::new(state, trust_identity); - - let server = - hyper::server::Http::new() - .bind( - &SocketAddr::new(bind_host, bind_port), - move || Ok(site::Site::new(lookup.clone(), trust_identity)) - )?; - - println!("Listening on http://{}", server.local_addr().unwrap()); - - server.run()?; - - Ok(()) + sausagewiki::main( + db_file, + bind_host, + bind_port, + trust_identity, + ) } fn main() {