chore(abigen): remove unnecessary stuff
This commit is contained in:
parent
f562b47fd2
commit
aa454b945b
|
@ -1,55 +0,0 @@
|
|||
# `ethcontract-generate`
|
||||
|
||||
An alternative API for generating type-safe contract bindings from `build.rs`
|
||||
scripts. Using this method instead of the procedural macro has a couple
|
||||
advantages:
|
||||
- Proper integration with with RLS and Racer for autocomplete support
|
||||
- Ability to inspect the generated code
|
||||
|
||||
The downside of using the generator API is the requirement of having a build
|
||||
script instead of a macro invocation.
|
||||
|
||||
## Getting Started
|
||||
|
||||
Using crate requires two dependencies - one for the runtime and one for the
|
||||
generator:
|
||||
|
||||
```toml
|
||||
[dependencies]
|
||||
ethcontract = { version = "...", default-features = false }
|
||||
|
||||
[build-dependencies]
|
||||
ethcontract-generate = "..."
|
||||
```
|
||||
|
||||
It is recommended that both versions be kept in sync or else unexpected
|
||||
behaviour may occur.
|
||||
|
||||
Then, in your `build.rs` include the following code:
|
||||
|
||||
```rs
|
||||
use ethcontract_generate::Builder;
|
||||
use std::env;
|
||||
use std::path::Path;
|
||||
|
||||
fn main() {
|
||||
let dest = env::var("OUT_DIR").unwrap();
|
||||
Builder::new("path/to/truffle/build/contract/Contract.json")
|
||||
.generate()
|
||||
.unwrap()
|
||||
.write_to_file(Path::new(&dest).join("rust_coin.rs"))
|
||||
.unwrap();
|
||||
}
|
||||
```
|
||||
|
||||
## Relation to `ethcontract-derive`
|
||||
|
||||
`ethcontract-derive` uses `ethcontract-generate` under the hood so their
|
||||
generated bindings should be identical, they just provide different APIs to the
|
||||
same functionality.
|
||||
|
||||
The long term goal of this project is to maintain `ethcontract-derive`. For now
|
||||
there is no extra work in having it split into two separate crates. That being
|
||||
said if RLS support improves for procedural macro generated code, it is possible
|
||||
that this crate be deprecated in favour of `ethcontract-derive` as long as there
|
||||
is no good argument to keep it around.
|
|
@ -1 +0,0 @@
|
|||
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"name","type":"string"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"symbol","type":"string"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"decimals","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"totalSupply","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"who","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]
|
|
@ -1,10 +0,0 @@
|
|||
use ethers_contract_abigen::Abigen;
|
||||
|
||||
fn main() {
|
||||
Abigen::new("ERC20Token", "./abi.json")
|
||||
.unwrap()
|
||||
.generate()
|
||||
.unwrap()
|
||||
.write_to_file("token.rs")
|
||||
.unwrap();
|
||||
}
|
|
@ -1,9 +1,4 @@
|
|||
#![deny(missing_docs)]
|
||||
|
||||
//! Crate for generating type-safe bindings to Ethereum smart contracts. This
|
||||
//! crate is intended to be used either indirectly with the `ethcontract`
|
||||
//! crate's `contract` procedural macro or directly from a build script.
|
||||
|
||||
mod common;
|
||||
mod events;
|
||||
mod methods;
|
||||
|
|
|
@ -327,46 +327,6 @@ mod tests {
|
|||
});
|
||||
}
|
||||
|
||||
// #[test]
|
||||
// fn expand_transfer_builder_topic_filters() {
|
||||
// let event = Event {
|
||||
// name: "Transfer".into(),
|
||||
// inputs: vec![
|
||||
// EventParam {
|
||||
// name: "from".into(),
|
||||
// kind: ParamType::Address,
|
||||
// indexed: true,
|
||||
// },
|
||||
// EventParam {
|
||||
// name: "to".into(),
|
||||
// kind: ParamType::Address,
|
||||
// indexed: true,
|
||||
// },
|
||||
// EventParam {
|
||||
// name: "amount".into(),
|
||||
// kind: ParamType::Uint(256),
|
||||
// indexed: false,
|
||||
// },
|
||||
// ],
|
||||
// anonymous: false,
|
||||
// };
|
||||
|
||||
// #[rustfmt::skip]
|
||||
// assert_quote!(expand_builder_topic_filters(&event).unwrap(), {
|
||||
// #[doc = "Adds a filter for the from event parameter."]
|
||||
// pub fn from(mut self, topic: self::ethcontract::Topic<self::ethcontract::Address>) -> Self {
|
||||
// self.0 = (self.0).topic0(topic);
|
||||
// self
|
||||
// }
|
||||
|
||||
// #[doc = "Adds a filter for the to event parameter."]
|
||||
// pub fn to(mut self, topic: self::ethcontract::Topic<self::ethcontract::Address>) -> Self {
|
||||
// self.0 = (self.0).topic1(topic);
|
||||
// self
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
|
||||
#[test]
|
||||
fn expand_data_struct_value() {
|
||||
let event = Event {
|
||||
|
@ -428,124 +388,6 @@ mod tests {
|
|||
assert_quote!(construction, { FooFilter(p0, p1) });
|
||||
}
|
||||
|
||||
// #[test]
|
||||
// fn expand_enum_for_all_events() {
|
||||
// let context = {
|
||||
// let mut context = Context::default();
|
||||
// context.abi.events.insert(
|
||||
// "Foo".into(),
|
||||
// vec![Event {
|
||||
// name: "Foo".into(),
|
||||
// inputs: vec![EventParam {
|
||||
// name: String::new(),
|
||||
// kind: ParamType::Bool,
|
||||
// indexed: false,
|
||||
// }],
|
||||
// anonymous: false,
|
||||
// }],
|
||||
// );
|
||||
// context.abi.events.insert(
|
||||
// "Bar".into(),
|
||||
// vec![Event {
|
||||
// name: "Bar".into(),
|
||||
// inputs: vec![EventParam {
|
||||
// name: String::new(),
|
||||
// kind: ParamType::Address,
|
||||
// indexed: false,
|
||||
// }],
|
||||
// anonymous: true,
|
||||
// }],
|
||||
// );
|
||||
// context.event_derives = ["Asdf", "a::B", "a::b::c::D"]
|
||||
// .iter()
|
||||
// .map(|derive| syn::parse_str::<Path>(derive).unwrap())
|
||||
// .collect();
|
||||
// context
|
||||
// };
|
||||
|
||||
// assert_quote!(expand_event_enum(&context), {
|
||||
// /// A contract event.
|
||||
// #[derive(Clone, Debug, Eq, PartialEq, Asdf, a::B, a::b::c::D)]
|
||||
// pub enum Event {
|
||||
// Bar(self::event_data::Bar),
|
||||
// Foo(self::event_data::Foo),
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
|
||||
#[test]
|
||||
// fn expand_parse_log_impl_for_all_events() {
|
||||
// let context = {
|
||||
// let mut context = Context::default();
|
||||
// context.abi.events.insert(
|
||||
// "Foo".into(),
|
||||
// vec![Event {
|
||||
// name: "Foo".into(),
|
||||
// inputs: vec![EventParam {
|
||||
// name: String::new(),
|
||||
// kind: ParamType::Bool,
|
||||
// indexed: false,
|
||||
// }],
|
||||
// anonymous: false,
|
||||
// }],
|
||||
// );
|
||||
// context.abi.events.insert(
|
||||
// "Bar".into(),
|
||||
// vec![Event {
|
||||
// name: "Bar".into(),
|
||||
// inputs: vec![EventParam {
|
||||
// name: String::new(),
|
||||
// kind: ParamType::Address,
|
||||
// indexed: false,
|
||||
// }],
|
||||
// anonymous: true,
|
||||
// }],
|
||||
// );
|
||||
// context
|
||||
// };
|
||||
|
||||
// let foo_signature = expand_hash(context.abi.event("Foo").unwrap().signature());
|
||||
// let invalid_data = expand_invalid_data();
|
||||
|
||||
// assert_quote!(expand_event_parse_log(&context), {
|
||||
// impl self::ethcontract::contract::ParseLog for Event {
|
||||
// fn parse_log(
|
||||
// log: self::ethcontract::RawLog,
|
||||
// ) -> Result<Self, self::ethcontract::errors::ExecutionError> {
|
||||
// let standard_event = log.topics
|
||||
// .get(0)
|
||||
// .copied()
|
||||
// .map(|topic| match topic {
|
||||
// #foo_signature => Ok(Event::Foo(
|
||||
// log.clone().decode(
|
||||
// &Contract::artifact()
|
||||
// .abi
|
||||
// .event("Foo")
|
||||
// .expect("generated event decode")
|
||||
// )?
|
||||
// )),
|
||||
// _ => #invalid_data,
|
||||
// });
|
||||
|
||||
// if let Some(Ok(data)) = standard_event {
|
||||
// return Ok(data);
|
||||
// }
|
||||
|
||||
// if let Ok(data) = log.clone().decode(
|
||||
// &Contract::artifact()
|
||||
// .abi
|
||||
// .event("Bar")
|
||||
// .expect("generated event decode")
|
||||
// ) {
|
||||
// return Ok(Event::Bar(data));
|
||||
// }
|
||||
|
||||
// #invalid_data
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
|
||||
#[test]
|
||||
#[rustfmt::skip]
|
||||
fn expand_hash_value() {
|
||||
|
|
Loading…
Reference in New Issue