previously if 1 file changed, it'd overwrite the existing cache on disk with just
that 1 changed file. this change reads the cache from disk and merges it with the new checksums
* 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
* feat: verify checksum before project compilation
* fix: in case of a corrupt binary, avoid calling it to check version
* fix: cache releases in the global lazy
* chore: fix linting
* fix: replace a loop with straightforward if
* chore: latest svm
* fix: changes based on review comments
* chore: use published version of svm-rs
* chore: use published version of svm-rs
The parameter is not used in any useful way currently, and it prevents us from using clean installations of SVM
which do not have an instantiated /Users/gakonst/.svm directory
* feat: add artifacts trait
* add artifactsoutput trait
* deprecated old artifactoutput
* feat: better artifacts handling
* force update
* feat: update metadata artifacts
* feat: add default to types
* feat: make useliteralcontent optional
* feat: replace ProjectCompilerOutput with struct
* docs
* add output function
* feat: add Artifact trait for reading Abi/Bytes from an artifact
* feat(solc): replace () for empty artifacts with a conditional check
As discussed with @mattsse the abstraction here might not be super clean, so we should revisit this if we do not like it
* chore: fix doctest
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
When running integration tests, the `cfg(test)` is not triggered, so we
added a `tests` feature in the code. However, we did not include it
in the actual features of the crate, so it was not getting triggered
when the `--all-features` tests were running.
* test: ensure that compilation succeeds
* feat: add helper for parsing version req from a source
* feat: detect the latest compatible solc version for a VersionReq
* default to always enabling svm/async
* test: add project with multiple contract versions
* fix: always serde-default solc gas estimates
* fix: normalize evm version in settings before compiling
* feat: auto-detect version and compile if svm+async are on
* chore: warnings
* test: add a lock to ensure that there are no file conflicts when downloading solc
* test: add tests for finding solc installations
* chore: add features to ethers-rs config
* chore: s/first/latest on finding solc version fn docs
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
* feat: add solc svm find support
* feat: add svm install
* feat: add full feature
* make home non wasm32 only
* simplify features
* make compile with wasm target
* fix: doctests
* feat(ethers-solc): deserialize bytecode as bytes
* feat(ethers-solc): add method to fetch compact contract
* feat(ethers-solc): use Abi type instead of Vec<serde_json::Value>
* test(contract): use new Solc bindings
* test(middleware): use new Solc bindings
* chore: remove solc from ethers-core
* chore: remove concurrent setup code from ethers-core
* feat(ethers-solc): add ArtifactOutput::Nothing as a no-op artifact logger
* feat: add ethers-solc to top level crate
* examples: use new solc building pattern
* chore(solc): re-use opt str impl for error code decoding
* fix abigen example
* chore: fix doctests
* chore: remove setup feature
* fix: decode string to bytes correctly
* chore: clippy lints
* feat: improved solc management
* test: add basic test
* rustfmt
* rustfmt
* feat: add support for lib paths
* test: add dapp testing data
* feat: support dapp style libs
* fix: doc test
* use SOLC_path by default
* docs: import readme
* feat: add diagnostics
* chore: cleanup
* docs: update compile docs
* style: use red for error msg
* style: simplifiy error format
* chore: add newline on successful compiler run log
* feat: allow ignoring error codes so that they do not get logged
* chore: use solc 0.6.6 to match CI Version
* fix: make constructor public in hardhat tests
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>