48 lines
1.2 KiB
Rust

pub(crate) mod consts;
pub(crate) mod server;
pub(crate) mod worker;
use std::{net::ToSocketAddrs, str::FromStr};
use clap::Parser;
use libvanity::{
vanity::vanity_service_server::VanityServiceServer, worker::worker_server::WorkerServer,
};
pub use libvanity;
#[derive(Parser)]
struct Args {
#[clap(short, long, default_value = "127.0.0.1:8877")]
bind_address: String,
#[clap(short, long, default_value = "redis://127.0.0.1:6379")]
redis_address: String,
#[clap(short, long, default_value = "INFO")]
log_level: String,
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let args = Args::parse();
let level = tracing::Level::from_str(&args.log_level)?;
tracing_subscriber::FmtSubscriber::builder()
.with_max_level(level)
.init();
let redis = redis::Client::open(args.redis_address)?;
let vanity_server = server::VanityService::new(redis.clone());
let worker_server = worker::WorkerService::new(redis.clone());
tonic::transport::Server::builder()
.add_service(VanityServiceServer::new(vanity_server))
.add_service(WorkerServer::new(worker_server))
.serve(args.bind_address.to_socket_addrs()?.next().unwrap())
.await?;
Ok(())
}