ethers-rs/ethers-solc
korboismoe d77068e26a
fix: pass partial artifact cache to project compiler output (#623)
* fix: pass partial artifact cache to project compiler output

If the cache contains some artifacts but not all, the
project compiler output now contains the cached artifacts
in addition to the newly compiled artifacts.

* chore: update changelog

* fix: remove missing cache files before getting changed files

* fix: propagate error if reading cached artifacts fails
2021-11-26 18:49:19 +02:00
..
src fix: pass partial artifact cache to project compiler output (#623) 2021-11-26 18:49:19 +02:00
test-data fix: pass partial artifact cache to project compiler output (#623) 2021-11-26 18:49:19 +02:00
tests fix: pass partial artifact cache to project compiler output (#623) 2021-11-26 18:49:19 +02:00
Cargo.toml fix(solc): enable sha2 asm for checksum speed (#626) 2021-11-26 17:29:19 +02:00
README.md feat: add cargo change detection support (#599) 2021-11-20 16:47:36 +02:00

README.md

ethers-solc

Utilities for working with native solc and compiling projects.

To also compile contracts during cargo build (so that ethers abigen! can pull in updated abi automatically) you can configure a ethers_solc::Project in your build.rs file

First add ethers-solc to your cargo build-dependencies.

Once you compiled the project, you can configure cargo change detection with rerun_if_sources_changed, so that cargo will execute the build.rs file if a contract in the sources directory has changed

[build-dependencies]
ethers-solc = { git = "https://github.com/gakonst/ethers-rs" }
use ethers_solc::{Project, ProjectPathsConfig};

fn main() {
    // configure the project with all its paths, solc, cache etc.
    let project = Project::builder()
        .paths(ProjectPathsConfig::hardhat(env!("CARGO_MANIFEST_DIR")).unwrap())
        .build()
        .unwrap();
    let output = project.compile().unwrap();
    
    // Tell Cargo that if a source file changes, to rerun this build script.
    project.rerun_if_sources_changed();
}