use crate::output::OutputFormat;
use camino::Utf8PathBuf;
use clap::{Args, Subcommand};
#[derive(Args)]
pub struct RequirementTarget {
#[arg(long, default_value = ".")]
pub repo: Utf8PathBuf,
#[arg(long)]
pub scope: String,
#[arg(long)]
pub requirement_id: String,
#[arg(long)]
pub target_id: String,
#[arg(long, value_enum, default_value_t = OutputFormat::Table)]
pub format: OutputFormat,
}
#[derive(Args)]
pub struct RequirementOnly {
#[arg(long, default_value = ".")]
pub repo: Utf8PathBuf,
#[arg(long)]
pub scope: String,
#[arg(long)]
pub requirement_id: String,
#[arg(long, value_enum, default_value_t = OutputFormat::Table)]
pub format: OutputFormat,
}
#[derive(Args)]
pub struct RuleTarget {
#[arg(long, default_value = ".")]
pub repo: Utf8PathBuf,
#[arg(long)]
pub scope: String,
#[arg(long)]
pub rule_id: String,
#[arg(long)]
pub target_id: String,
#[arg(long, value_enum, default_value_t = OutputFormat::Table)]
pub format: OutputFormat,
}
#[derive(Args)]
pub struct ResolutionTarget {
#[arg(long, default_value = ".")]
pub repo: Utf8PathBuf,
#[arg(long)]
pub scope: String,
#[arg(long)]
pub resolution_id: String,
#[arg(long)]
pub target_id: String,
#[arg(long, value_enum, default_value_t = OutputFormat::Table)]
pub format: OutputFormat,
}
#[derive(Args)]
pub struct SourceTarget {
#[arg(long, default_value = ".")]
pub repo: Utf8PathBuf,
#[arg(long)]
pub scope: String,
#[arg(long)]
pub source_id: String,
#[arg(long)]
pub target_id: String,
#[arg(long, value_enum, default_value_t = OutputFormat::Table)]
pub format: OutputFormat,
}
#[derive(Args)]
pub struct QuestionTarget {
#[arg(long, default_value = ".")]
pub repo: Utf8PathBuf,
#[arg(long)]
pub scope: String,
#[arg(long)]
pub id: String,
#[arg(long)]
pub target_id: String,
#[arg(long, value_enum, default_value_t = OutputFormat::Table)]
pub format: OutputFormat,
}
#[derive(Args)]
pub struct QuestionOnly {
#[arg(long, default_value = ".")]
pub repo: Utf8PathBuf,
#[arg(long)]
pub scope: String,
#[arg(long)]
pub id: String,
#[arg(long, value_enum, default_value_t = OutputFormat::Table)]
pub format: OutputFormat,
}
#[derive(Subcommand)]
pub enum RequirementSingleCommand {
Set(RequirementTarget),
Clear(RequirementOnly),
}
#[derive(Subcommand)]
pub enum RequirementListCommand {
Add(RequirementTarget),
Clear(RequirementTarget),
}
#[derive(Subcommand)]
pub enum RuleListCommand {
Add(RuleTarget),
Clear(RuleTarget),
}
#[derive(Subcommand)]
pub enum ResolutionListCommand {
Add(ResolutionTarget),
Clear(ResolutionTarget),
}
#[derive(Subcommand)]
pub enum SourceListCommand {
Add(SourceTarget),
Clear(SourceTarget),
}
#[derive(Subcommand)]
pub enum QuestionSingleCommand {
Set(QuestionTarget),
Clear(QuestionOnly),
}