use std::net::SocketAddr;
use std::num::{NonZeroU64, NonZeroUsize};
use std::path::PathBuf;
use aion_server::config::CliOverrides;
use clap::Args;
#[derive(Args, Clone, Debug)]
pub struct ServerArgs {
#[arg(long)]
config: Option<PathBuf>,
#[arg(long)]
listen_address: Option<SocketAddr>,
#[arg(long)]
store_url: Option<String>,
#[arg(long)]
scheduler_threads: Option<NonZeroUsize>,
#[arg(long = "drain-timeout")]
drain_timeout_seconds: Option<NonZeroU64>,
#[arg(long = "workflow-package")]
workflow_packages: Vec<PathBuf>,
}
impl From<ServerArgs> for CliOverrides {
fn from(args: ServerArgs) -> Self {
Self {
config_path: args.config,
listen_address: args.listen_address,
store_url: args.store_url,
scheduler_threads: args.scheduler_threads.map(NonZeroUsize::get),
drain_timeout_seconds: args.drain_timeout_seconds.map(NonZeroU64::get),
workflow_packages: args.workflow_packages,
}
}
}