ethers-rs/ethers-solc
Mark Tyneway 1efdadefc0
ethers-solc: fix build info default directory (#1458)
* ethers-solc: fix build info default directory

This commit fixes the default behavior for the `build-info`
directory when it is unconfigured. It should end up in
the configured artifacts directory, taking into account
whatever the config for the artifacts directory is.
If the build info is specifically configured, then that
will take precendence over the default.

* chore: add changelog entry
2022-07-06 11:44:47 -07:00
..
benches refactor(solc): more temp project features (#778) 2022-01-10 21:43:34 +02:00
src ethers-solc: fix build info default directory (#1458) 2022-07-06 11:44:47 -07:00
test-data Add basic solc model checker options (#1258) 2022-05-13 13:29:13 -07:00
tests refactor(solc): unify find/remove api (#1449) 2022-07-04 11:53:49 -07:00
Cargo.toml chore(deps): bump once_cell from 1.12.0 to 1.13.0 (#1453) 2022-07-05 08:54:50 -07: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();
}