Commit Graph

66 Commits

Author SHA1 Message Date
Georgios Konstantopoulos e1476a1156
fix: remove redundant cache read (#627) 2021-11-26 19:02:18 +02:00
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
Rohit Narurkar 86522e2b9e
feat: verify checksum before project compilation (#614)
* 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
2021-11-26 12:30:14 +02:00
Matthias Seitz cd2c9f6dd1
feat: add cargo change detection support (#599)
* feat: add cargo change detection support

* chore: allow clippy main

* chore: remove doctest main
2021-11-20 16:47:36 +02:00
Georgios Konstantopoulos 8a3ee415b7
feat(solc): allow specifying solc version even if auto-detect enabled (#594) 2021-11-18 15:10:41 +02:00
Georgios Konstantopoulos b3fed152a4
fix(solc): do not unnecessarily query for solc version (#586)
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
2021-11-17 01:25:39 +02:00
Matthias Seitz 1da62d65d2
refactor!: make artifactoutput a trait (#579)
* 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>
2021-11-16 01:29:06 +02:00
Georgios Konstantopoulos 8f9c47dbdb
feat: auto-detect solc remappings (#574)
* feat: add remappings detection

* feat: add remappings to compiler settings

* fix: check for error if no contract was compiled

* feat: configure remappings and provide them to compiler settings

* test: check remappings

* chore: clippy lints

* fix: tests (#578)

* Update ethers-solc/src/remappings.rs

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2021-11-13 21:31:55 +02:00
Georgios Konstantopoulos bfdf70cbea
feat(solc): allow providing --allow-args (#553)
* feat(solc): allow providing additional arguments

* feat(solc): allow providing --allow-args

* feat: more allow paths integration (#565)

* feat: more allow paths integration

* Update ethers-solc/src/compile.rs

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>

* chore: only enable macros if feature is enabled

* test: add tests for multiple libs

* chore: fix solc test

* chore: only pas --allow-paths if there are any paths needed

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2021-11-08 22:11:45 +02:00
Georgios Konstantopoulos 23fb877c16
feat(solc): Multiple Solc Version detection (#551)
* 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>
2021-11-03 10:05:09 +02:00
Matthias Seitz 1cb43a3df3
feat: add solc svm find support (#547)
* 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
2021-10-31 16:41:36 +02:00
Georgios Konstantopoulos f0dea75219
feat: use ethers_solc::Solc instead of ethers_core::utils::Solc (#546)
* 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
2021-10-31 13:34:51 +02:00
Georgios Konstantopoulos 46bedb3282
feat: only compile changed files (#544) 2021-10-30 21:27:17 +03:00
Matthias Seitz 5c6ce6b0a1
feat: improved solc management (#539)
* 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>
2021-10-30 20:59:44 +03:00
Matthias Seitz dcf20022c6
chore: add rustfmt.toml (#537)
* chore: add rustfmt.toml

* rustfmt

* chore: Update readme with fmt info

* ci: update ci

* chore: rustfmt

* rustfmt

* rustfmt

* ci: install libudev

* chore(clippy): make clippy happy

* chore(clippy): make clippy happy

* revert ci

* ci: install libudev
2021-10-29 14:29:35 +02:00
Matthias Seitz 241491a237
feat: add ethers-solc crate (#522)
* feat: initial draft dedicated solc crate

* feat: add sources helper

* feat: more utility functions

* chore: more ergonomics

* chore: more ergonomics

* rustfmt

* feat: add solc error

* feat: replace eyre with thiserror

* fix: use serde default

* fix: compliant semver

* docs: fix comments
2021-10-26 14:28:10 +03:00