solana/system-test/genesis-test/get_program_accounts.sh

58 lines
1.5 KiB
Bash
Executable File

# | source | this file
# shellcheck disable=SC2034
# shellcheck disable=SC2086
STAKE_PROGRAM_PUBKEY=Stake11111111111111111111111111111111111111
SYSTEM_PROGRAM_PUBKEY=11111111111111111111111111111111
VOTE_PROGRAM_PUBKEY=Vote111111111111111111111111111111111111111
CONFIG_PROGRAM_PUBKEY=Config1111111111111111111111111111111111111
function get_program_accounts {
PROGRAM_NAME="$1"
PROGRAM_PUBKEY="$2"
URL="$3"
if [[ -n "$4" ]] ; then
JSON_OUTFILE="$4"
else
JSON_OUTFILE="${PROGRAM_NAME}_account_data.json"
fi
curl -s -X POST -H "Content-Type: application/json" -d \
'{"jsonrpc":"2.0","id":1, "method":"getProgramAccounts", "params":["'$PROGRAM_PUBKEY'"]}' $URL | jq '.' \
> $JSON_OUTFILE
}
function write_program_account_data_csv {
PROGRAM_NAME="$1"
if [[ -n "$2" ]] ; then
JSON_INFILE="$2"
else
JSON_INFILE="${PROGRAM_NAME}_account_data.json"
fi
if [[ -n "$3" ]] ; then
CSV_OUTFILE="$3"
else
CSV_OUTFILE="${PROGRAM_NAME}_account_data.csv"
fi
echo "Account_Pubkey,Lamports" > $CSV_OUTFILE
# shellcheck disable=SC2002
cat "$JSON_INFILE" | jq -r '(.result | .[]) | [.pubkey, (.account | .lamports)] | @csv' \
>> $CSV_OUTFILE
}
function get_account_info {
ACCOUNT_PUBKEY="$1"
URL="$2"
if [[ -n "$3" ]] ; then
JSON_OUTFILE="$3"
else
JSON_OUTFILE="${ACCOUNT_PUBKEY}_account_info.json"
fi
curl -s -X POST -H "Content-Type: application/json" -d \
'{"jsonrpc":"2.0","id":1, "method":"getAccountInfo", "params":["'$ACCOUNT_PUBKEY'"]}' $URL | jq '.' \
> $JSON_OUTFILE
}