0.4.1 • Published 11 months ago

antelope-abi2rs v0.4.1

Weekly downloads
-
License
MIT
Repository
github
Last release
11 months ago

antelope-abi2rs

Command line tool to generate Rust type definitions from Antelope ABI Inspired by eosio-abi2ts

Installation

npm install -g antelope-abi2rs

or

yarn global add antelope-abi2rs

Usage

$ antelope-abi2rs -h
usage: antelope-abi2rs [-h] [-v] [-i INPUT] [-p PREFIX] [-n INDENT] [-t] [-e]
                    [-a | -c | -s]
                    [output]

Positional arguments:
  output                Output file to write to instead of stdout.

Optional arguments:
  -h, --help            Show this help message and exit.
  -v, --version         Show program's version number and exit.
  -i INPUT, --input INPUT
                        Read ABI JSON from file instead of stdin.
  -p PREFIX, --prefix PREFIX
                        Prefix to add to every type.
  -n INDENT, --indent INDENT
                        How many spaces or tabs to indend with.
  -t, --use-tabs        Use tabs instead of spaces for indentation.
  -a, --pascal-case     Format types using PascalCase (default).
  -c, --camel-case      Format types using camelCase.
  -s, --snake-case      Format types using snake_case.

Example

$ antelope-abi2rs -i eosio.token.abi

// Generated by antelope-abi2rs 0.3.1 - eosio::abi/1.1

use serde::{Deserialize, Serialize};

type Asset = String;
type Name = String;
type Symbol = String;


macro_rules! impl_try_from_str {
    ($type:ty) => {
        impl TryFrom<&str> for $type {
            type Error = serde_json::Error;
            #[inline]
            fn try_from(str: &str) -> Result<Self, Self::Error> {
                serde_json::from_str(str)
            }
        }
    };
}


#[derive(Serialize, Deserialize, Debug)]
#[serde(deny_unknown_fields)]
pub struct Account {
    pub balance: Asset,
}
impl_try_from_str!(Account);

#[derive(Serialize, Deserialize, Debug)]
#[serde(deny_unknown_fields)]
pub struct Close {
    pub owner: Name,
    pub symbol: Symbol,
}
impl_try_from_str!(Close);

#[derive(Serialize, Deserialize, Debug)]
#[serde(deny_unknown_fields)]
pub struct Create {
    pub issuer: Name,
    pub maximum_supply: Asset,
}
impl_try_from_str!(Create);

#[derive(Serialize, Deserialize, Debug)]
#[serde(deny_unknown_fields)]
pub struct CurrencyStats {
    pub supply: Asset,
    pub max_supply: Asset,
    pub issuer: Name,
}
impl_try_from_str!(CurrencyStats);

#[derive(Serialize, Deserialize, Debug)]
#[serde(deny_unknown_fields)]
pub struct Issue {
    pub to: Name,
    pub quantity: Asset,
    pub memo: String,
}
impl_try_from_str!(Issue);

#[derive(Serialize, Deserialize, Debug)]
#[serde(deny_unknown_fields)]
pub struct Open {
    pub owner: Name,
    pub symbol: Symbol,
    pub ram_payer: Name,
}
impl_try_from_str!(Open);

#[derive(Serialize, Deserialize, Debug)]
#[serde(deny_unknown_fields)]
pub struct Retire {
    pub quantity: Asset,
    pub memo: String,
}
impl_try_from_str!(Retire);

#[derive(Serialize, Deserialize, Debug)]
#[serde(deny_unknown_fields)]
pub struct Transfer {
    pub from: Name,
    pub to: Name,
    pub quantity: Asset,
    pub memo: String,
}
impl_try_from_str!(Transfer);

Stdin

eosc -u https://eos.greymass.com get abi eosio.evm | antelope-abi2rs src/abi.rs

Usage

for trx in block.all_transaction_traces() {
    for trace in &trx.action_traces {
        let action_trace = trace.action.as_ref().unwrap();
        if action_trace.name != "transfer" { continue; }

        match abi::Transfer::try_from(action_trace.json_data.as_str()) {
            Ok(transfer) => {
                log::info!("Transfer! {:?}", transfer)
            }
            Err(_) => continue,
        }
    }
}
0.4.1

11 months ago

0.4.0

11 months ago

0.3.1

1 year ago

0.3.0

1 year ago

0.2.0

1 year ago

0.1.4

1 year ago

0.1.3

1 year ago

0.1.2

1 year ago

0.1.1

1 year ago