48 lines
1.2 KiB
Rust
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(())
|
|
}
|