Skip to content
This repository has been archived by the owner on Jan 22, 2025. It is now read-only.

Commit

Permalink
improve cli insufficient funds error messages (#15648)
Browse files Browse the repository at this point in the history
(cherry picked from commit b20bf8e)

Co-authored-by: Jack May <[email protected]>
  • Loading branch information
mergify[bot] and jackcmay authored Mar 3, 2021
1 parent 280437b commit 7ae3b55
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 14 deletions.
6 changes: 5 additions & 1 deletion cli/src/checks.rs
Original file line number Diff line number Diff line change
Expand Up @@ -86,9 +86,13 @@ pub fn check_account_for_spend_multiple_fees_with_commitment(
return Err(CliError::InsufficientFundsForSpendAndFee(
lamports_to_sol(balance),
lamports_to_sol(fee),
*account_pubkey,
));
} else {
return Err(CliError::InsufficientFundsForFee(lamports_to_sol(fee)));
return Err(CliError::InsufficientFundsForFee(
lamports_to_sol(fee),
*account_pubkey,
));
}
}
Ok(())
Expand Down
22 changes: 11 additions & 11 deletions cli/src/cli.rs
Original file line number Diff line number Diff line change
Expand Up @@ -369,25 +369,25 @@ pub struct CliCommandInfo {

#[derive(Debug, Error)]
pub enum CliError {
#[error("bad parameter: {0}")]
#[error("Bad parameter: {0}")]
BadParameter(String),
#[error(transparent)]
ClientError(#[from] ClientError),
#[error("command not recognized: {0}")]
#[error("Command not recognized: {0}")]
CommandNotRecognized(String),
#[error("insufficient funds for fee ({0} SOL)")]
InsufficientFundsForFee(f64),
#[error("insufficient funds for spend ({0} SOL)")]
InsufficientFundsForSpend(f64),
#[error("insufficient funds for spend ({0} SOL) and fee ({1} SOL)")]
InsufficientFundsForSpendAndFee(f64, f64),
#[error("Account {1} has insufficient funds for fee ({0} SOL)")]
InsufficientFundsForFee(f64, Pubkey),
#[error("Account {1} has insufficient funds for spend ({0} SOL)")]
InsufficientFundsForSpend(f64, Pubkey),
#[error("Account {2} has insufficient funds for spend ({0} SOL) + fee ({1} SOL)")]
InsufficientFundsForSpendAndFee(f64, f64, Pubkey),
#[error(transparent)]
InvalidNonce(nonce_utils::Error),
#[error("dynamic program error: {0}")]
#[error("Dynamic program error: {0}")]
DynamicProgramError(String),
#[error("rpc request error: {0}")]
#[error("RPC request error: {0}")]
RpcRequestError(String),
#[error("keypair file not found: {0}")]
#[error("Keypair file not found: {0}")]
KeypairFileNotFound(String),
}

Expand Down
11 changes: 9 additions & 2 deletions cli/src/spend_utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -107,15 +107,22 @@ where
return Err(CliError::InsufficientFundsForSpendAndFee(
lamports_to_sol(spend),
lamports_to_sol(fee),
*from_pubkey,
));
}
} else {
if from_balance < spend {
return Err(CliError::InsufficientFundsForSpend(lamports_to_sol(spend)));
return Err(CliError::InsufficientFundsForSpend(
lamports_to_sol(spend),
*from_pubkey,
));
}
if !check_account_for_balance_with_commitment(rpc_client, fee_pubkey, fee, commitment)?
{
return Err(CliError::InsufficientFundsForFee(lamports_to_sol(fee)));
return Err(CliError::InsufficientFundsForFee(
lamports_to_sol(fee),
*fee_pubkey,
));
}
}
Ok((message, spend))
Expand Down

0 comments on commit 7ae3b55

Please sign in to comment.