use clap::{Parser, Subcommand};
use clap_complete::Shell;
use crate::core::Status;
#[derive(Parser, Debug)]
#[command(name = "itack")]
#[command(author, version, about, long_about = None)]
pub struct Cli {
#[command(subcommand)]
pub command: Commands,
}
#[derive(Subcommand, Debug)]
pub enum Commands {
Init,
Create {
title: String,
#[arg(short, long)]
epic: Option<String>,
#[arg(short, long)]
body: Option<String>,
#[arg(short, long)]
message: Option<String>,
#[arg(short, long, value_delimiter = ',')]
depends_on: Vec<u32>,
},
Show {
id: u32,
#[arg(long)]
json: bool,
},
Edit {
id: u32,
#[arg(short, long)]
body: Option<String>,
#[arg(short, long)]
message: Option<String>,
},
Done {
id: u32,
},
WontFix {
id: u32,
},
Claim {
id: u32,
assignee: String,
#[arg(short, long)]
session: Option<String>,
},
Release {
id: u32,
},
Depend {
id: u32,
deps: Vec<u32>,
},
Undepend {
id: u32,
deps: Vec<u32>,
},
SetSession {
id: u32,
session: String,
},
List {
#[arg(short, long)]
status: Option<Status>,
#[arg(short, long)]
epic: Option<String>,
#[arg(short, long)]
assignee: Option<String>,
#[arg(long)]
json: bool,
},
Board {
#[arg(long)]
json: bool,
},
Doctor,
Search {
query: String,
#[arg(short, long)]
all_branches: bool,
#[arg(long)]
json: bool,
},
Completions {
shell: Shell,
},
}