mirror of https://github.com/tikv/client-rust.git
72 lines
2.3 KiB
Rust
72 lines
2.3 KiB
Rust
// Copyright 2019 TiKV Project Authors. Licensed under Apache-2.0.
|
|
|
|
use std::path::PathBuf;
|
|
|
|
use clap::crate_version;
|
|
use clap::App;
|
|
use clap::Arg;
|
|
|
|
pub struct CommandArgs {
|
|
pub pd: Vec<String>,
|
|
pub ca: Option<PathBuf>,
|
|
pub cert: Option<PathBuf>,
|
|
pub key: Option<PathBuf>,
|
|
}
|
|
|
|
pub fn parse_args(app_name: &str) -> CommandArgs {
|
|
let matches = App::new(app_name)
|
|
.version(crate_version!())
|
|
.author("The TiKV Project Authors")
|
|
.arg(
|
|
Arg::with_name("pd")
|
|
.long("pd")
|
|
.aliases(&["pd-endpoint", "pd-endpoints"])
|
|
.value_name("PD_URL")
|
|
.help("Sets PD endpoints")
|
|
.long_help("Sets PD endpoints. Uses `,` to separate multiple PDs")
|
|
.takes_value(true)
|
|
.multiple(true)
|
|
.value_delimiter(",")
|
|
.required(false)
|
|
.default_value("localhost:2379"),
|
|
)
|
|
// A cyclic dependency between CA, cert and key is made
|
|
// to ensure that no security options are missing.
|
|
.arg(
|
|
Arg::with_name("ca")
|
|
.long("ca")
|
|
.value_name("CA_PATH")
|
|
.help("Sets the CA")
|
|
.long_help("Sets the CA. Must be used with --cert and --key")
|
|
.takes_value(true)
|
|
.requires("cert"),
|
|
)
|
|
.arg(
|
|
Arg::with_name("cert")
|
|
.long("cert")
|
|
.value_name("CERT_PATH")
|
|
.help("Sets the certificate")
|
|
.long_help("Sets the certificate. Must be used with --ca and --key")
|
|
.takes_value(true)
|
|
.requires("key"),
|
|
)
|
|
.arg(
|
|
Arg::with_name("key")
|
|
.long("key")
|
|
.alias("private-key")
|
|
.value_name("KEY_PATH")
|
|
.help("Sets the private key")
|
|
.long_help("Sets the private key. Must be used with --ca and --cert")
|
|
.takes_value(true)
|
|
.requires("ca"),
|
|
)
|
|
.get_matches();
|
|
|
|
CommandArgs {
|
|
pd: matches.values_of("pd").unwrap().map(String::from).collect(),
|
|
ca: matches.value_of("ca").map(PathBuf::from),
|
|
cert: matches.value_of("cert").map(PathBuf::from),
|
|
key: matches.value_of("key").map(PathBuf::from),
|
|
}
|
|
}
|