mod config; use std::path::PathBuf; use tracing::{error, info}; use crate::filesystem::FileSystem; pub fn init(fs: FileSystem) { let file_name = "git-next-server.toml"; let path = PathBuf::from(file_name); if fs.file_exists(&path) { eprintln!( "The configuration file already exists at {} - not overwritting it.", file_name ); } else { match fs.write_file(file_name, include_str!("../../server-default.toml")) { Ok(_) => println!("Created a default configuration file at {}", file_name), Err(e) => { eprintln!("Failed to write to the configuration file: {}", e) } } } } pub fn start(fs: FileSystem) { let Ok(_) = init_logging() else { eprintln!("Failed to initialize logging."); return; }; info!("Starting Server..."); let config = match config::Config::load(&fs) { Ok(config) => config, Err(err) => { error!("Failed to load config file. Error: {}", err); return; } }; info!("Config loaded"); // todo!() } pub fn init_logging() -> Result<(), tracing::subscriber::SetGlobalDefaultError> { use tracing_subscriber::prelude::*; let console_layer = console_subscriber::ConsoleLayer::builder().spawn(); let subscriber = tracing_subscriber::fmt::layer() // NOTE: set RUSTLOG in ${root}/.cargo/config .with_target(false) .with_file(true) .with_line_number(true); tracing_subscriber::registry() .with(console_layer) .with(subscriber) .init(); Ok(()) }