1use clap::{Parser, Subcommand};
2
3use crate::utils::parse_pull_request_id;
4
5#[derive(Parser)]
6#[command(version, about, subcommand_negates_reqs = true)]
7pub struct Cli {
8 #[clap(required(true), value_parser = parse_pull_request_id)]
10 pub pull_request: Option<u64>,
11
12 #[command(subcommand)]
13 pub command: Option<Commands>,
14
15 #[clap(long, short, env = "GITHUB_TOKEN")]
17 pub token: Option<String>,
18}
19
20#[derive(Subcommand)]
21pub enum Commands {
22 Add {
24 #[clap(required(true), value_parser = parse_pull_request_id)]
25 pull_requests: Vec<u64>,
26 },
27 Remove {
29 #[clap(required_unless_present("all"), value_parser = parse_pull_request_id)]
30 pull_requests: Vec<u64>,
31
32 #[clap(long, conflicts_with = "pull_requests")]
33 all: bool,
34
35 #[clap(short, long, exclusive = true)]
36 interactive: bool,
37 },
38 List {
40 #[clap(long)]
41 json: bool,
42 },
43 Check {},
45}