mirror of
https://github.com/edera-dev/krata.git
synced 2025-08-03 21:21:32 +00:00
37 lines
919 B
Rust
37 lines
919 B
Rust
use anyhow::Result;
|
|
use clap::{CommandFactory, Parser};
|
|
use krata::dial::ControlDialAddress;
|
|
use std::str::FromStr;
|
|
|
|
use crate::Daemon;
|
|
|
|
#[derive(Parser)]
|
|
#[command(version, about = "krata isolation engine daemon")]
|
|
pub struct DaemonCommand {
|
|
#[arg(
|
|
short,
|
|
long,
|
|
default_value = "unix:///var/lib/krata/daemon.socket",
|
|
help = "Listen address"
|
|
)]
|
|
listen: String,
|
|
#[arg(short, long, default_value = "/var/lib/krata", help = "Storage path")]
|
|
store: String,
|
|
}
|
|
|
|
impl DaemonCommand {
|
|
pub async fn run(self) -> Result<()> {
|
|
let addr = ControlDialAddress::from_str(&self.listen)?;
|
|
let mut daemon = Daemon::new(self.store.clone()).await?;
|
|
daemon.listen(addr).await?;
|
|
Ok(())
|
|
}
|
|
|
|
pub fn version() -> String {
|
|
DaemonCommand::command()
|
|
.get_version()
|
|
.unwrap_or("unknown")
|
|
.to_string()
|
|
}
|
|
}
|