mirror of
https://github.com/clap-rs/clap
synced 2024-12-15 23:32:32 +00:00
ebde32aa5b
* Add raw attributes This makes it possible to call clap functions that don't take strings, but any arbitrary value. Even functions that take more than one argument can be called. All attributes that are called `attribute_name_raw` are augmented to `attribute_name(value)` without quoting `value`. * Add tests for raw attributes and fix spelling
37 lines
1.1 KiB
Rust
37 lines
1.1 KiB
Rust
// Copyright (c) 2017 Guillaume Pinot <texitoi(a)texitoi.eu>
|
|
//
|
|
// This work is free. You can redistribute it and/or modify it under
|
|
// the terms of the Do What The Fuck You Want To Public License,
|
|
// Version 2, as published by Sam Hocevar. See the COPYING file for
|
|
// more details.
|
|
|
|
extern crate structopt;
|
|
#[macro_use]
|
|
extern crate structopt_derive;
|
|
|
|
use structopt::StructOpt;
|
|
use structopt::clap::AppSettings;
|
|
|
|
/// An example of raw attributes
|
|
#[derive(StructOpt, Debug)]
|
|
#[structopt(global_settings_raw = "&[AppSettings::ColoredHelp, AppSettings::VersionlessSubcommands]")]
|
|
struct Opt {
|
|
/// Output file
|
|
#[structopt(short = "o", long = "output")]
|
|
output: String,
|
|
|
|
/// admin_level to consider
|
|
#[structopt(short = "l", long = "level", aliases_raw = "&[\"set-level\", \"lvl\"]")]
|
|
level: Vec<String>,
|
|
|
|
/// Files to process
|
|
///
|
|
/// `level` is required if a file is called `FILE`.
|
|
#[structopt(name = "FILE", requires_if_raw = "\"FILE\", \"level\"")]
|
|
files: Vec<String>,
|
|
}
|
|
|
|
fn main() {
|
|
let opt = Opt::from_args();
|
|
println!("{:?}", opt);
|
|
}
|