Update futriix-server/src/main.rs

This commit is contained in:
Григорий Сафронов 2025-07-01 19:42:24 +00:00
parent 0a4ef07891
commit 40255fce93

View File

@ -4,47 +4,18 @@ use server::*;
use std::fs; use std::fs;
use toml::Value; use toml::Value;
use simplelog::*; use simplelog::*;
use clap::Parser;
#[derive(Parser, Debug)]
#[command(author, version, about, long_about = None)]
struct Args {
/// Port to listen on
#[arg(short, long, default_value_t = 8080)]
port: u16,
/// Replication peer address
#[arg(long)]
replication_peer: Option<String>,
/// Config file path
#[arg(short, long, default_value = "futriix.config.toml")]
config: String,
}
#[tokio::main] #[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> { async fn main() -> Result<(), Box<dyn std::error::Error>> {
let args = Args::parse(); // Чтение конфигурации
let config_content = fs::read_to_string("futriix.config.toml")?;
// Read config let config: Value = toml::from_str(&config_content)?;
let config_content = fs::read_to_string(&args.config)?;
let mut config: Value = toml::from_str(&config_content)?;
// Override config with command line args
if let Some(peer) = args.replication_peer {
config["replication"]["enabled"] = Value::Boolean(true);
if let Some(peers) = config["replication"]["peer_nodes"].as_array_mut() {
peers.push(Value::String(peer));
} else {
config["replication"]["peer_nodes"] = Value::Array(vec![Value::String(peer)]);
}
}
let ip = config["server"]["ip"].as_str().unwrap_or("127.0.0.1"); let ip = config["server"]["ip"].as_str().unwrap_or("127.0.0.1");
let port = args.port; let port = config["server"]["port"].as_integer().unwrap_or(8080) as u16;
let log_path = config["server"]["log_path"].as_str().unwrap_or("futriix.log"); let log_path = config["server"]["log_path"].as_str().unwrap_or("futriix.log");
// Initialize logger // Инициализация логгера
let log_file = fs::File::create(log_path)?; let log_file = fs::File::create(log_path)?;
CombinedLogger::init(vec![ CombinedLogger::init(vec![
TermLogger::new( TermLogger::new(
@ -60,7 +31,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
), ),
])?; ])?;
// Start server // Запуск сервера
let server = FutriixServer::new(&config); let server = FutriixServer::new(&config);
let addr = format!("{}:{}", ip, port); let addr = format!("{}:{}", ip, port);
server.run(&addr).await?; server.run(&addr).await?;