From acfa0cc83af33c2a0b31091e077fb3356808ca57 Mon Sep 17 00:00:00 2001 From: Samuel Lorch Date: Thu, 26 Oct 2023 00:27:28 +0200 Subject: [PATCH] Add Default config generation --- src/config_manager.rs | 13 +++++++++++++ src/main.rs | 11 +++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/config_manager.rs b/src/config_manager.rs index e17ec81..cee98ee 100644 --- a/src/config_manager.rs +++ b/src/config_manager.rs @@ -109,3 +109,16 @@ fn write_config_to_file(path: &str, conf: Config) -> Result<(), ConfigError> { fs::write(path, data)?; Ok(()) } + +pub fn generate_default_config(path: &str) -> Result<(), ConfigError> { + let mut conf = Config::default(); + conf.system.users.insert( + "admin".to_string(), + crate::definitions::system::User { + comment: "Default Admin".to_string(), + hash: "".to_string(), + salt: "".to_string(), + }, + ); + write_config_to_file(path, conf) +} diff --git a/src/main.rs b/src/main.rs index 24f80cb..893b3e6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -8,6 +8,7 @@ use std::{ use axum::{middleware, Router}; use config_manager::ConfigManager; use state::AppState; +use std::env; use tower_cookies::CookieManagerLayer; use tracing::info; use tracing_subscriber; @@ -23,6 +24,16 @@ async fn main() { tracing_subscriber::fmt::init(); info!("Starting..."); + let args: Vec = env::args().collect(); + + if args.len() > 1 && args[1] == "generate-default" { + info!("Generating default config..."); + config_manager::generate_default_config(config_manager::CURRENT_CONFIG_PATH).unwrap(); + config_manager::generate_default_config(config_manager::PENDING_CONFIG_PATH).unwrap(); + info!("Done! Exiting..."); + return; + } + // TODO Check Config Manager Setup Error let config_manager = ConfigManager::new().unwrap();