diff --git a/src/main.rs b/src/main.rs index 7332b60..33b1e34 100644 --- a/src/main.rs +++ b/src/main.rs @@ -6,7 +6,7 @@ //! //! Go to [config] module -use std::{fs::File, path::Path}; +use std::{fs::File, io::Write, path::Path}; use config::Config; use tracing::{info, warn}; @@ -23,11 +23,28 @@ mod server; pub const DATABASE_FILE: &str = "homedisk.db"; /// Default configuration file. pub const CONFIG_FILE: &str = "config.toml"; +/// Default configuration file content. +pub static DEFAULT_CONFIG_CONTENT: &'static [u8] = include_bytes!("../config.toml"); #[tokio::main] async fn main() { logger::init(); + // if configuration file doesn't exist, create it + if !Path::new(CONFIG_FILE).exists() { + warn!("Configuration file doesn't exists."); + + let mut file = + File::create(CONFIG_FILE).expect("notrace - Failed to create configuration file"); + + file.write_all(DEFAULT_CONFIG_CONTENT) + .expect("notrace - Failed to write default configuration to config file"); + + info!("Created default configuration file."); + + std::process::exit(0); + } + let config = Config::parse(CONFIG_FILE).expect("notrace - Failed to parse configuration file"); // open database connection