mod config; use std::path::PathBuf; use tracing::info; use crate::filesystem::FileSystem; pub(crate) 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(crate) fn start(fs: FileSystem) { let Ok(_) = init_logging() else { eprintln!("Failed to initialize logging."); return; }; info!("Starting Server..."); let _config = config::Config::load(&fs); // 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(()) }