use clap::{Args, ValueEnum};
const HELP_HEADING: &str = "Paladin options";
#[derive(Args, Clone, PartialEq, Eq, PartialOrd, Ord, Debug, Default)]
pub struct Config {
#[arg(long, short, help_heading = HELP_HEADING, value_enum, default_value_t = Serializer::Postcard)]
pub serializer: Serializer,
#[arg(long, short, help_heading = HELP_HEADING, value_enum, default_value_t = Runtime::Amqp)]
pub runtime: Runtime,
#[arg(long, short, help_heading = HELP_HEADING)]
pub num_workers: Option<usize>,
#[arg(long, help_heading = HELP_HEADING, env = "AMQP_URI", required_if_eq("runtime", "amqp"))]
pub amqp_uri: Option<String>,
#[arg(long, help_heading = HELP_HEADING)]
pub task_bus_routing_key: Option<String>,
}
#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Debug, ValueEnum, Default)]
pub enum Serializer {
#[default]
Postcard,
Cbor,
}
#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Debug, ValueEnum, Default)]
pub enum Runtime {
#[default]
Amqp,
InMemory,
}