ethers-rs/ethers-solc
Agost Biro da0039aaea
fix: failing can_autodetect_dirs solc test (#1895) (#2052)
The test was failing for two reasons on macOS:

1. The build info directory was not created during the test.
2. Temporary directories are created with symbolic links on macOS and
the path canonicalization returns the given path if it doesn't exist.

This lead to a mismatch between the project root's canonical path (which
did exist and thus was a real path after canonicalization) and the build
info directory's canonical path (which did not exist and was a symbolic
link after canonicalization).

The fix is to create the build info directory to make sure its canonical
path matches the project root's canonical path.
2023-01-13 10:20:26 -08:00
..
benches chore: clippy (#1990) 2022-12-30 14:19:41 +02:00
src fix: failing can_autodetect_dirs solc test (#1895) (#2052) 2023-01-13 10:20:26 -08:00
test-data revert: Ast Artifact (#1966) 2022-12-22 18:22:11 +02:00
tests chore(clippy): make clippy happy (#1923) 2022-12-05 22:05:33 -08:00
Cargo.toml chore(deps): bump svm-rs (#2051) 2023-01-13 10:19:47 -08:00
README.md fmt: all (#1751) 2022-09-28 11:58:26 -07: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();
}