use crate::model::ChangelogCategory;
use clap::Args;
use super::actions::{AdrTickStatus, EditActionArgs, WorkTickStatus};
use super::targets::OutputFormat;
#[derive(Args, Clone, Debug)]
pub(crate) struct CommonListArgs {
pub(crate) filter: Option<String>,
#[arg(short = 'n', long)]
pub(crate) limit: Option<usize>,
#[arg(short = 'o', long, value_enum, default_value = "table")]
pub(crate) output: OutputFormat,
#[arg(long)]
pub(crate) tag: Option<String>,
}
#[derive(Args, Clone, Debug)]
pub(crate) struct CommonGetArgs {
pub(crate) id: String,
pub(crate) field: Option<String>,
}
#[derive(Args, Clone, Debug)]
pub(crate) struct CommonShowArgs {
pub(crate) id: String,
#[arg(short = 'o', long, value_enum, default_value = "table")]
pub(crate) output: OutputFormat,
}
#[derive(Args, Clone, Debug)]
pub(crate) struct CommonEditArgs {
pub(crate) id: String,
pub(crate) path: String,
#[command(flatten)]
pub(crate) action: EditActionArgs,
}
#[derive(Args, Clone, Debug)]
pub(crate) struct CommonSetArgs {
pub(crate) id: String,
pub(crate) field: String,
#[arg(required_unless_present = "stdin")]
pub(crate) value: Option<String>,
#[arg(long)]
pub(crate) stdin: bool,
}
#[derive(Args, Clone, Debug)]
pub(crate) struct CommonAddArgs {
pub(crate) id: String,
pub(crate) field: String,
pub(crate) value: Option<String>,
#[arg(long)]
pub(crate) stdin: bool,
}
#[derive(Args, Clone, Debug)]
pub(crate) struct CommonRemoveArgs {
pub(crate) id: String,
pub(crate) field: String,
pub(crate) pattern: Option<String>,
#[arg(long, allow_hyphen_values = true)]
pub(crate) at: Option<i32>,
#[arg(long)]
pub(crate) exact: bool,
#[arg(long)]
pub(crate) regex: bool,
#[arg(long)]
pub(crate) all: bool,
}
#[derive(Args, Clone, Debug)]
pub(crate) struct CommonTickSelectorArgs {
pub(crate) id: String,
pub(crate) field: String,
pub(crate) pattern: Option<String>,
#[arg(long, allow_hyphen_values = true)]
pub(crate) at: Option<i32>,
#[arg(long)]
pub(crate) exact: bool,
#[arg(long)]
pub(crate) regex: bool,
}
#[derive(Args, Clone, Debug)]
pub(crate) struct AdrTickArgs {
#[command(flatten)]
pub(crate) common: CommonTickSelectorArgs,
#[arg(short, long, value_enum)]
pub(crate) status: AdrTickStatus,
}
#[derive(Args, Clone, Debug)]
pub(crate) struct WorkTickArgs {
#[command(flatten)]
pub(crate) common: CommonTickSelectorArgs,
#[arg(short, long, value_enum, default_value = "done")]
pub(crate) status: WorkTickStatus,
}
#[derive(Args, Clone, Debug)]
pub(crate) struct CommonRenderArgs {
pub(crate) id: String,
#[arg(long)]
pub(crate) dry_run: bool,
}
#[derive(Args, Clone, Debug)]
pub(crate) struct CommonDeleteArgs {
pub(crate) id: String,
#[arg(short = 'f', long)]
pub(crate) force: bool,
}
#[derive(Args, Clone, Debug)]
pub(crate) struct CommonDeprecateArgs {
pub(crate) id: String,
#[arg(short = 'f', long)]
pub(crate) force: bool,
}
#[derive(Args, Clone, Debug)]
pub(crate) struct CommonSupersedeArgs {
pub(crate) id: String,
#[arg(long)]
pub(crate) by: String,
#[arg(short = 'f', long)]
pub(crate) force: bool,
}
#[derive(Args, Clone, Debug)]
pub(crate) struct CommonIdArgs {
pub(crate) id: String,
}
#[derive(Args, Clone, Debug)]
pub(crate) struct AdrEditArgs {
#[command(flatten)]
pub(crate) common: CommonEditArgs,
#[arg(long)]
pub(crate) pro: Vec<String>,
#[arg(long)]
pub(crate) con: Vec<String>,
#[arg(long)]
pub(crate) reject_reason: Option<String>,
}
#[derive(Args, Clone, Debug)]
pub(crate) struct AdrAddArgs {
#[command(flatten)]
pub(crate) common: CommonAddArgs,
#[arg(long)]
pub(crate) pro: Vec<String>,
#[arg(long)]
pub(crate) con: Vec<String>,
#[arg(long)]
pub(crate) reject_reason: Option<String>,
}
#[derive(Args, Clone, Debug)]
pub(crate) struct WorkEditArgs {
#[command(flatten)]
pub(crate) common: CommonEditArgs,
#[arg(short = 'c', long, value_enum)]
pub(crate) category: Option<ChangelogCategory>,
#[arg(long, hide = true)]
pub(crate) scope: Option<String>,
}
#[derive(Args, Clone, Debug)]
pub(crate) struct WorkAddArgs {
#[command(flatten)]
pub(crate) common: CommonAddArgs,
#[arg(short = 'c', long, value_enum)]
pub(crate) category: Option<ChangelogCategory>,
#[arg(long, hide = true)]
pub(crate) scope: Option<String>,
}
#[derive(Args, Clone, Debug)]
pub(crate) struct GuardAddArgs {
pub(crate) id: String,
pub(crate) field: String,
pub(crate) value: String,
}