#metadata #solana #blockchain #cli

app wealthineer-program-metadata

A CLI tool for Solana metadata operations

1 unstable release

new 0.1.0 Dec 1, 2024

#329 in #metadata

MIT license

125KB
2.5K SLoC

Metadata Rust CLI

This CLI is used to interact with the metadata program.

Usage

program-metadata [SUBCOMMAND]

Commands

IDL Management

# Upload an IDL from local file
program-metadata idl upload <IDL_PATH> <PROGRAM_ID> [OPTIONS]

# Upload an IDL from URL
program-metadata idl upload-url <URL> <PROGRAM_ID> [OPTIONS]

# Download an IDL
program-metadata idl download <PROGRAM_ID> [OUTPUT_PATH]

Options:
  -k, --keypair <PATH>           Path to keypair file (optional, defaults to config)
  -p, --priority-fees <NUMBER>   Priority fees per compute unit (default: 0)
  --help                         Print help information

Metadata Management

# Upload metadata from local file
program-metadata metadata upload <METADATA_PATH> <PROGRAM_ID> [OPTIONS]

# Upload metadata from URL
program-metadata metadata upload-url <URL> <PROGRAM_ID> [OPTIONS]

# Download metadata
program-metadata metadata download <PROGRAM_ID> [OUTPUT_PATH]

Options:
  -k, --keypair <PATH>           Path to keypair file (optional, defaults to config)
  -p, --priority-fees <NUMBER>   Priority fees per compute unit (default: 0)
  --help                         Print help information

Examples:

# Upload IDL using default keypair
program-metadata idl upload ./target/idl/my_program.json GrAkz4CQ4zKm9KhZ9Q7PkCmqDP7JuSGbpwGY8dxKt6Kj

# Upload IDL from URL with custom keypair and priority fees
program-metadata idl upload-url https://example.com/my_idl.json GrAkz4CQ4zKm9KhZ9Q7PkCmqDP7JuSGbpwGY8dxKt6Kj -k ./my-keypair.json -p 1000

# Upload metadata using default keypair
program-metadata metadata upload ./metadata.json GrAkz4CQ4zKm9KhZ9Q7PkCmqDP7JuSGbpwGY8dxKt6Kj

# Download IDL to default path (idl.json)
program-metadata idl download GrAkz4CQ4zKm9KhZ9Q7PkCmqDP7Ju

# Upload metadata from URL
program-metadata metadata upload-url https://example.com/metadata.json GrAkz4CQ4zKm9KhZ9Q7PkCmqDP7JuSGbpwGY8dxKt6Kj

# Download metadata to custom path
program-metadata metadata download GrAkz4CQ4zKm9KhZ9Q7PkCmqDP7JuSGbpwGY8dxKt6Kj ./my-metadata.json

Testing the Rust CLI against a local validator from within this repository

Start your local validator:

solana-test-validator --reset

Make sure you point your cluster to localnet and fix the program id in Anchor.toml. Fix the program id in programs/upload-idl-program/src/lib.rs and rust_cli/src/codama_sdk/programs.rs. Deploy the metadata program using anchor:

anchor build
anchor deploy

Airdrop SOL to your keypair - make sure to point your solana cli to localnet:

solana config set --url localhost
solana airdrop 20 -k tests/wallet.json  

Deploy any program using the keypair in tests/wallet.json:

 solana program deploy <path/to/any-program>.so -k tests/wallet.json

Run the CLI upload for the program you just deployed:

cargo run -- idl upload tests/testidl.json <program-id> -k tests/wallet.json -p 0

Dependencies

~77MB
~1.5M SLoC