Improve solana-tokens UX (#12253)
* Fix computed banks port * Readme incorrect * Return error if csv cannot be read * Move column headers over columns * Add dry-run check for sender/fee-payer balances * Use clap requires method for paired args * Write transaction-log anytime outfile is specified * Replace campaign-name with required db-path * Remove bids * Exclude new_stake_account_address from logs for non-stake distributions * Fix readme
This commit is contained in:
@@ -20,6 +20,7 @@ pub struct TransactionInfo {
|
||||
struct SignedTransactionInfo {
|
||||
recipient: String,
|
||||
amount: f64,
|
||||
#[serde(skip_serializing_if = "String::is_empty", default)]
|
||||
new_stake_account_address: String,
|
||||
finalized_date: Option<DateTime<Utc>>,
|
||||
signature: String,
|
||||
@@ -178,6 +179,33 @@ pub fn update_finalized_transaction(
|
||||
Ok(None)
|
||||
}
|
||||
|
||||
use csv::{ReaderBuilder, Trim};
|
||||
pub(crate) fn check_output_file(path: &str, db: &PickleDb) {
|
||||
let mut rdr = ReaderBuilder::new()
|
||||
.trim(Trim::All)
|
||||
.from_path(path)
|
||||
.unwrap();
|
||||
let logged_infos: Vec<SignedTransactionInfo> =
|
||||
rdr.deserialize().map(|entry| entry.unwrap()).collect();
|
||||
|
||||
let mut transaction_infos = read_transaction_infos(db);
|
||||
transaction_infos.sort_by(compare_transaction_infos);
|
||||
let transaction_infos: Vec<SignedTransactionInfo> = transaction_infos
|
||||
.iter()
|
||||
.map(|info| SignedTransactionInfo {
|
||||
recipient: info.recipient.to_string(),
|
||||
amount: info.amount,
|
||||
new_stake_account_address: info
|
||||
.new_stake_account_address
|
||||
.map(|x| x.to_string())
|
||||
.unwrap_or_else(|| "".to_string()),
|
||||
finalized_date: info.finalized_date,
|
||||
signature: info.transaction.signatures[0].to_string(),
|
||||
})
|
||||
.collect();
|
||||
assert_eq!(logged_infos, transaction_infos);
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
Reference in New Issue
Block a user