use crate::model::ClauseKind;
use clap::{Subcommand, ValueEnum};
#[derive(Subcommand, Clone, Debug)]
pub(crate) enum NewTarget {
Rfc {
title: String,
#[arg(long)]
id: Option<String>,
},
Clause {
clause_id: String,
title: String,
#[arg(short = 's', long, default_value = "Specification")]
section: String,
#[arg(short = 'k', long, value_enum, default_value = "normative")]
kind: ClauseKind,
},
Adr {
title: String,
},
Work {
title: String,
#[arg(long)]
active: bool,
},
}
#[derive(ValueEnum, Clone, Copy, Debug, PartialEq, Eq)]
pub(crate) enum ListTarget {
Rfc,
Clause,
Adr,
Work,
Guard,
Conformance,
}
#[derive(ValueEnum, Clone, Copy, Debug, Default, PartialEq, Eq)]
pub enum OutputFormat {
#[default]
Table,
Json,
Plain,
}
#[derive(ValueEnum, Clone, Copy, Debug, PartialEq, Eq)]
pub enum ListOutputFormat {
Table,
Json,
Yaml,
}
#[derive(ValueEnum, Clone, Copy, Debug, PartialEq, Eq)]
pub enum GetOutputFormat {
Table,
Json,
Yaml,
Toml,
Plain,
}
#[derive(ValueEnum, Clone, Copy, Debug, PartialEq, Eq)]
pub enum TraceOutputFormat {
Table,
Json,
}
#[derive(ValueEnum, Clone, Copy, Debug, Default, PartialEq, Eq)]
pub enum ShowOutputFormat {
#[default]
Table,
Json,
Yaml,
Toml,
Plain,
}
impl ShowOutputFormat {
pub(crate) fn is_structured(self) -> bool {
matches!(self, Self::Json | Self::Yaml | Self::Toml)
}
}
#[derive(ValueEnum, Clone, Copy, Debug)]
pub(crate) enum RenderTarget {
Rfc,
Adr,
Work,
Changelog,
All,
}
#[derive(ValueEnum, Clone, Copy, Debug)]
pub(crate) enum FinalizeStatus {
Normative,
}
#[derive(Clone, Debug, Default, ValueEnum)]
pub enum SkillFormat {
#[default]
Claude,
Codex,
}