Allow passing buffer by keypair to cli program deploy (#15010) (#15016)

(cherry picked from commit 7831428e82)

Co-authored-by: Jack May <jack@solana.com>
This commit is contained in:
mergify[bot]
2021-02-02 22:49:09 +00:00
committed by GitHub
parent f534698618
commit 7b3c7a075a

View File

@@ -583,12 +583,13 @@ fn process_program_deploy(
allow_excessive_balance: bool, allow_excessive_balance: bool,
) -> ProcessResult { ) -> ProcessResult {
let (words, mnemonic, buffer_keypair) = create_ephemeral_keypair()?; let (words, mnemonic, buffer_keypair) = create_ephemeral_keypair()?;
let (buffer_signer, buffer_pubkey) = if let Some(i) = buffer_signer_index { let (buffer_provided, buffer_signer, buffer_pubkey) = if let Some(i) = buffer_signer_index {
(Some(config.signers[i]), config.signers[i].pubkey()) (true, Some(config.signers[i]), config.signers[i].pubkey())
} else if let Some(pubkey) = buffer_pubkey { } else if let Some(pubkey) = buffer_pubkey {
(None, pubkey) (true, None, pubkey)
} else { } else {
( (
false,
Some(&buffer_keypair as &dyn Signer), Some(&buffer_keypair as &dyn Signer),
buffer_keypair.pubkey(), buffer_keypair.pubkey(),
) )
@@ -656,7 +657,7 @@ fn process_program_deploy(
true true
}; };
let (program_data, buffer_data_len) = if buffer_signer.is_none() { let (program_data, buffer_data_len) = if buffer_provided {
// Check supplied buffer account // Check supplied buffer account
if let Some(account) = rpc_client if let Some(account) = rpc_client
.get_account_with_commitment(&buffer_pubkey, config.commitment)? .get_account_with_commitment(&buffer_pubkey, config.commitment)?
@@ -671,7 +672,7 @@ fn process_program_deploy(
} }
(vec![], account.data.len()) (vec![], account.data.len())
} else { } else {
return Err("Specified buffer not found, was it already consumed?".into()); return Err("Buffer account not found, was it already consumed?".into());
} }
} else if let Some(program_location) = program_location { } else if let Some(program_location) = program_location {
let program_data = read_and_verify_elf(&program_location)?; let program_data = read_and_verify_elf(&program_location)?;