use structopt::clap::AppSettings;
use structopt::StructOpt;
#[derive(StructOpt, PartialEq, Debug)]
#[structopt(
name = "kah",
about = "a simple Kattis helper utility",
raw(global_settings = "&[AppSettings::ColoredHelp]")
)]
pub struct Opt {
#[structopt(short = "v", long = "verbose")]
verbose: bool,
#[structopt(short = "f", long = "force")]
force: bool,
#[structopt(subcommand)]
pub cmd: Cmd,
}
#[derive(StructOpt, PartialEq, Debug)]
pub enum Cmd {
#[structopt(name = "get")]
Get {
#[structopt(help = "Problem ID")]
pid: String,
#[structopt(help = "Problem Name")]
name: String,
#[structopt(short = "u", long = "url", default_value = "https://open.kattis.com")]
url: String,
},
#[structopt(name = "test")]
Test {
#[structopt(help = "Kattis problem to test")]
file: String,
#[structopt(short = "l", long = "language")]
language: Option<String>,
},
#[structopt(name = "submit")]
Submit {
#[structopt(help = "Kattis problem to submit")]
file: String,
#[structopt(short = "l", long = "language")]
language: Option<String>,
},
#[structopt(name = "init")]
Init {
#[structopt(default_value = ".kattisrc")]
file: String,
},
}
pub fn parse() -> Opt {
Opt::from_args()
}