use crate::cli::references::QuestionSingleCommand;
use crate::output::OutputFormat;
use camino::Utf8PathBuf;
use clap::Subcommand;
#[derive(Subcommand)]
pub enum ThreadCommand {
Post {
#[arg(long, default_value = ".")]
repo: Utf8PathBuf,
#[arg(long)]
scope: String,
#[arg(long)]
parent_type: String,
#[arg(long)]
parent_id: String,
#[arg(long)]
role: String,
body: 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 TopicsCommand {
Update(crate::cli::updates::UpdateArgs),
Create {
#[arg(long, default_value = ".")]
repo: Utf8PathBuf,
#[arg(long)]
scope: String,
#[arg(long)]
id: String,
#[arg(long)]
requirement_id: String,
#[arg(long)]
title: String,
#[arg(long, default_value = "open")]
status: String,
#[arg(long, default_value = "[]")]
links_json: 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,
},
Claim {
#[arg(long, default_value = ".")]
repo: Utf8PathBuf,
#[arg(long)]
scope: String,
#[arg(long)]
id: String,
#[arg(long)]
actor: String,
#[arg(long, value_enum, default_value_t = OutputFormat::Table)]
format: OutputFormat,
},
Release {
#[arg(long, default_value = ".")]
repo: Utf8PathBuf,
#[arg(long)]
scope: String,
#[arg(long)]
id: String,
#[arg(long, value_enum, default_value_t = OutputFormat::Table)]
format: OutputFormat,
},
Close {
#[arg(long, default_value = ".")]
repo: Utf8PathBuf,
#[arg(long)]
scope: String,
#[arg(long)]
id: String,
#[arg(long, value_enum, default_value_t = OutputFormat::Table)]
format: OutputFormat,
},
}
#[derive(Subcommand)]
pub enum QuestionsCommand {
Create {
#[arg(long, default_value = ".")]
repo: Utf8PathBuf,
#[arg(long)]
scope: String,
#[arg(long)]
id: String,
#[arg(long)]
topic_id: String,
#[arg(long)]
question: String,
#[arg(long)]
method: String,
#[arg(long, default_value = "open")]
status: String,
#[arg(long)]
answer: Option<String>,
#[arg(long, default_value = "[]")]
links_json: String,
#[arg(long)]
resolution_id: Option<String>,
#[arg(long)]
contradicts: 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,
},
Contradicts {
#[command(subcommand)]
command: QuestionSingleCommand,
},
Update {
#[arg(long, default_value = ".")]
repo: Utf8PathBuf,
#[arg(long)]
scope: String,
#[arg(long)]
id: String,
#[arg(long)]
method: Option<String>,
#[arg(long)]
question: Option<String>,
#[arg(long, conflicts_with_all = ["method", "question", "status", "links_json", "resolution_id"])]
fields_json: Option<String>,
#[arg(long)]
status: Option<String>,
#[arg(long)]
links_json: Option<String>,
#[arg(long)]
resolution_id: Option<String>,
#[arg(long, value_enum, default_value_t = OutputFormat::Table)]
format: OutputFormat,
},
Claim {
#[arg(long, default_value = ".")]
repo: Utf8PathBuf,
#[arg(long)]
scope: String,
#[arg(long)]
id: String,
#[arg(long)]
actor: String,
#[arg(long, value_enum, default_value_t = OutputFormat::Table)]
format: OutputFormat,
},
Release {
#[arg(long, default_value = ".")]
repo: Utf8PathBuf,
#[arg(long)]
scope: String,
#[arg(long)]
id: String,
#[arg(long, value_enum, default_value_t = OutputFormat::Table)]
format: OutputFormat,
},
Answer {
#[arg(long, default_value = ".")]
repo: Utf8PathBuf,
#[arg(long)]
scope: String,
#[arg(long)]
id: String,
#[arg(long)]
answer: String,
#[arg(long)]
resolution_id: Option<String>,
#[arg(long, value_enum, default_value_t = OutputFormat::Table)]
format: OutputFormat,
},
}