helm_schema_cli/cli/
emission_args.rs1use clap::{Args, ValueEnum};
2use helm_schema::generation::EmissionPolicyDelta;
3
4#[derive(Debug, Clone, Copy, PartialEq, Eq, ValueEnum)]
6pub enum PolicyToggle {
7 On,
9 Off,
11}
12
13impl From<PolicyToggle> for bool {
14 fn from(toggle: PolicyToggle) -> Self {
15 matches!(toggle, PolicyToggle::On)
16 }
17}
18
19#[derive(Args, Debug, Clone, Copy, Default)]
21pub struct EmissionArgs {
22 #[arg(long, value_enum, value_name = "STATE")]
24 pub root_anchored_conditionals: Option<PolicyToggle>,
25
26 #[arg(long, value_enum, value_name = "STATE")]
28 pub local_conditionals: Option<PolicyToggle>,
29
30 #[arg(long, value_enum, value_name = "STATE")]
32 pub terminal_clauses: Option<PolicyToggle>,
33
34 #[arg(long, value_enum, value_name = "STATE")]
36 pub kind_partitions: Option<PolicyToggle>,
37}
38
39impl EmissionArgs {
40 pub(crate) fn delta(self) -> EmissionPolicyDelta {
41 EmissionPolicyDelta::new(
42 self.root_anchored_conditionals.map(Into::into),
43 self.local_conditionals.map(Into::into),
44 self.terminal_clauses.map(Into::into),
45 self.kind_partitions.map(Into::into),
46 )
47 }
48}