Skip to main content

nixpkgs_track/
cli.rs

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	/// Numerical ID of the pull request to check (e.g. 1234) or a GitHub URL to a pull request (e.g. https://github.com/nixos/nixpkgs/pull/1234).
9	#[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	/// GitHub token
16	#[clap(long, short, env = "GITHUB_TOKEN")]
17	pub token: Option<String>,
18}
19
20#[derive(Subcommand)]
21pub enum Commands {
22	/// Add pull request(s) to track list
23	Add {
24		#[clap(required(true), value_parser = parse_pull_request_id)]
25		pull_requests: Vec<u64>,
26	},
27	/// Remove pull request(s) from track list
28	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 tracked pull requests
39	List {
40		#[clap(long)]
41		json: bool,
42	},
43	/// Check tracked pull requests
44	Check {},
45}