extern crate linoquotes_gamma; #[macro_use] extern crate log; extern crate env_logger; extern crate clap; extern crate rusqlite; use clap::{App, Arg}; fn main() { env_logger::init().unwrap(); let matches = App::new("linoquotes") .version("3.0.0") .author("Kjetil Ørbekk") .about( "Quote db for #linux.no. Run with \ RUST_LOG=linoquotes_gamma=info to enable logging.", ) .arg( Arg::with_name("port") .short("p") .long("port") .takes_value(true) .help("Port to serve on"), ) .arg( Arg::with_name("db_file") .long("db_file") .takes_value(true) .help( "Path to sqlite database (use in-memory test \ database if unset)", ), ) .arg(Arg::with_name("use_test_db").long("use_test_db").help( "Use in-memory test database", )) .get_matches(); let port = matches .value_of("port") .unwrap_or("8080") .parse::() .expect("port number"); let use_test_db = matches.is_present("use_test_db"); let db_file = matches.value_of("db_file"); let state = linoquotes_gamma::server::State { connection: match db_file { None => { assert!(use_test_db, "--db_file or --use_test_db must be set"); rusqlite::Connection::open_in_memory().unwrap() } Some(ref path) => rusqlite::Connection::open(path).unwrap(), }, }; linoquotes_gamma::data::init(&state.connection).unwrap(); if use_test_db { linoquotes_gamma::data::populate_test_db(&state.connection).unwrap(); } // for i in 1..1000 { // linoquotes_gamma::data::new_quote( // &state.connection, // "2017-07-10", // "orbekk", // &format!("another test {}", i), // ).unwrap(); // let qid = state.connection.last_insert_rowid(); // info!("Last inserted quote: {}", qid); // linoquotes_gamma::data::approve_quote(&state.connection, qid).unwrap(); // } info!("Starting..."); linoquotes_gamma::server::serve(state, port); }