From b15e87631cd57565e2d0eec5aa807012f8312666 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Tue, 26 Oct 2021 01:09:56 +0000 Subject: [PATCH] [solana-test-validator] add support for keypair file parsing for --bpf-program address argument (#20962) (cherry picked from commit 58aa2b964b72830291ceaedc900f4e235829c422) Co-authored-by: Paul Schaaf --- validator/src/bin/solana-test-validator.rs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/validator/src/bin/solana-test-validator.rs b/validator/src/bin/solana-test-validator.rs index 0fc7f1ce1f..24ababbd19 100644 --- a/validator/src/bin/solana-test-validator.rs +++ b/validator/src/bin/solana-test-validator.rs @@ -155,13 +155,14 @@ fn main() { .arg( Arg::with_name("bpf_program") .long("bpf-program") - .value_name("ADDRESS BPF_PROGRAM.SO") + .value_name("ADDRESS_OR_PATH BPF_PROGRAM.SO") .takes_value(true) .number_of_values(2) .multiple(true) .help( "Add a BPF program to the genesis configuration. \ - If the ledger already exists then this parameter is silently ignored", + If the ledger already exists then this parameter is silently ignored. \ + First argument can be a public key or path to file that can be parsed as a keypair", ), ) .arg( @@ -403,10 +404,13 @@ fn main() { for address_program in values.chunks(2) { match address_program { [address, program] => { - let address = address.parse::().unwrap_or_else(|err| { - println!("Error: invalid address {}: {}", address, err); - exit(1); - }); + let address = address + .parse::() + .or_else(|_| read_keypair_file(address).map(|keypair| keypair.pubkey())) + .unwrap_or_else(|err| { + println!("Error: invalid address {}: {}", address, err); + exit(1); + }); let program_path = PathBuf::from(program); if !program_path.exists() {