use ipfrs_interface::{Gateway, GatewayConfig};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
tracing_subscriber::fmt().init();
let args: Vec<String> = std::env::args().collect();
let mode = args.get(1).map(|s| s.as_str()).unwrap_or("dev");
let config = match mode {
"prod" | "production" => {
println!("๐ Starting in PRODUCTION mode");
GatewayConfig::production()
}
"test" | "testing" => {
println!("๐งช Starting in TESTING mode");
GatewayConfig::testing()
}
_ => {
println!("๐ง Starting in DEVELOPMENT mode");
GatewayConfig::development()
}
};
config.validate()?;
println!("\n๐ Configuration:");
println!(" Listen: {}", config.listen_addr);
println!(" Storage: {}", config.storage_config.path.display());
println!(
" Cache: {}MB",
config.storage_config.cache_size / (1024 * 1024)
);
println!("\n");
let gateway = Gateway::new(config)?.with_graphql();
gateway.start().await?;
Ok(())
}