From 84e7ba0b3fc3f8845576c00072b7578cda4f2a35 Mon Sep 17 00:00:00 2001 From: Trent Nelson Date: Thu, 18 Feb 2021 00:06:13 -0700 Subject: [PATCH] CLI: Factor out ProgramId moniker resolution --- cli/src/cli.rs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/cli/src/cli.rs b/cli/src/cli.rs index 43d97bdf63..179bb4757f 100644 --- a/cli/src/cli.rs +++ b/cli/src/cli.rs @@ -898,6 +898,15 @@ pub fn parse_command( pub type ProcessResult = Result>; +fn resolve_derived_address_program_id(matches: &ArgMatches<'_>, arg_name: &str) -> Option { + matches.value_of(arg_name).and_then(|v| match v { + "NONCE" => Some(system_program::id()), + "STAKE" => Some(solana_stake_program::id()), + "VOTE" => Some(solana_vote_program::id()), + _ => pubkey_of(matches, arg_name), + }) +} + pub fn parse_create_address_with_seed( matches: &ArgMatches<'_>, default_signer: &DefaultSigner, @@ -910,12 +919,7 @@ pub fn parse_create_address_with_seed( vec![default_signer.signer_from_path(matches, wallet_manager)?] }; - let program_id = match matches.value_of("program_id").unwrap() { - "NONCE" => system_program::id(), - "STAKE" => solana_stake_program::id(), - "VOTE" => solana_vote_program::id(), - _ => pubkey_of(matches, "program_id").unwrap(), - }; + let program_id = resolve_derived_address_program_id(matches, "program_id").unwrap(); let seed = matches.value_of("seed").unwrap().to_string();