use clap::{Args, ValueEnum};
use helm_schema::generation::EmissionPolicyDelta;
#[derive(Debug, Clone, Copy, PartialEq, Eq, ValueEnum)]
pub enum PolicyToggle {
On,
Off,
}
impl From<PolicyToggle> for bool {
fn from(toggle: PolicyToggle) -> Self {
matches!(toggle, PolicyToggle::On)
}
}
#[derive(Args, Debug, Clone, Copy, Default)]
pub struct EmissionArgs {
#[arg(long, value_enum, value_name = "STATE")]
pub root_anchored_conditionals: Option<PolicyToggle>,
#[arg(long, value_enum, value_name = "STATE")]
pub local_conditionals: Option<PolicyToggle>,
#[arg(long, value_enum, value_name = "STATE")]
pub terminal_clauses: Option<PolicyToggle>,
#[arg(long, value_enum, value_name = "STATE")]
pub kind_partitions: Option<PolicyToggle>,
}
impl EmissionArgs {
pub(crate) fn delta(self) -> EmissionPolicyDelta {
EmissionPolicyDelta::new(
self.root_anchored_conditionals.map(Into::into),
self.local_conditionals.map(Into::into),
self.terminal_clauses.map(Into::into),
self.kind_partitions.map(Into::into),
)
}
}