feat: add cargo change detection support (#599)
* feat: add cargo change detection support * chore: allow clippy main * chore: remove doctest main
This commit is contained in:
parent
ffb1a8bf1d
commit
cd2c9f6dd1
|
@ -4,7 +4,9 @@ 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
|
||||
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
|
||||
|
||||
```toml
|
||||
[build-dependencies]
|
||||
|
@ -21,6 +23,8 @@ fn main() {
|
|||
.build()
|
||||
.unwrap();
|
||||
let output = project.compile().unwrap();
|
||||
println!("{}", output);
|
||||
|
||||
// Tell Cargo that if a source file changes, to rerun this build script.
|
||||
project.rerun_if_sources_changed();
|
||||
}
|
||||
```
|
|
@ -115,6 +115,30 @@ impl<Artifacts: ArtifactOutput> Project<Artifacts> {
|
|||
Source::read_all_from(self.paths.sources.as_path())
|
||||
}
|
||||
|
||||
/// This emits the cargo [`rerun-if-changed`](https://doc.rust-lang.org/cargo/reference/build-scripts.html#cargorerun-if-changedpath) instruction.
|
||||
/// Which tells Cargo to re-run the build script if a file inside the project's sources
|
||||
/// directory has changed.
|
||||
///
|
||||
/// Use this if you compile a project in a `build.rs` file.
|
||||
///
|
||||
/// # Example `build.rs` file
|
||||
///
|
||||
///
|
||||
/// ```no_run
|
||||
/// use ethers_solc::{Project, ProjectPathsConfig};
|
||||
/// // 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();
|
||||
/// ```
|
||||
pub fn rerun_if_sources_changed(&self) {
|
||||
println!("cargo:rerun-if-changed={}", self.paths.sources.display())
|
||||
}
|
||||
|
||||
/// Attempts to read all unique libraries that are used as imports like "hardhat/console.sol"
|
||||
fn resolved_libraries(
|
||||
&self,
|
||||
|
|
Loading…
Reference in New Issue