use clap::Subcommand;
#[derive(Debug, Subcommand)]
pub(crate) enum DeliverablesAction {
List {
project: String,
#[arg(long)]
json: bool,
#[arg(long)]
status: Option<DeliverableStatusArg>,
},
#[command(alias = "create")]
Add {
project: String,
#[arg(long)]
name: String,
#[arg(long)]
kind: DeliverableKindArg,
#[arg(long)]
estimate: EstimationTierArg,
#[arg(long)]
description: Option<String>,
#[arg(long)]
spec_ref: Option<String>,
#[arg(long)]
ticket_ref: Option<String>,
},
Show {
project: String,
id: String,
#[arg(long)]
json: bool,
},
SetStatus {
project: String,
id: String,
status: DeliverableStatusArg,
},
}
#[derive(Debug, Subcommand)]
pub(crate) enum MilestonesAction {
List {
project: String,
#[arg(long)]
json: bool,
},
#[command(alias = "create")]
Add {
project: String,
#[arg(long)]
name: String,
#[arg(long)]
target_date: String,
#[arg(long)]
description: Option<String>,
},
Show {
project: String,
id: String,
#[arg(long)]
json: bool,
},
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, clap::ValueEnum)]
pub(crate) enum DeliverableKindArg {
Feature,
Bugfix,
Refactor,
Chore,
Test,
Docs,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, clap::ValueEnum)]
pub(crate) enum EstimationTierArg {
#[value(name = "S")]
S,
#[value(name = "M")]
M,
#[value(name = "L")]
L,
#[value(name = "XL")]
Xl,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, clap::ValueEnum)]
pub(crate) enum DeliverableStatusArg {
Proposed,
InProgress,
Blocked,
Complete,
Delivered,
Shipped,
}