Add various missing cli validators (#5745)

automerge
This commit is contained in:
Michael Vines 2019-08-30 09:27:35 -07:00 committed by Grimes
parent 4786143524
commit 22667d64d1
6 changed files with 42 additions and 4 deletions

View File

@ -1661,7 +1661,7 @@ fn is_pubkey(string: String) -> Result<(), String> {
}
}
// Return an error if a pubkey cannot be parsed.
// Return an error if a keypair file cannot be parsed.
fn is_keypair(string: String) -> Result<(), String> {
read_keypair(&string)
.map(|_| ())

View File

@ -15,7 +15,7 @@ use std::error;
use std::net::SocketAddr;
use std::process::exit;
fn pubkey_validator(pubkey: String) -> Result<(), String> {
fn is_pubkey(pubkey: String) -> Result<(), String> {
match pubkey.parse::<Pubkey>() {
Ok(_) => Ok(()),
Err(err) => Err(format!("{:?}", err)),
@ -38,6 +38,7 @@ fn main() -> Result<(), Box<dyn error::Error>> {
.value_name("HOST:PORT")
.takes_value(true)
.default_value(&entrypoint_string)
.validator(solana_netutil::is_host_port)
.global(true)
.help("Rendezvous with the cluster at this entry point"),
)
@ -81,7 +82,7 @@ fn main() -> Result<(), Box<dyn error::Error>> {
.long("pubkey")
.value_name("PUBKEY")
.takes_value(true)
.validator(pubkey_validator)
.validator(is_pubkey)
.help("Public key of a specific node to wait for"),
)
.arg(
@ -101,7 +102,7 @@ fn main() -> Result<(), Box<dyn error::Error>> {
.index(1)
.required(true)
.value_name("PUBKEY")
.validator(pubkey_validator)
.validator(is_pubkey)
.help("Public key of a specific node to stop"),
),
)

View File

@ -8,6 +8,13 @@ use std::path::PathBuf;
use std::process::exit;
use std::sync::Arc;
// Return an error if a keypair file cannot be parsed.
fn is_keypair(string: String) -> Result<(), String> {
read_keypair(&string)
.map(|_| ())
.map_err(|err| format!("{:?}", err))
}
fn main() {
solana_logger::setup();
@ -20,6 +27,7 @@ fn main() {
.long("identity")
.value_name("PATH")
.takes_value(true)
.validator(is_keypair)
.help("File containing an identity (keypair)"),
)
.arg(
@ -29,6 +37,7 @@ fn main() {
.value_name("HOST:PORT")
.takes_value(true)
.required(true)
.validator(solana_netutil::is_host_port)
.help("Rendezvous with the cluster at this entry point"),
)
.arg(
@ -47,6 +56,7 @@ fn main() {
.value_name("PATH")
.takes_value(true)
.required(true)
.validator(is_keypair)
.help("File containing the storage account keypair"),
)
.get_matches();

View File

@ -104,6 +104,11 @@ pub fn parse_host_port(host_port: &str) -> Result<SocketAddr, String> {
}
}
pub fn is_host_port(string: String) -> Result<(), String> {
parse_host_port(&string)?;
Ok(())
}
#[cfg(windows)]
fn udp_socket(_reuseaddr: bool) -> io::Result<Socket> {
let sock = Socket::new(Domain::ipv4(), Type::dgram(), None)?;

View File

@ -50,6 +50,13 @@ fn is_pubkey(string: String) -> Result<(), String> {
}
}
// Return an error if a keypair file cannot be parsed.
fn is_keypair(string: String) -> Result<(), String> {
read_keypair(&string)
.map(|_| ())
.map_err(|err| format!("{:?}", err))
}
// Return an error if a url cannot be parsed.
fn is_url(string: String) -> Result<(), String> {
match url::Url::parse(&string) {
@ -187,6 +194,7 @@ fn main() -> Result<(), Box<dyn error::Error>> {
.value_name("KEYPAIR")
.takes_value(true)
.required(true)
.validator(is_keypair)
.help("/path/to/validator-keypair.json"),
)
.arg(

View File

@ -211,6 +211,13 @@ fn initialize_ledger_path(
Ok(genesis_blockhash)
}
// Return an error if a keypair file cannot be parsed.
fn is_keypair(string: String) -> Result<(), String> {
read_keypair(&string)
.map(|_| ())
.map_err(|err| format!("{:?}", err))
}
fn main() {
solana_logger::setup_with_filter("solana=info");
solana_metrics::set_panic_hook("validator");
@ -233,6 +240,7 @@ fn main() {
.long("identity")
.value_name("PATH")
.takes_value(true)
.validator(is_keypair)
.help("File containing the identity keypair for the validator"),
)
.arg(
@ -240,6 +248,7 @@ fn main() {
.long("voting-keypair")
.value_name("PATH")
.takes_value(true)
.validator(is_keypair)
.help("File containing the authorized voting keypair. Default is an ephemeral keypair"),
)
.arg(
@ -247,6 +256,7 @@ fn main() {
.long("vote-account")
.value_name("PUBKEY")
.takes_value(true)
.validator(is_keypair)
.help("Public key of the vote account to vote with. Default is the public key of the voting keypair"),
)
.arg(
@ -254,6 +264,7 @@ fn main() {
.long("storage-keypair")
.value_name("PATH")
.takes_value(true)
.validator(is_keypair)
.help("File containing the storage account keypair. Default is an ephemeral keypair"),
)
.arg(
@ -278,6 +289,7 @@ fn main() {
.long("entrypoint")
.value_name("HOST:PORT")
.takes_value(true)
.validator(solana_netutil::is_host_port)
.help("Rendezvous with the cluster at this entry point"),
)
.arg(
@ -324,6 +336,7 @@ fn main() {
.long("rpc-drone-address")
.value_name("HOST:PORT")
.takes_value(true)
.validator(solana_netutil::is_host_port)
.help("Enable the JSON RPC 'requestAirdrop' API with this drone address."),
)
.arg(
@ -332,6 +345,7 @@ fn main() {
.value_name("HOST:PORT")
.takes_value(true)
.hidden(true) // Don't document this argument to discourage its use
.validator(solana_netutil::is_host_port)
.help("Rendezvous with the vote signer at this RPC end point"),
)
.arg(