#![warn(missing_docs)]
use clap::{crate_authors, crate_version, ColorChoice, Parser, Subcommand};
use prdoclib::{common::PRNumber, config};
use std::path::PathBuf;
#[derive(Parser, Debug)]
#[clap(color=ColorChoice::Auto, disable_version_flag = true, arg_required_else_help = true )]
pub struct Opts {
#[clap(short, long, global = true, display_order = 99)]
pub json: bool,
#[clap(short, long, global = true, env = config::env::PRDOC_CONFIG)]
pub config: Option<PathBuf>,
#[clap(short = 'd', alias = "dir", long, global = true, env = config::env::PRDOC_FOLDERS)]
pub prdoc_folders: Option<PathBuf>,
#[allow(missing_docs)]
#[clap(subcommand)]
pub subcmd: Option<SubCommand>,
#[clap(short, long, alias = "V")]
pub version: bool,
}
#[derive(Subcommand, Debug)]
pub enum SubCommand {
#[allow(missing_docs)]
#[clap(version = crate_version!(), author = crate_authors!())]
Generate(GenOpts),
#[allow(missing_docs)]
#[clap(alias = "validate", version = crate_version!(), author = crate_authors!())]
Check(CheckOpts),
#[allow(missing_docs)]
#[clap(version = crate_version!(), author = crate_authors!())]
Scan(ScanOpts),
#[allow(missing_docs)]
#[clap(version = crate_version!(), author = crate_authors!())]
Load(LoadOpts),
}
#[derive(Parser, Debug)]
pub struct GenOpts {
#[clap(index = 1)]
pub number: PRNumber,
#[clap(long)]
pub dry_run: bool,
#[clap(short, long)]
pub output_dir: Option<PathBuf>,
}
#[derive(Parser, Debug)]
pub struct CheckOpts {
#[clap(short, long, conflicts_with = "number")]
pub file: Option<PathBuf>,
#[clap(short, long)]
pub number: Option<Vec<PRNumber>>,
#[clap(short, long, conflicts_with_all = ["file", "number"])]
pub list: Option<PathBuf>,
#[clap(short, long, env = "PRDOC_SCHEMA")]
pub schema: Option<PathBuf>,
}
#[derive(Parser, Debug)]
pub struct ScanOpts {
#[clap(short, long)]
pub all: bool,
#[clap(short, long)]
pub sort: bool,
}
#[derive(Parser, Debug)]
pub struct LoadOpts {
#[clap(short, long, conflicts_with = "number")]
pub file: Option<PathBuf>,
#[clap(short, long)]
pub number: Option<Vec<PRNumber>>,
#[clap(short, long, conflicts_with_all = ["file", "number"])]
pub list: Option<PathBuf>,
}