mirror of
https://github.com/edera-dev/krata.git
synced 2025-08-02 21:00:55 +00:00
38 lines
1.0 KiB
Rust
38 lines
1.0 KiB
Rust
use anyhow::Result;
|
|
use clap::Parser;
|
|
use env_logger::Env;
|
|
use krata::dial::ControlDialAddress;
|
|
use kratad::Daemon;
|
|
use kratart::Runtime;
|
|
use std::{
|
|
str::FromStr,
|
|
sync::{atomic::AtomicBool, Arc},
|
|
};
|
|
|
|
#[derive(Parser)]
|
|
struct DaemonCommand {
|
|
#[arg(short, long, default_value = "unix:///var/lib/krata/daemon.socket")]
|
|
listen: String,
|
|
#[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();
|
|
mask_sighup()?;
|
|
|
|
let args = DaemonCommand::parse();
|
|
let addr = ControlDialAddress::from_str(&args.listen)?;
|
|
let runtime = Runtime::new(args.store.clone()).await?;
|
|
let mut daemon = Daemon::new(args.store.clone(), runtime).await?;
|
|
daemon.listen(addr).await?;
|
|
Ok(())
|
|
}
|
|
|
|
fn mask_sighup() -> Result<()> {
|
|
let flag = Arc::new(AtomicBool::new(false));
|
|
signal_hook::flag::register(signal_hook::consts::SIGHUP, flag)?;
|
|
Ok(())
|
|
}
|