use crate::output::OutputFormat;
use camino::Utf8PathBuf;
use clap::Subcommand;
#[derive(Subcommand)]
pub enum SourcesCommand {
Create {
#[arg(long, default_value = ".")]
repo: Utf8PathBuf,
#[arg(long)]
scope: String,
#[arg(long)]
id: String,
#[arg(long)]
name: String,
#[arg(long, default_value = "policy")]
source_type: String,
#[arg(long)]
url: Option<String>,
#[arg(long)]
reference: Option<String>,
#[arg(long)]
commit_pin: Option<String>,
#[arg(long)]
effective_date: Option<i64>,
#[arg(long)]
review_date: Option<i64>,
#[arg(long)]
superseded_by: Option<String>,
#[arg(long)]
origin_thread: Option<String>,
#[arg(long)]
origin_message: Option<String>,
#[arg(long, value_enum, default_value_t = OutputFormat::Table)]
format: OutputFormat,
},
}
#[derive(Subcommand)]
pub enum RequirementsCommand {
Create {
#[arg(long, default_value = ".")]
repo: Utf8PathBuf,
#[arg(long)]
scope: String,
#[arg(long)]
id: String,
#[arg(long)]
statement: String,
#[arg(long)]
description: Option<String>,
#[arg(long, default_value = "active")]
status: String,
#[arg(long)]
domain_id: Option<String>,
#[arg(long)]
origin_thread: Option<String>,
#[arg(long)]
origin_message: Option<String>,
#[arg(long, value_enum, default_value_t = OutputFormat::Table)]
format: OutputFormat,
},
SourceRef {
#[command(subcommand)]
command: SourceRefCommand,
},
Fog {
#[command(subcommand)]
command: FogCommand,
},
}
#[derive(Subcommand)]
pub enum FogCommand {
Set {
#[arg(long, default_value = ".")]
repo: Utf8PathBuf,
#[arg(long)]
scope: String,
#[arg(long)]
requirement_id: String,
#[arg(long)]
text: String,
#[arg(long, value_enum, default_value_t = OutputFormat::Table)]
format: OutputFormat,
},
Show {
#[arg(long, default_value = ".")]
repo: Utf8PathBuf,
#[arg(long)]
scope: String,
#[arg(long)]
requirement_id: String,
#[arg(long, value_enum, default_value_t = OutputFormat::Table)]
format: OutputFormat,
},
Clear {
#[arg(long, default_value = ".")]
repo: Utf8PathBuf,
#[arg(long)]
scope: String,
#[arg(long)]
requirement_id: String,
#[arg(long, value_enum, default_value_t = OutputFormat::Table)]
format: OutputFormat,
},
}
#[derive(Subcommand)]
pub enum DomainsCommand {
Create {
#[arg(long, default_value = ".")]
repo: Utf8PathBuf,
#[arg(long)]
scope: String,
#[arg(long)]
id: String,
#[arg(long)]
name: String,
#[arg(long)]
description: Option<String>,
#[arg(long)]
color: Option<String>,
#[arg(long, value_enum, default_value_t = OutputFormat::Table)]
format: OutputFormat,
},
List {
#[arg(long, default_value = ".")]
repo: Utf8PathBuf,
#[arg(long)]
scope: String,
#[arg(long, value_enum, default_value_t = OutputFormat::Table)]
format: OutputFormat,
},
}
#[derive(Subcommand)]
pub enum BoundariesCommand {
Create {
#[arg(long, default_value = ".")]
repo: Utf8PathBuf,
#[arg(long)]
scope: String,
#[arg(long)]
id: String,
#[arg(long)]
requirement_id: String,
#[arg(long)]
statement: String,
#[arg(long)]
source_id: Option<String>,
#[arg(long)]
source_clause: Option<String>,
#[arg(long, value_enum, default_value_t = OutputFormat::Table)]
format: OutputFormat,
},
List {
#[arg(long, default_value = ".")]
repo: Utf8PathBuf,
#[arg(long)]
scope: String,
#[arg(long, value_enum, default_value_t = OutputFormat::Table)]
format: OutputFormat,
},
}
#[derive(Subcommand)]
pub enum SourceRefCommand {
Add {
#[arg(long, default_value = ".")]
repo: Utf8PathBuf,
#[arg(long)]
scope: String,
#[arg(long)]
requirement_id: String,
#[arg(long)]
source_id: String,
#[arg(long)]
clause: Option<String>,
#[arg(long, value_enum, default_value_t = OutputFormat::Table)]
format: OutputFormat,
},
}