mirror of
https://github.com/edera-dev/krata.git
synced 2025-08-02 12:50:54 +00:00
28 lines
808 B
Rust
28 lines
808 B
Rust
|
use anyhow::{anyhow, Result};
|
||
|
use clap::Parser;
|
||
|
use env_logger::Env;
|
||
|
use kratad::{runtime::Runtime, Daemon};
|
||
|
use tokio_listener::ListenerAddressLFlag;
|
||
|
|
||
|
#[derive(Parser)]
|
||
|
struct Args {
|
||
|
#[clap(flatten)]
|
||
|
listener: ListenerAddressLFlag,
|
||
|
#[arg(short, long, default_value = "/var/lib/krata")]
|
||
|
store: String,
|
||
|
}
|
||
|
|
||
|
#[tokio::main(flavor = "multi_thread", worker_threads = 10)]
|
||
|
async fn main() -> Result<()> {
|
||
|
env_logger::Builder::from_env(Env::default().default_filter_or("warn")).init();
|
||
|
|
||
|
let args = Args::parse();
|
||
|
let Some(listener) = args.listener.bind().await else {
|
||
|
return Err(anyhow!("no listener specified"));
|
||
|
};
|
||
|
let runtime = Runtime::new(args.store.clone()).await?;
|
||
|
let mut daemon = Daemon::new(runtime).await?;
|
||
|
daemon.listen(listener?).await?;
|
||
|
Ok(())
|
||
|
}
|