chore: update release process (#2278)
* chore: strip ethers prefix for the ethers-wasm example * chore: set publish to false and version to 0.0.0 for all example crates * chore: remove unused release helpers * chore: move CHANGELOG.md to CHANGELOG-OLD.md * chore: update lockfile and wasm renames * chore: renames * chore: use git-cliff for generating CHANGELOG.md * chore: renames * chore: update release.toml * chore: move examples script mv \ scripts/examples.sh \ bin/run_all_examples * chore: add release script * fix: update release script and document * fix: mv * docs: remove 'update changelog' in PR template
This commit is contained in:
parent
5879a84667
commit
f7a066e700
|
@ -29,5 +29,4 @@ the code change.
|
||||||
|
|
||||||
- [ ] Added Tests
|
- [ ] Added Tests
|
||||||
- [ ] Added Documentation
|
- [ ] Added Documentation
|
||||||
- [ ] Updated the changelog
|
|
||||||
- [ ] Breaking changes
|
- [ ] Breaking changes
|
||||||
|
|
|
@ -172,7 +172,7 @@ jobs:
|
||||||
with:
|
with:
|
||||||
node-version: 16
|
node-version: 16
|
||||||
- name: Run wasm example
|
- name: Run wasm example
|
||||||
working-directory: examples/ethers-wasm
|
working-directory: examples/wasm
|
||||||
run: |
|
run: |
|
||||||
yarn
|
yarn
|
||||||
yarn anvil &
|
yarn anvil &
|
||||||
|
@ -194,4 +194,4 @@ jobs:
|
||||||
run: ./.github/scripts/install_test_binaries.sh
|
run: ./.github/scripts/install_test_binaries.sh
|
||||||
- uses: Swatinem/rust-cache@v2
|
- uses: Swatinem/rust-cache@v2
|
||||||
- name: Build and run all examples
|
- name: Build and run all examples
|
||||||
run: ./scripts/examples.sh
|
run: ./bin/run_all_examples
|
||||||
|
|
|
@ -1,99 +0,0 @@
|
||||||
name: release
|
|
||||||
|
|
||||||
on:
|
|
||||||
schedule:
|
|
||||||
- cron: "0 0 * * 0"
|
|
||||||
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
release_type:
|
|
||||||
type: choice
|
|
||||||
description: Release type
|
|
||||||
options:
|
|
||||||
- major
|
|
||||||
- minor
|
|
||||||
- patch
|
|
||||||
- rc
|
|
||||||
- beta
|
|
||||||
- alpha
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
release:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
env:
|
|
||||||
CARGO_TOKEN: ${{ secrets.CARGO_TOKEN }}
|
|
||||||
RELEASE_TYPE: ${{ github.event.inputs.release_type }}
|
|
||||||
steps:
|
|
||||||
- name: Checkout sources
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
- name: Configure git
|
|
||||||
run: |
|
|
||||||
git config user.name github-actions
|
|
||||||
git config user.email github-actions@github.com
|
|
||||||
- name: Rust stable
|
|
||||||
uses: actions-rs/toolchain@v1
|
|
||||||
with:
|
|
||||||
profile: minimal
|
|
||||||
toolchain: stable
|
|
||||||
- uses: Swatinem/rust-cache@v1
|
|
||||||
with:
|
|
||||||
cache-on-failure: true
|
|
||||||
- name: Install cargo-release
|
|
||||||
uses: actions-rs/install@v0.1
|
|
||||||
with:
|
|
||||||
crate: cargo-release
|
|
||||||
version: latest
|
|
||||||
- name: Cargo login
|
|
||||||
run: |
|
|
||||||
cargo login $CARGO_TOKEN
|
|
||||||
- name: Dry-run cargo release
|
|
||||||
run: |
|
|
||||||
cargo release --workspace ${RELEASE_TYPE:-alpha} --exclude ethers-wasm
|
|
||||||
- name: Publish release
|
|
||||||
run: |
|
|
||||||
cargo release --workspace ${RELEASE_TYPE:-alpha} --exclude ethers-wasm --execute --no-confirm
|
|
||||||
- name: Setup node
|
|
||||||
uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
node-version: 14
|
|
||||||
- run: |
|
|
||||||
npm i semver
|
|
||||||
- name: Install git-cliff
|
|
||||||
uses: actions-rs/install@v0.1
|
|
||||||
with:
|
|
||||||
crate: git-cliff
|
|
||||||
version: latest
|
|
||||||
- name: Publish changelog
|
|
||||||
id: changelog
|
|
||||||
run: |
|
|
||||||
current_version=$(git tag --contains HEAD -l "v*" | head -1)
|
|
||||||
from_version=$(node .github/scripts/release-tag-from.js $current_version $RELEASE_TYPE)
|
|
||||||
echo from $from_version to $current_version
|
|
||||||
|
|
||||||
echo "::set-output name=release_version::$(echo $current_version)"
|
|
||||||
|
|
||||||
if git rev-parse "$from_version" >/dev/null 2>&1; then
|
|
||||||
echo "tag exists, can generate changelog";
|
|
||||||
else
|
|
||||||
echo "tag does not exist, cannot generate changelog, publish github release manually"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
git cliff $from_version..$current_version > GENERATED_CHANGELOG.md
|
|
||||||
cat GENERATED_CHANGELOG.md
|
|
||||||
- name: Create GitHub release
|
|
||||||
id: release
|
|
||||||
uses: actions/create-release@v1
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
RELEASE_VERSION: ${{ steps.changelog.outputs.release_version }}
|
|
||||||
with:
|
|
||||||
tag_name: ${{ env.RELEASE_VERSION }}
|
|
||||||
release_name: ${{ env.RELEASE_VERSION }}
|
|
||||||
body_path: GENERATED_CHANGELOG.md
|
|
||||||
prerelease: ${{ env.RELEASE_TYPE == 'alpha' }}
|
|
|
@ -0,0 +1,406 @@
|
||||||
|
# Changelog
|
||||||
|
|
||||||
|
The old `ethers-rs` changelog, that has been discontinued.
|
||||||
|
|
||||||
|
The new one is located [here](./CHANGELOG.md), which is automatically generated by [git-cliff](https://github.com/orhun/git-cliff).
|
||||||
|
|
||||||
|
## ethers-core
|
||||||
|
|
||||||
|
### Unreleased
|
||||||
|
|
||||||
|
- Add support for `ethlive` as a chain name [#2268](https://github.com/gakonst/ethers-rs/pull/2268)
|
||||||
|
- Make `Chain` more round-trip friendly [#2270](https://github.com/gakonst/ethers-rs/pull/2270)
|
||||||
|
- Add `other: OtherFields` to `TransactionReceipt` [#2209](https://github.com/gakonst/ethers-rs/pull/2209)
|
||||||
|
- Add `Signature::recover_typed_data` [#2120](https://github.com/gakonst/ethers-rs/pull/2120)
|
||||||
|
- Add `abi::encode_packed` [#2104](https://github.com/gakonst/ethers-rs/pull/2104)
|
||||||
|
- Add support for custom JavaScript tracer to `debug_traceCall` and `debug_traceTransaction` [#2064](https://github.com/gakonst/ethers-rs/pull/2064)
|
||||||
|
- Add a `Send` bound to the `IntoFuture` implementation of `ContractCall` [#2083](https://github.com/gakonst/ethers-rs/pull/2083)
|
||||||
|
- Bump [`svm-rs`](https://github.com/roynalnaruto/svm-rs) dependency to fix conflicts with Rust Crytpo packages [#2051](https://github.com/gakonst/ethers-rs/pull/2051)
|
||||||
|
- Avoid unnecessary allocations in `utils` [#2046](https://github.com/gakonst/ethers-rs/pull/2046)
|
||||||
|
- Add abigen support for hardhat generated bytecode json format [#2012](https://github.com/gakonst/ethers-rs/pull/2012)
|
||||||
|
- Fix typo in `RwClient` docs for `write_client` method.
|
||||||
|
- Add support for Geth `debug_traceCall` [#1949](https://github.com/gakonst/ethers-rs/pull/1949)
|
||||||
|
- Add support for Geth built-in tracer and config [#2121](https://github.com/gakonst/ethers-rs/pull/2121)
|
||||||
|
- Graceful handling of WebSocket transport errors [#1889](https://github.com/gakonst/ethers-rs/issues/1889) [#1815](https://github.com/gakonst/ethers-rs/issues/1815)
|
||||||
|
- `MiddlewareBuilder` trait to instantiate a `Provider` as `Middleware` layers.
|
||||||
|
- An `Event` builder can be instantiated specifying the event filter type, without the need to instantiate a contract.
|
||||||
|
- Add 'ethers_core::types::OpCode' and use in 'ethers_core::types::VMOperation' [#1857](https://github.com/gakonst/ethers-rs/issues/1857)
|
||||||
|
- Remove rust_decimals dependency for ethers-core
|
||||||
|
- Add support for numbers greater than 2^96 for `ethers_core::utils::parse_units` [#1822](https://github.com/gakonst/ethers-rs/issues/1822)
|
||||||
|
- Add comment about safety of u8 -> u64 cast in `ethers_core::types::Signature`
|
||||||
|
- Stop defaulting to the `"latest"` block in `eth_estimateGas` params [#1657](https://github.com/gakonst/ethers-rs/pull/1657)
|
||||||
|
- Fix geth trace types for debug_traceTransaction rpc
|
||||||
|
- Fix RLP decoding of legacy `Transaction`
|
||||||
|
- Fix RLP encoding of `TransactionReceipt` [#1661](https://github.com/gakonst/ethers-rs/pull/1661)
|
||||||
|
- Add `Unit8` helper type [#1639](https://github.com/gakonst/ethers-rs/pull/1639)
|
||||||
|
- Add `evm.deployedBytecode.immutableReferences` output selector [#1523](https://github.com/gakonst/ethers-rs/pull/1523)
|
||||||
|
- Added `get_erc1155_token_transfer_events` function for etherscan client [#1503](https://github.com/gakonst/ethers-rs/pull/1503)
|
||||||
|
- Add support for Geth `debug_traceTransaction` [#1469](https://github.com/gakonst/ethers-rs/pull/1469)
|
||||||
|
- Use correct, new transaction type for `typool_content` RPC endpoint [#1501](https://github.com/gakonst/ethers-rs/pull/1501)
|
||||||
|
- Fix the default config for generated `BuildInfo` [#1458](https://github.com/gakonst/ethers-rs/pull/1458)
|
||||||
|
- Allow configuration of the output directory of the generated `BuildInfo` [#1433](https://github.com/gakonst/ethers-rs/pull/1433)
|
||||||
|
- capture unknown fields in `Block` and `Transaction` type via new `OtherFields` type [#1423](https://github.com/gakonst/ethers-rs/pull/1423)
|
||||||
|
- Methods like `set_to()` from `TypedTransaction` can be chained
|
||||||
|
- Use H64 for Block Nonce [#1396](https://github.com/gakonst/ethers-rs/pull/1396)
|
||||||
|
- Add `as_*_mut` methods on `TypedTransaction`
|
||||||
|
[#1310](https://github.com/gakonst/ethers-rs/pull/1310)
|
||||||
|
- AWS EIP712 data signing no longer signs with EIP155
|
||||||
|
- Added Cronos testnet to etherscan options [#1276](https://github.com/gakonst/ethers-rs/pull/1276)
|
||||||
|
- Fix parsing of a pending block
|
||||||
|
[#1272](https://github.com/gakonst/ethers-rs/pull/1272)
|
||||||
|
- Removed Cronos mainnet beta from `is_legacy` [1246](https://github.com/gakonst/ethers-rs/pull/1246)
|
||||||
|
- Fix RLP decoding of `from` field for `Eip1559TransactionRequest` and
|
||||||
|
`Eip2930TransactionRequest`, remove `Eip1559TransactionRequest` `sighash`
|
||||||
|
method [#1180](https://github.com/gakonst/ethers-rs/pull/1180)
|
||||||
|
- Fix RLP encoding of absent access list in `Transaction` [1137](https://github.com/gakonst/ethers-rs/pull/1137)
|
||||||
|
- Pass compilation time as additional argument to `Reporter::on_solc_success` [#1098](https://github.com/gakonst/ethers-rs/pull/1098)
|
||||||
|
- Fix aws signer bug which maps un-normalized signature to error if no normalization occurs (in `aws::utils::decode_signature`)
|
||||||
|
- Implement signed transaction RLP decoding [#1096](https://github.com/gakonst/ethers-rs/pull/1096)
|
||||||
|
- `Transaction::from` will default to `Address::zero()`. Add `recover_from` and
|
||||||
|
`recover_from_mut` methods for recovering the sender from signature, and also
|
||||||
|
setting the same on tx [#1075](https://github.com/gakonst/ethers-rs/pull/1075).
|
||||||
|
- Add Etherscan account API endpoints [#939](https://github.com/gakonst/ethers-rs/pull/939)
|
||||||
|
- Add FTM Mainet and testnet to parse method "try_from" from Chain.rs and add cronos mainet and testnet to "from_str"
|
||||||
|
- Add FTM mainnet and testnet Multicall addresses [#927](https://github.com/gakonst/ethers-rs/pull/927)
|
||||||
|
- Add Cronos mainnet beta and testnet to the list of known chains
|
||||||
|
[#926](https://github.com/gakonst/ethers-rs/pull/926)
|
||||||
|
- `Chain::to_string` will return the same chain name as `Chain::from_str`
|
||||||
|
- Add `eth_syncing` [#848](https://github.com/gakonst/ethers-rs/pull/848)
|
||||||
|
- Fix overflow and possible divide-by-zero in `estimate_priority_fee`
|
||||||
|
- Add BSC mainnet and testnet to the list of known chains
|
||||||
|
[#831](https://github.com/gakonst/ethers-rs/pull/831)
|
||||||
|
- Returns error on invalid type conversion instead of panicking
|
||||||
|
[#691](https://github.com/gakonst/ethers-rs/pull/691/files)
|
||||||
|
- Change types mapping for solidity `bytes` to rust `ethers::core::Bytes` and
|
||||||
|
solidity `uint8[]` to rust `Vec<u8>`.
|
||||||
|
[#613](https://github.com/gakonst/ethers-rs/pull/613)
|
||||||
|
- Fix `format_units` to return a `String` of representing a decimal point float
|
||||||
|
such that the decimal places don't get truncated.
|
||||||
|
[#597](https://github.com/gakonst/ethers-rs/pull/597)
|
||||||
|
- Implement hex display format for `ethers::core::Bytes`
|
||||||
|
[#624](https://github.com/gakonst/ethers-rs/pull/624).
|
||||||
|
- Fix `fee_history` to first try with `block_count` encoded as a hex `QUANTITY`.
|
||||||
|
[#668](https://github.com/gakonst/ethers-rs/pull/668)
|
||||||
|
- Fix `fill_transaction` to set nonces in transactions, if the sender is known
|
||||||
|
and no nonce is specified
|
||||||
|
- Move `fill_transaction` implementation to the provider, to allow middleware
|
||||||
|
to properly override its behavior.
|
||||||
|
- Add informational messages to solc installation and compilation.
|
||||||
|
- Significantly refactor `MultiAbigen` module generation. Now allows for lib
|
||||||
|
generation, and does not make unnecessary disk writes.
|
||||||
|
[#854](https://github.com/gakonst/ethers-rs/pull/852)
|
||||||
|
- Refactor `ethers-contract-abigen` to use `eyre` instead of `anyhow` via
|
||||||
|
[#858](https://github.com/gakonst/ethers-rs/pull/858)
|
||||||
|
- Add `Deployer.send_with_receipt -> Result<(Contract, Receipt), Error>`
|
||||||
|
so that the receipt can be returned to the called when deploying
|
||||||
|
a contract [#865](https://github.com/gakonst/ethers-rs/pull/865)
|
||||||
|
- Add Arbitrum mainnet and testnet to the list of known chains
|
||||||
|
- Add ENS avatar and TXT records resolution
|
||||||
|
[#889](https://github.com/gakonst/ethers-rs/pull/889)
|
||||||
|
- Do not override gas limits provided by an outer middleware when including an EIP-2930 access list
|
||||||
|
[#901](https://github.com/gakonst/ethers-rs/pull/901)
|
||||||
|
- Add a getter to `ProjectCompileOutput` that returns a mapping of compiler
|
||||||
|
versions to a vector of name + contract struct tuples
|
||||||
|
[#908](https://github.com/gakonst/ethers-rs/pull/908)
|
||||||
|
- Add Yul compilation [#994](https://github.com/gakonst/ethers-rs/pull/994)
|
||||||
|
- Enforce commutativity of ENS reverse resolution
|
||||||
|
[#996](https://github.com/gakonst/ethers-rs/pull/996)
|
||||||
|
- Add `TransactionReceipt::to` and `TransactionReceipt::from`
|
||||||
|
[#1184](https://github.com/gakonst/ethers-rs/pull/1184)
|
||||||
|
- Add `From<H160>` and From<Vec<H160>> traits to `ValueOrArray<H160>` [#1199](https://github.com/gakonst/ethers-rs/pull/1200)
|
||||||
|
- Fix handling of Websocket connection errors [#1287](https://github.com/gakonst/ethers-rs/pull/1287)
|
||||||
|
- Add Arithmetic Shift Right operation for I256 [#1323](https://github.com/gakonst/ethers-rs/issues/1323)
|
||||||
|
- [#1535](https://github.com/gakonst/ethers-rs/pull/1535) Add support to Aurora and Aurora testnet networks.
|
||||||
|
- [#1632](https://github.com/gakonst/ethers-rs/pull/1632) Re-export `H32` from `ethabi`.
|
||||||
|
- [#1634](https://github.com/gakonst/ethers-rs/pull/1634) Derive missing `Clone`, `Copy` and `Debug` impls in ethers-etherscan.
|
||||||
|
- Bytes debug format now displays hex literals [#1658](https://github.com/gakonst/ethers-rs/pull/1658)
|
||||||
|
- [#1451](https://github.com/gakonst/ethers-rs/issues/1451) Add Arithmetic Shift Left operation for I256
|
||||||
|
- [#1860](https://github.com/gakonst/ethers-rs/pull/1860) Update I256 type documentation calling out the inconsistency
|
||||||
|
between its right shift operator and standard library numeric types.
|
||||||
|
- [#842](https://github.com/gakonst/ethers-rs/issues/842) Add support for I256 types in `parse_units` and `format_units`.
|
||||||
|
Added `twos_complement` function for I256.
|
||||||
|
- [#1934](https://github.com/gakonst/ethers-rs/pull/1934) Allow 16 calls in multicall.
|
||||||
|
- [#1941](https://github.com/gakonst/ethers-rs/pull/1941) Add `add_calls` and `call_array` for `Multicall`.
|
||||||
|
- Added basic event log filtering example.
|
||||||
|
|
||||||
|
## ethers-contract-abigen
|
||||||
|
|
||||||
|
### Unreleased
|
||||||
|
|
||||||
|
- Abigen now generates events with new `<B, M>` generic pattern [#2103](https://github.com/gakonst/ethers-rs/pull/2103)
|
||||||
|
- Fix Cargo.toml generation issue that could cause dependency conflicts [#1852](https://github.com/gakonst/ethers-rs/pull/1852)
|
||||||
|
- Use corresponding rust structs for event fields if they're solidity structs [#1674](https://github.com/gakonst/ethers-rs/pull/1674)
|
||||||
|
- Add `ContractFilter` to filter contracts in `MultiAbigen` [#1564](https://github.com/gakonst/ethers-rs/pull/1564)
|
||||||
|
- generate error bindings for custom errors [#1549](https://github.com/gakonst/ethers-rs/pull/1549)
|
||||||
|
- Support overloaded events
|
||||||
|
[#1233](https://github.com/gakonst/ethers-rs/pull/1233)
|
||||||
|
- Relax Clone requirements when Arc<Middleware> is used
|
||||||
|
[#1183](https://github.com/gakonst/ethers-rs/pull/1183)
|
||||||
|
- Generate a deploy function if bytecode is provided in the abigen! input (json artifact)
|
||||||
|
[#1030](https://github.com/gakonst/ethers-rs/pull/1030).
|
||||||
|
- Generate correct bindings of struct's field names that are reserved words
|
||||||
|
[#989](https://github.com/gakonst/ethers-rs/pull/989).
|
||||||
|
- Generate correct binding module names that are reserved words
|
||||||
|
[#1498](https://github.com/gakonst/ethers-rs/pull/1498). Note: this changes
|
||||||
|
generated module names to snake case. For example, `MyContract` is now
|
||||||
|
`my_contract` rather than `mycontract_mod`.
|
||||||
|
- The `Cargo.toml` generated by bindings now includes the `abigen` feature on
|
||||||
|
ethers. [#1508](https://github.com/gakonst/ethers-rs/pull/1508)
|
||||||
|
- More descriptive contract deserialization errors.
|
||||||
|
[#1633](https://github.com/gakonst/ethers-rs/pull/1633)
|
||||||
|
|
||||||
|
### 0.6.0
|
||||||
|
|
||||||
|
- Add `MultiAbigen` to generate a series of contract bindings that can be kept in the repo
|
||||||
|
[#724](https://github.com/gakonst/ethers-rs/pull/724).
|
||||||
|
- Add provided `event_derives` to call and event enums as well
|
||||||
|
[#721](https://github.com/gakonst/ethers-rs/pull/721).
|
||||||
|
- Implement snowtrace and polygonscan on par with the etherscan integration
|
||||||
|
[#666](https://github.com/gakonst/ethers-rs/pull/666).
|
||||||
|
|
||||||
|
## ethers-solc
|
||||||
|
|
||||||
|
### Unreleased
|
||||||
|
|
||||||
|
- Add `OutputContext` to `ArtifactOutput` trait
|
||||||
|
[#1621](https://github.com/gakonst/ethers-rs/pull/1621)
|
||||||
|
- On windows all paths in the `ProjectCompilerOutput` are now slashed by default
|
||||||
|
[#1540](https://github.com/gakonst/ethers-rs/pull/1540)
|
||||||
|
- `ArtifactOutput::write_extras` now takes the `Artifacts` directly
|
||||||
|
[#1491](https://github.com/gakonst/ethers-rs/pull/1491)
|
||||||
|
- Make `ethers-solc` optional dependency of `ethers`, needs `ethers-solc` feature to activate
|
||||||
|
[#1463](https://github.com/gakonst/ethers-rs/pull/1463)
|
||||||
|
- Add `rawMetadata:String` field to configurable contract output
|
||||||
|
[#1365](https://github.com/gakonst/ethers-rs/pull/1365)
|
||||||
|
- Use relative source paths and `solc --base-path`
|
||||||
|
[#1317](https://github.com/gakonst/ethers-rs/pull/1317)
|
||||||
|
- Save cache entry objects with relative paths
|
||||||
|
[#1307](https://github.com/gakonst/ethers-rs/pull/1307)
|
||||||
|
- Bundle svm, svm-builds and sha2 dependencies in new `svm-solc` feature
|
||||||
|
[#1071](https://github.com/gakonst/ethers-rs/pull/1071)
|
||||||
|
- Emit artifact files for source files without any ContractDefinition
|
||||||
|
[#1296](https://github.com/gakonst/ethers-rs/pull/1296)
|
||||||
|
- Wrap `ethabi::Contract` into new type `LosslessAbi` and `abi: Option<Abi>` with `abi: Option<LosslessAbi>` in `ConfigurableContractArtifact`
|
||||||
|
[#952](https://github.com/gakonst/ethers-rs/pull/952)
|
||||||
|
- Let `Project` take ownership of `ArtifactOutput` and change trait interface
|
||||||
|
[#907](https://github.com/gakonst/ethers-rs/pull/907)
|
||||||
|
- Total revamp of the `Project::compile` pipeline
|
||||||
|
[#802](https://github.com/gakonst/ethers-rs/pull/802)
|
||||||
|
- Support multiple versions of compiled contracts
|
||||||
|
- Breaking: deprecate hardhat cache file compatibility, cache file now tracks artifact paths and their versions
|
||||||
|
- Fix flatten replacement target location
|
||||||
|
[#846](https://github.com/gakonst/ethers-rs/pull/846)
|
||||||
|
- Fix duplicate files during flattening
|
||||||
|
[#813](https://github.com/gakonst/ethers-rs/pull/813)
|
||||||
|
- Add ability to flatten file imports
|
||||||
|
[#774](https://github.com/gakonst/ethers-rs/pull/774)
|
||||||
|
- Add dependency graph and resolve all imported libraryfiles
|
||||||
|
[#750](https://github.com/gakonst/ethers-rs/pull/750)
|
||||||
|
- `Remapping::find_many` does not return a `Result` anymore
|
||||||
|
[#707](https://github.com/gakonst/ethers-rs/pull/707)
|
||||||
|
- Add support for hardhat artifacts
|
||||||
|
[#677](https://github.com/gakonst/ethers-rs/pull/677)
|
||||||
|
- Add more utility functions to the `Artifact` trait
|
||||||
|
[#673](https://github.com/gakonst/ethers-rs/pull/673)
|
||||||
|
- Return cached artifacts from project `compile` when the cache only contains
|
||||||
|
some files
|
||||||
|
- Add support for library linking and make `Bytecode`'s `object` filed an
|
||||||
|
`enum BytecodeObject` [#656](https://github.com/gakonst/ethers-rs/pull/656).
|
||||||
|
- Nit: remove accidentally doubled double-quotes in an error message
|
||||||
|
- Fix when compiler-out metadata is empty and there's no internalType [#1182](https://github.com/gakonst/ethers-rs/pull/1182)
|
||||||
|
- Add basic `solc` model checker options.
|
||||||
|
[#1258](https://github.com/gakonst/ethers-rs/pull/1258)
|
||||||
|
|
||||||
|
### 0.6.0
|
||||||
|
|
||||||
|
- add `EthAbiCodec` proc macro to derive `AbiEncode` `AbiDecode` implementation
|
||||||
|
[#704](https://github.com/gakonst/ethers-rs/pull/704)
|
||||||
|
- move `AbiEncode` `AbiDecode` trait to ethers-core and implement for core types
|
||||||
|
[#531](https://github.com/gakonst/ethers-rs/pull/531)
|
||||||
|
- Add EIP-712 `sign_typed_data` signer method; add ethers-core type `Eip712`
|
||||||
|
trait and derive macro in ethers-derive-eip712
|
||||||
|
[#481](https://github.com/gakonst/ethers-rs/pull/481)
|
||||||
|
|
||||||
|
### 0.5.3
|
||||||
|
|
||||||
|
- Allow configuring the optimizer & passing arbitrary arguments to solc
|
||||||
|
[#427](https://github.com/gakonst/ethers-rs/pull/427)
|
||||||
|
- Decimal support for `ethers_core::utils::parse_units`
|
||||||
|
[#463](https://github.com/gakonst/ethers-rs/pull/463)
|
||||||
|
- Fixed Wei unit calculation in `Units`
|
||||||
|
[#460](https://github.com/gakonst/ethers-rs/pull/460)
|
||||||
|
- Add `ethers_core::utils::get_create2_address_from_hash`
|
||||||
|
[#444](https://github.com/gakonst/ethers-rs/pull/444)
|
||||||
|
- Bumped ethabi to 0.15.0 and fixing breaking changes
|
||||||
|
[#469](https://github.com/gakonst/ethers-rs/pull/469),
|
||||||
|
[#448](https://github.com/gakonst/ethers-rs/pull/448),
|
||||||
|
[#445](https://github.com/gakonst/ethers-rs/pull/445)
|
||||||
|
|
||||||
|
### 0.5.2
|
||||||
|
|
||||||
|
- Correctly RLP Encode transactions as received from the mempool
|
||||||
|
([#415](https://github.com/gakonst/ethers-rs/pull/415))
|
||||||
|
|
||||||
|
## ethers-providers
|
||||||
|
|
||||||
|
### Unreleased
|
||||||
|
|
||||||
|
- Breaking: WS now includes reconnection logic and a changed `connect`
|
||||||
|
interface. Old behavior can be accessed via the `legacy_ws` feature
|
||||||
|
[#2181](https://github.com/gakonst/ethers-rs/pull/2181)
|
||||||
|
- Re-organize the crate. #[2150](https://github.com/gakonst/ethers-rs/pull/2159)
|
||||||
|
- Convert provider errors to arbitrary middleware errors
|
||||||
|
[#1920](https://github.com/gakonst/ethers-rs/pull/1920)
|
||||||
|
- Add a subset of the `admin` namespace
|
||||||
|
[1880](https://github.com/gakonst/ethers-rs/pull/1880)
|
||||||
|
- Return String for net version
|
||||||
|
[1376](https://github.com/gakonst/ethers-rs/pull/1376)
|
||||||
|
- Stream of paginated logs that load logs in small pages
|
||||||
|
[1285](https://github.com/gakonst/ethers-rs/pull/1285)
|
||||||
|
- Load previous logs before subscribing to new logs in case fromBlock is set
|
||||||
|
[1264](https://github.com/gakonst/ethers-rs/pull/1264)
|
||||||
|
- Add retries to the pending transaction future
|
||||||
|
[1221](https://github.com/gakonst/ethers-rs/pull/1221)
|
||||||
|
- Add support for basic and bearer authentication in http and non-wasm websockets.
|
||||||
|
[829](https://github.com/gakonst/ethers-rs/pull/829)
|
||||||
|
- Export `ethers_providers::IpcError` and `ethers_providers::QuorumError`
|
||||||
|
[1012](https://github.com/gakonst/ethers-rs/pull/1012)
|
||||||
|
|
||||||
|
### 0.6.0
|
||||||
|
|
||||||
|
- re-export error types for `Http` and `Ws` providers in
|
||||||
|
[#570](https://github.com/gakonst/ethers-rs/pull/570)
|
||||||
|
- add a method on the `Middleware` to broadcast a tx with a series of escalating
|
||||||
|
gas prices via [#566](https://github.com/gakonst/ethers-rs/pull/566)
|
||||||
|
- Remove unnecessary `Serialize` constraint to `R` (the Response type) in the
|
||||||
|
`request` method of `JsonRpcClient`.
|
||||||
|
- Fix `http Provider` data race when generating new request `id`s.
|
||||||
|
- Add support for `net_version` RPC method.
|
||||||
|
[595](https://github.com/gakonst/ethers-rs/pull/595)
|
||||||
|
- Add support for `evm_snapshot` and `evm_revert` dev RPC methods.
|
||||||
|
[640](https://github.com/gakonst/ethers-rs/pull/640)
|
||||||
|
|
||||||
|
### 0.5.3
|
||||||
|
|
||||||
|
- Expose `ens` module [#435](https://github.com/gakonst/ethers-rs/pull/435)
|
||||||
|
- Add `eth_getProof` [#459](https://github.com/gakonst/ethers-rs/pull/459)
|
||||||
|
|
||||||
|
### 0.5.2
|
||||||
|
|
||||||
|
- Set resolved ENS name during gas estimation
|
||||||
|
([1e5a9e](https://github.com/gakonst/ethers-rs/commit/1e5a9efb3c678eecd43d5c341b4932da35445831))
|
||||||
|
|
||||||
|
## ethers-signers
|
||||||
|
|
||||||
|
### Unreleased
|
||||||
|
|
||||||
|
- fix: `LedgerSigner` has improved tracing and a ledger app bug mitigation
|
||||||
|
[#2192](https://github.com/gakonst/ethers-rs/pull/2192)
|
||||||
|
- `eth-keystore-rs` crate updated. Allow an optional name for the to-be-generated
|
||||||
|
keystore file [#910](https://github.com/gakonst/ethers-rs/pull/910)
|
||||||
|
- [1983](https://github.com/gakonst/ethers-rs/pull/1983) Added a `from_bytes` function for the `Wallet` type.
|
||||||
|
- Allow parsing of private key that has `0x` prefix
|
||||||
|
[#2037](https://github.com/gakonst/ethers-rs/pull/2037)
|
||||||
|
|
||||||
|
### 0.6.0
|
||||||
|
|
||||||
|
- `LocalWallet::new_keystore` now returns a tuple `(LocalWallet, String)`
|
||||||
|
instead of `LocalWallet`, where the string represents the UUID of the newly
|
||||||
|
created encrypted JSON keystore. The JSON keystore is stored as a file
|
||||||
|
`/dir/uuid`. The issue [#557](https://github.com/gakonst/ethers-rs/issues/557)
|
||||||
|
is addressed [#559](https://github.com/gakonst/ethers-rs/pull/559)
|
||||||
|
|
||||||
|
## ethers-contract
|
||||||
|
|
||||||
|
### Unreleased
|
||||||
|
|
||||||
|
- (Breaking) Add `Revert` to `ContractError`. Add `impl EthError for String`.
|
||||||
|
Modify existing `ContractError` variants to prevent accidental improper
|
||||||
|
usage. Change `MulticallError` to use `ContractError::Revert`. Add
|
||||||
|
convenience methods to decode errors from reverts.
|
||||||
|
[#2172](https://github.com/gakonst/ethers-rs/pull/2172)
|
||||||
|
- (Breaking) Improve Multicall result handling
|
||||||
|
[#2164](https://github.com/gakonst/ethers-rs/pull/2105)
|
||||||
|
- (Breaking) Make `Event` objects generic over borrow & remove lifetime
|
||||||
|
[#2105](https://github.com/gakonst/ethers-rs/pull/2105)
|
||||||
|
- Make `Factory` objects generic over the borrow trait, to allow non-arc mware
|
||||||
|
[#2103](https://github.com/gakonst/ethers-rs/pull/2103)
|
||||||
|
- Make `Contract` objects generic over the borrow trait, to allow non-arc mware
|
||||||
|
[#2082](https://github.com/gakonst/ethers-rs/pull/2082)
|
||||||
|
- Return pending transaction from `Multicall::send`
|
||||||
|
[#2044](https://github.com/gakonst/ethers-rs/pull/2044)
|
||||||
|
- Add abigen to default features
|
||||||
|
[#1684](https://github.com/gakonst/ethers-rs/pull/1684)
|
||||||
|
- Add extra Multicall helper methods
|
||||||
|
[#1666](https://github.com/gakonst/ethers-rs/pull/1666)
|
||||||
|
- Update Multicall to Multicall3
|
||||||
|
[#1584](https://github.com/gakonst/ethers-rs/pull/1584)
|
||||||
|
- Add `Event::stream_with_meta` and `Event::subscribe_with_meta`
|
||||||
|
[#1483](https://github.com/gakonst/ethers-rs/pull/1483)
|
||||||
|
- Added tx builder methods to `ContractFactory`
|
||||||
|
[#1289](https://github.com/gakonst/ethers-rs/pull/1289)
|
||||||
|
- Relax Clone requirements when Arc<Middleware> is used
|
||||||
|
[#1183](https://github.com/gakonst/ethers-rs/pull/1183)
|
||||||
|
- Add `EventStream::select` to combine streams with different event types
|
||||||
|
[#725](https://github.com/gakonst/ethers-rs/pull/725)
|
||||||
|
- Substitute output tuples with rust struct types for function calls
|
||||||
|
[#664](https://github.com/gakonst/ethers-rs/pull/664)
|
||||||
|
- Add AbiType implementation during EthAbiType expansion
|
||||||
|
[#647](https://github.com/gakonst/ethers-rs/pull/647)
|
||||||
|
- fix Etherscan conditional HTTP support
|
||||||
|
[#632](https://github.com/gakonst/ethers-rs/pull/632)
|
||||||
|
- use `CARGO_MANIFEST_DIR` as root for relative paths in abigen
|
||||||
|
[#631](https://github.com/gakonst/ethers-rs/pull/631)
|
||||||
|
|
||||||
|
### 0.6.0
|
||||||
|
|
||||||
|
- Provide a way to opt out of networking support in abigen proc macro with
|
||||||
|
`abigen-offline` feature [#580](https://github.com/gakonst/ethers-rs/pull/580)
|
||||||
|
- Add `.call()` method to `Deployer` for performing dry runs of contract
|
||||||
|
deployments. [#554](https://github.com/gakonst/ethers-rs/pull/554)
|
||||||
|
- Improve error message from failure in `ethers_contract_abigen::Source::parse`
|
||||||
|
[#552](https://github.com/gakonst/ethers-rs/pull/552)
|
||||||
|
- use enumerated aliases for overloaded functions
|
||||||
|
[#545](https://github.com/gakonst/ethers-rs/pull/545)
|
||||||
|
- add `EthCall` trait and derive macro which generates matching structs for
|
||||||
|
contract calls [#517](https://github.com/gakonst/ethers-rs/pull/517)
|
||||||
|
- Use rust types as contract function inputs for human readable abi
|
||||||
|
[#482](https://github.com/gakonst/ethers-rs/pull/482)
|
||||||
|
- `abigen!` now generates `Display` for all events using the new `EthDisplay`
|
||||||
|
macro [#513](https://github.com/gakonst/ethers-rs/pull/513)
|
||||||
|
- `abigen!` now supports overloaded functions natively
|
||||||
|
[#501](https://github.com/gakonst/ethers-rs/pull/501)
|
||||||
|
- `abigen!` now supports multiple contracts
|
||||||
|
[#498](https://github.com/gakonst/ethers-rs/pull/498)
|
||||||
|
|
||||||
|
### Unreleased
|
||||||
|
|
||||||
|
### 0.5.3
|
||||||
|
|
||||||
|
- (De)Tokenize structs and events with only a single field as `Token:Tuple`
|
||||||
|
([#417](https://github.com/gakonst/ethers-rs/pull/417))
|
||||||
|
|
||||||
|
## ethers-middleware
|
||||||
|
|
||||||
|
### Unreleased
|
||||||
|
|
||||||
|
- Added `openssl` and `rustls` feature flags
|
||||||
|
[#1961](https://github.com/gakonst/ethers-rs/pull/1961)
|
||||||
|
- Relax Clone requirements when Arc<Middleware> is used
|
||||||
|
[#1183](https://github.com/gakonst/ethers-rs/pull/1183)
|
||||||
|
- Ensure a consistent chain ID between a Signer and Provider in SignerMiddleware
|
||||||
|
[#1095](https://gakonst/ethers-rs/pull/1095)
|
||||||
|
- Add BlockNative gas oracle [#1175](https://github.com/gakonst/ethers-rs/pull/1175)
|
||||||
|
|
||||||
|
### 0.6.0
|
||||||
|
|
||||||
|
- add the missing constructor for `Timelag` middleware via
|
||||||
|
[#568](https://github.com/gakonst/ethers-rs/pull/568)
|
||||||
|
- Removes GasNow as a gas price oracle
|
||||||
|
[#508](https://github.com/gakonst/ethers-rs/pull/508)
|
||||||
|
- add initialize_nonce public function to initialize NonceMiddleManager
|
||||||
|
|
||||||
|
### 0.5.3
|
||||||
|
|
||||||
|
- Added Time Lagged middleware
|
||||||
|
[#457](https://github.com/gakonst/ethers-rs/pull/457)
|
2358
CHANGELOG.md
2358
CHANGELOG.md
File diff suppressed because it is too large
Load Diff
|
@ -134,14 +134,13 @@ include one or more tests to ensure that ethers-rs does not regress in the futur
|
||||||
#### Unit Tests
|
#### Unit Tests
|
||||||
|
|
||||||
Functions which have very specific tasks should be unit tested. We encourage using
|
Functions which have very specific tasks should be unit tested. We encourage using
|
||||||
table tests to cover a large number of cases in a succinct readable manner. A good example
|
table tests to cover a large number of cases in a succinct readable manner. A good
|
||||||
is the [create2](https://github.com/gakonst/ethers-rs/blob/1d7bdef0bd792867454da28c4e9c193681295fb2/ethers-core/src/utils/mod.rs#L110-L163) unit tests.
|
example is the [utils](./ethers-core/src/utils/mod.rs#L647) unit tests.
|
||||||
|
|
||||||
#### Integration tests
|
#### Integration tests
|
||||||
|
|
||||||
Integration tests go in the same crate as the code they are testing. Each sub
|
Integration tests go in the same crate as the code they are testing, in the
|
||||||
crate should have a `dev-dependency` on `ethers` itself. This makes all
|
`tests/it/` directory.
|
||||||
utilities available to use in tests, no matter the crate being tested.
|
|
||||||
|
|
||||||
The best strategy for writing a new integration test is to look at existing
|
The best strategy for writing a new integration test is to look at existing
|
||||||
integration tests in the crate and follow the style.
|
integration tests in the crate and follow the style.
|
||||||
|
@ -155,27 +154,23 @@ that the example is correct and provides additional test coverage.
|
||||||
The trick to documentation tests is striking a balance between being succinct
|
The trick to documentation tests is striking a balance between being succinct
|
||||||
for a reader to understand and actually testing the API.
|
for a reader to understand and actually testing the API.
|
||||||
|
|
||||||
Same as with integration tests, when writing a documentation test, the full
|
|
||||||
`ethers` crate is available. This is especially useful for getting access to the
|
|
||||||
runtime to run the example.
|
|
||||||
|
|
||||||
The documentation tests will be visible from both the crate specific
|
The documentation tests will be visible from both the crate specific
|
||||||
documentation **and** the `ethers` facade documentation via the re-export. The
|
documentation **and** the `ethers` facade documentation via the re-export. The
|
||||||
example should be written from the point of view of a user that is using the
|
example should be written from the point of view of a user that is using the
|
||||||
`ethers` crate. As such, the example should use the API via the facade and not by
|
`ethers` crate.
|
||||||
directly referencing the crate.
|
|
||||||
|
|
||||||
The type level example for `ethers_providers::Provider` provides a good example of a
|
The type level example for `ethers_providers::Provider` provides a good example of a
|
||||||
documentation test:
|
documentation test:
|
||||||
|
|
||||||
````rust
|
````rust
|
||||||
/// ```no_run
|
/// ```no_run
|
||||||
/// use ethers::providers::{JsonRpcClient, Provider, Http};
|
/// # async fn foo() -> Result<(), Box<dyn std::error::Error>> {
|
||||||
/// use std::convert::TryFrom;
|
/// use ethers_providers::{Middleware, Provider, Http};
|
||||||
///
|
///
|
||||||
/// let provider = Provider::<Http>::try_from("https://eth.llamarpc.com").expect("could not instantiate HTTP Provider");
|
/// let provider = Provider::<Http>::try_from(
|
||||||
|
/// "https://eth.llamarpc.com"
|
||||||
|
/// ).expect("could not instantiate HTTP Provider");
|
||||||
///
|
///
|
||||||
/// # async fn foo<P: JsonRpcClient>(provider: &Provider<P>) -> Result<(), Box<dyn std::error::Error>> {
|
|
||||||
/// let block = provider.get_block(100u64).await?;
|
/// let block = provider.get_block(100u64).await?;
|
||||||
/// println!("Got block: {}", serde_json::to_string(&block)?);
|
/// println!("Got block: {}", serde_json::to_string(&block)?);
|
||||||
/// # Ok(())
|
/// # Ok(())
|
||||||
|
@ -205,52 +200,15 @@ notes about [commit squashing](#commit-squashing)).
|
||||||
|
|
||||||
#### Commit message guidelines
|
#### Commit message guidelines
|
||||||
|
|
||||||
A good commit message should describe what changed and why.
|
Commit messages should follow the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/)
|
||||||
|
specification.
|
||||||
|
|
||||||
1. The first line should:
|
Here's a few examples from the master branch's commit log:
|
||||||
|
|
||||||
- contain a short description of the change (preferably 50 characters or less,
|
- feat(abigen): support empty events
|
||||||
and no more than 72 characters)
|
- chore: bump crypto deps
|
||||||
- be entirely in lowercase with the exception of proper nouns, acronyms, and
|
- test: simplify test cleanup
|
||||||
the words that refer to code, like function/variable names
|
- fmt: run rustfmt
|
||||||
- be prefixed with the name of the sub crate being changed (without the `ethers-`
|
|
||||||
prefix) and start with an imperative verb. If modifying `ethers` proper,
|
|
||||||
omit the crate prefix.
|
|
||||||
|
|
||||||
Examples:
|
|
||||||
|
|
||||||
- providers: introduce ENS querying for names and addresses
|
|
||||||
- re-export the abi, types and utils modules from `ethers_core`
|
|
||||||
|
|
||||||
2. Keep the second line blank.
|
|
||||||
3. Wrap all other lines at 72 columns (except for long URLs).
|
|
||||||
4. If your patch fixes an open issue, you can add a reference to it at the end
|
|
||||||
of the log. Use the `Fixes: #` prefix and the issue number. For other
|
|
||||||
references use `Refs: #`. `Refs` may include multiple issues, separated by a
|
|
||||||
comma.
|
|
||||||
|
|
||||||
Examples:
|
|
||||||
|
|
||||||
- `Fixes: #1337`
|
|
||||||
- `Refs: #1234`
|
|
||||||
|
|
||||||
Sample complete commit message:
|
|
||||||
|
|
||||||
```txt
|
|
||||||
subcrate: explain the commit in one line
|
|
||||||
|
|
||||||
Body of commit message is a few lines of text, explaining things
|
|
||||||
in more detail, possibly giving some background about the issue
|
|
||||||
being fixed, etc.
|
|
||||||
|
|
||||||
The body of the commit message can be several paragraphs, and
|
|
||||||
please do proper word-wrap and keep columns shorter than about
|
|
||||||
72 characters or so. That way, `git log` will show things
|
|
||||||
nicely even when it is indented.
|
|
||||||
|
|
||||||
Fixes: #1337
|
|
||||||
Refs: #453, #154
|
|
||||||
```
|
|
||||||
|
|
||||||
### Opening the Pull Request
|
### Opening the Pull Request
|
||||||
|
|
||||||
|
@ -380,17 +338,14 @@ When releasing the workspace:
|
||||||
existing APIs. If so, resolve those issues and make a `minor` change
|
existing APIs. If so, resolve those issues and make a `minor` change
|
||||||
release. Otherwise, if it is necessary to make a breaking release, make a
|
release. Otherwise, if it is necessary to make a breaking release, make a
|
||||||
`major` change release.
|
`major` change release.
|
||||||
2. **Dry run the release** by running `cargo release --workspace <release_type>`
|
2. **Dry run the release.** Running the `cargo release` command without the
|
||||||
3. **Update the changelog for the crate.** Changelog for all crates go in
|
`--execute` flag will perform a dry run.
|
||||||
[`CHANGELOG.md`](./CHANGELOG.md). Any unreleased changes changelogs should
|
3. **Release the crate.**
|
||||||
be moved to respective crates released changelogs. Change descriptions
|
Run the `bin/release` script with the `--execute` flag.
|
||||||
may be taken from the Git history, but should be edited to ensure a consistent
|
This will update the package versions in the relevant manifests, create
|
||||||
format, based on [Keep A Changelog][keep-a-changelog]. Other entries in that
|
git tags, automatically generate the [`CHANGELOG.md`](./CHANGELOG.md) file
|
||||||
crate's changelog may also be used for reference.
|
with [git-cliff], and finally publish the crates to `crates.io`.
|
||||||
4. **Release the crate.** Run the following command:
|
For more information, see the top comment in the script file.
|
||||||
|
|
||||||
```bash
|
|
||||||
cargo release --workspace <release_type> --execute
|
|
||||||
```
|
|
||||||
|
|
||||||
[keep-a-changelog]: https://github.com/olivierlacan/keep-a-changelog/blob/master/CHANGELOG.md
|
[keep-a-changelog]: https://github.com/olivierlacan/keep-a-changelog/blob/master/CHANGELOG.md
|
||||||
|
[git-cliff]: https://github.com/orhun/git-cliff
|
||||||
|
|
|
@ -1497,25 +1497,9 @@ dependencies = [
|
||||||
"yansi",
|
"yansi",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "ethers-wasm"
|
|
||||||
version = "2.0.0"
|
|
||||||
dependencies = [
|
|
||||||
"console_error_panic_hook",
|
|
||||||
"ethers",
|
|
||||||
"hex",
|
|
||||||
"serde",
|
|
||||||
"serde-wasm-bindgen",
|
|
||||||
"serde_json",
|
|
||||||
"wasm-bindgen",
|
|
||||||
"wasm-bindgen-futures",
|
|
||||||
"wasm-bindgen-test",
|
|
||||||
"web-sys",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "examples-anvil"
|
name = "examples-anvil"
|
||||||
version = "2.0.0"
|
version = "0.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ethers",
|
"ethers",
|
||||||
"eyre",
|
"eyre",
|
||||||
|
@ -1524,14 +1508,14 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "examples-big-numbers"
|
name = "examples-big-numbers"
|
||||||
version = "2.0.0"
|
version = "0.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ethers",
|
"ethers",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "examples-contracts"
|
name = "examples-contracts"
|
||||||
version = "2.0.0"
|
version = "0.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ethers",
|
"ethers",
|
||||||
"eyre",
|
"eyre",
|
||||||
|
@ -1542,7 +1526,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "examples-events"
|
name = "examples-events"
|
||||||
version = "2.0.0"
|
version = "0.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ethers",
|
"ethers",
|
||||||
"eyre",
|
"eyre",
|
||||||
|
@ -1565,7 +1549,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "examples-middleware"
|
name = "examples-middleware"
|
||||||
version = "2.0.0"
|
version = "0.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"ethers",
|
"ethers",
|
||||||
|
@ -1578,7 +1562,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "examples-providers"
|
name = "examples-providers"
|
||||||
version = "2.0.0"
|
version = "0.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"ethers",
|
"ethers",
|
||||||
|
@ -1593,7 +1577,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "examples-queries"
|
name = "examples-queries"
|
||||||
version = "2.0.0"
|
version = "0.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ethers",
|
"ethers",
|
||||||
"eyre",
|
"eyre",
|
||||||
|
@ -1604,7 +1588,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "examples-subscriptions"
|
name = "examples-subscriptions"
|
||||||
version = "2.0.0"
|
version = "0.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ethers",
|
"ethers",
|
||||||
"eyre",
|
"eyre",
|
||||||
|
@ -1615,7 +1599,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "examples-transactions"
|
name = "examples-transactions"
|
||||||
version = "2.0.0"
|
version = "0.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ethers",
|
"ethers",
|
||||||
"eyre",
|
"eyre",
|
||||||
|
@ -1626,7 +1610,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "examples-wallets"
|
name = "examples-wallets"
|
||||||
version = "2.0.0"
|
version = "0.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ethers",
|
"ethers",
|
||||||
"eyre",
|
"eyre",
|
||||||
|
@ -1635,6 +1619,22 @@ dependencies = [
|
||||||
"tokio",
|
"tokio",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "examples-wasm"
|
||||||
|
version = "0.0.0"
|
||||||
|
dependencies = [
|
||||||
|
"console_error_panic_hook",
|
||||||
|
"ethers",
|
||||||
|
"hex",
|
||||||
|
"serde",
|
||||||
|
"serde-wasm-bindgen",
|
||||||
|
"serde_json",
|
||||||
|
"wasm-bindgen",
|
||||||
|
"wasm-bindgen-futures",
|
||||||
|
"wasm-bindgen-test",
|
||||||
|
"web-sys",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "eyre"
|
name = "eyre"
|
||||||
version = "0.6.8"
|
version = "0.6.8"
|
||||||
|
|
|
@ -134,7 +134,7 @@ ethers = { version = "1.0.2", features = ["openssl"] }
|
||||||
|
|
||||||
## Note on WASM and FFI bindings
|
## Note on WASM and FFI bindings
|
||||||
|
|
||||||
You should be able to build a wasm app that uses ethers-rs (see the [example](./examples/ethers-wasm) for reference). If ethers fails to
|
You should be able to build a wasm app that uses ethers-rs (see the [example](./examples/wasm) for reference). If ethers fails to
|
||||||
compile in WASM, please
|
compile in WASM, please
|
||||||
[open an issue](https://github.com/gakonst/ethers-rs/issues/new/choose).
|
[open an issue](https://github.com/gakonst/ethers-rs/issues/new/choose).
|
||||||
There is currently no plan to provide an official JS/TS-accessible library
|
There is currently no plan to provide an official JS/TS-accessible library
|
||||||
|
|
119
bin/publish
119
bin/publish
|
@ -1,119 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
USAGE="Publish a new release of a ethers-rs crate
|
|
||||||
USAGE:
|
|
||||||
$(basename "$0") [OPTIONS] [CRATE] [VERSION]
|
|
||||||
OPTIONS:
|
|
||||||
-v, --verbose Use verbose Cargo output
|
|
||||||
-d, --dry-run Perform a dry run (do not publish or tag the release)
|
|
||||||
-h, --help Show this help text and exit"
|
|
||||||
|
|
||||||
DRY_RUN=""
|
|
||||||
VERBOSE=""
|
|
||||||
|
|
||||||
err() {
|
|
||||||
echo -e "\e[31m\e[1merror:\e[0m $@" 1>&2;
|
|
||||||
}
|
|
||||||
|
|
||||||
status() {
|
|
||||||
WIDTH=12
|
|
||||||
printf "\e[32m\e[1m%${WIDTH}s\e[0m %s\n" "$1" "$2"
|
|
||||||
}
|
|
||||||
|
|
||||||
verify() {
|
|
||||||
status "Verifying" "if $CRATE v$VERSION can be released"
|
|
||||||
ACTUAL=$(cargo pkgid | sed -n 's/.*#\(.*\)/\1/p')
|
|
||||||
|
|
||||||
if [ "$ACTUAL" != "$VERSION" ]; then
|
|
||||||
err "expected to release version $VERSION, but Cargo.toml contained $ACTUAL"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if git tag -l | grep -Fxq "$TAG" ; then
|
|
||||||
err "git tag \`$TAG\` already exists"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
PATH_DEPS=$(grep -F "path = \"" Cargo.toml | sed -e 's/^/ /')
|
|
||||||
if [ -n "$PATH_DEPS" ]; then
|
|
||||||
err "crate \`$CRATE\` contained path dependencies:\n$PATH_DEPS"
|
|
||||||
echo "path dependencies must be removed prior to release"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
release() {
|
|
||||||
status "Releasing" "$CRATE v$VERSION"
|
|
||||||
cargo package $VERBOSE
|
|
||||||
cargo publish $VERBOSE $DRY_RUN
|
|
||||||
|
|
||||||
status "Tagging" "$TAG"
|
|
||||||
if [ -n "$DRY_RUN" ]; then
|
|
||||||
echo "# git tag $TAG && git push --tags"
|
|
||||||
else
|
|
||||||
git tag "$TAG" && git push --tags
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
while [[ $# -gt 0 ]]
|
|
||||||
do
|
|
||||||
|
|
||||||
case "$1" in
|
|
||||||
-h|--help)
|
|
||||||
echo "$USAGE"
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
-v|--verbose)
|
|
||||||
VERBOSE="--verbose"
|
|
||||||
set +x
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
-d|--dry-run)
|
|
||||||
DRY_RUN="--dry-run"
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
-*)
|
|
||||||
err "unknown flag \"$1\""
|
|
||||||
echo "$USAGE"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
*) # crate or version
|
|
||||||
if [ -z "$CRATE" ]; then
|
|
||||||
CRATE="$1"
|
|
||||||
elif [ -z "$VERSION" ]; then
|
|
||||||
VERSION="$1"
|
|
||||||
else
|
|
||||||
err "unknown positional argument \"$1\""
|
|
||||||
echo "$USAGE"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
# set -- "${POSITIONAL[@]}"
|
|
||||||
|
|
||||||
if [ -z "$VERSION" ]; then
|
|
||||||
err "no version specified!"
|
|
||||||
HELP=1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$CRATE" ]; then
|
|
||||||
TAG="$CRATE-$VERSION"
|
|
||||||
else
|
|
||||||
err "no crate specified!"
|
|
||||||
HELP=1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$HELP" ]; then
|
|
||||||
echo "$USAGE"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -d "$CRATE" ]; then
|
|
||||||
(cd "$CRATE" && verify && release )
|
|
||||||
else
|
|
||||||
err "no such crate \"$CRATE\""
|
|
||||||
exit 1
|
|
||||||
fi
|
|
|
@ -0,0 +1,131 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# Creates a new release of all the ethers crates in the workspace
|
||||||
|
#
|
||||||
|
# Note that this intended be run with the --execute flag, as the dry run will
|
||||||
|
# perform all the checks that a normal `cargo release` command would.
|
||||||
|
# This is because this script will execute only a few of the steps because it
|
||||||
|
# has to run `git-cliff` to create the changelog in between steps, and exclude
|
||||||
|
# all the example crates from the version bump.
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
info() {
|
||||||
|
printf "\e[34;1minfo\e[0m: %s\n" "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
throw() {
|
||||||
|
printf "\e[31;1merror\e[0m: %s\n\n%s\n" "$1" "$USAGE" 1>&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
exec_or_print() {
|
||||||
|
if [ "$EXECUTE" ]; then
|
||||||
|
"$@"
|
||||||
|
else
|
||||||
|
echo "Skipping due to dry run. Command:" "$@"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
USAGE="Create a new release of the ethers workspace crates
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
$(basename "$0") [OPTIONS] <VERSION>
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-s, --sign Sign commits and tag
|
||||||
|
-v, --verbose Use verbose Cargo output
|
||||||
|
-e, --execute Actually perform a release. Dry-run mode is the default
|
||||||
|
-h, --help Show this help text and exit
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
<VERSION> See 'cargo release --help'. Levels are not supported"
|
||||||
|
|
||||||
|
SIGN_COMMIT=""
|
||||||
|
SIGN_TAG=""
|
||||||
|
VERBOSE=""
|
||||||
|
EXECUTE=""
|
||||||
|
VERSION=""
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
case $1 in
|
||||||
|
-s|--sign)
|
||||||
|
SIGN_COMMIT="--sign-commit"
|
||||||
|
SIGN_TAG="--sign-tag"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-v|--verbose)
|
||||||
|
VERBOSE="--verbose"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-x|--execute)
|
||||||
|
EXECUTE="--execute"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-h|--help)
|
||||||
|
echo "$USAGE"
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
--)
|
||||||
|
VERSION="$2"
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
|
||||||
|
-*)
|
||||||
|
throw "unrecognized option: '$1'"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
if [ "$VERSION" ]; then
|
||||||
|
throw "only one version can be specified"
|
||||||
|
else
|
||||||
|
VERSION="$1"
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ ! "$VERSION" ]; then
|
||||||
|
throw "a version must be set" 1>&2
|
||||||
|
fi
|
||||||
|
|
||||||
|
# check for necessary binaries
|
||||||
|
NECESSARY=(cargo-release git-cliff)
|
||||||
|
MISSING=""
|
||||||
|
for bin in "${NECESSARY[@]}"; do
|
||||||
|
if ! command -v "$bin" &>/dev/null; then
|
||||||
|
MISSING=true
|
||||||
|
echo "'$bin' is required to run this command, but it is not installed" 1>&2
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
[ "$MISSING" ] && throw "missing necessary binaries"
|
||||||
|
|
||||||
|
# exclude examples
|
||||||
|
WORKSPACE_FLAGS=(--workspace)
|
||||||
|
for ex in examples/*; do
|
||||||
|
if [ -d "$ex" ]; then
|
||||||
|
crate=$(echo "$ex" | tr / -)
|
||||||
|
WORKSPACE_FLAGS+=(--exclude "$crate")
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# shellcheck disable=SC2206
|
||||||
|
COMMON_FLAGS=($VERBOSE $EXECUTE)
|
||||||
|
|
||||||
|
info "bumping crate versions"
|
||||||
|
cargo release version "${WORKSPACE_FLAGS[@]}" "${COMMON_FLAGS[@]}" "$VERSION"
|
||||||
|
|
||||||
|
info "creating changelog"
|
||||||
|
exec_or_print git cliff -t "$VERSION" -o CHANGELOG.md
|
||||||
|
|
||||||
|
info "creating git commit"
|
||||||
|
exec_or_print cargo release commit "${COMMON_FLAGS[@]}" $SIGN_COMMIT
|
||||||
|
|
||||||
|
info "publishing crates"
|
||||||
|
exec_or_print cargo release publish "${COMMON_FLAGS[@]}" "${WORKSPACE_FLAGS[@]}"
|
||||||
|
|
||||||
|
info "tagging commits"
|
||||||
|
cargo release tag "${COMMON_FLAGS[@]}" "${WORKSPACE_FLAGS[@]}" $SIGN_TAG
|
||||||
|
|
||||||
|
info "pushing commits and tags to remote"
|
||||||
|
cargo release push "${COMMON_FLAGS[@]}" "${WORKSPACE_FLAGS[@]}"
|
|
@ -0,0 +1,83 @@
|
||||||
|
# configuration file for git-cliff
|
||||||
|
# see https://github.com/orhun/git-cliff#configuration-file
|
||||||
|
|
||||||
|
[changelog]
|
||||||
|
# changelog header
|
||||||
|
header = """
|
||||||
|
# Changelog
|
||||||
|
|
||||||
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
This changelog is automatically generated by [git-cliff](https://github.com/orhun/git-cliff),
|
||||||
|
which is configured [here](./cliff.toml).
|
||||||
|
|
||||||
|
Please do not manually edit this file.\n
|
||||||
|
"""
|
||||||
|
# template for the changelog body
|
||||||
|
# https://tera.netlify.app/docs/#introduction
|
||||||
|
body = """
|
||||||
|
{% if version %}\
|
||||||
|
## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }}
|
||||||
|
{% else %}\
|
||||||
|
## [Unreleased]
|
||||||
|
{% endif %}\
|
||||||
|
{% for group, commits in commits | group_by(attribute="group") %}
|
||||||
|
### {{ group | title }}
|
||||||
|
{% for commit in commits %}
|
||||||
|
- {% if commit.breaking %}[**breaking**] {% endif %}{{ commit.message | upper_first | split(pat="\\n") | first }}\
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}\n
|
||||||
|
"""
|
||||||
|
# remove the leading and trailing whitespace from the template
|
||||||
|
trim = true
|
||||||
|
# changelog footer
|
||||||
|
footer = """
|
||||||
|
<!-- generated by git-cliff -->
|
||||||
|
"""
|
||||||
|
|
||||||
|
[git]
|
||||||
|
# parse the commits based on https://www.conventionalcommits.org
|
||||||
|
conventional_commits = true
|
||||||
|
# filter out the commits that are not conventional
|
||||||
|
filter_unconventional = false
|
||||||
|
# process each line of a commit as an individual commit
|
||||||
|
split_commits = false
|
||||||
|
# regex for preprocessing the commit messages
|
||||||
|
commit_preprocessors = [
|
||||||
|
# replace issue numbers
|
||||||
|
{ pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([#${2}](https://github.com/gakonst/ethers-rs/issues/${2}))" },
|
||||||
|
]
|
||||||
|
# regex for parsing and grouping commits
|
||||||
|
commit_parsers = [
|
||||||
|
{ message = "^feat", group = "Features" },
|
||||||
|
{ message = "^fix", group = "Bug Fixes" },
|
||||||
|
{ message = "^doc", group = "Documentation" },
|
||||||
|
{ message = "(.*deps)|(.*dependencies)|(.*[Bb]ump)", group = "Depedencies" },
|
||||||
|
{ message = "^perf", group = "Performance" },
|
||||||
|
{ message = "^refactor", group = "Refactor" },
|
||||||
|
{ message = "(^style)|(.*fmt)", group = "Styling" },
|
||||||
|
{ message = "^test", group = "Testing" },
|
||||||
|
{ message = ".*release", skip = true },
|
||||||
|
{ message = "^revert", skip = true },
|
||||||
|
{ message = "^chore", group = "Miscellaneous Tasks" },
|
||||||
|
{ message = ".*", group = "Other" },
|
||||||
|
]
|
||||||
|
# protect breaking changes from being skipped due to matching a skipping commit_parser
|
||||||
|
protect_breaking_commits = true
|
||||||
|
# filter out the commits that are not matched by commit parsers
|
||||||
|
filter_commits = false
|
||||||
|
# glob pattern for matching git tags
|
||||||
|
tag_pattern = "*"
|
||||||
|
# regex for skipping tags
|
||||||
|
# skip_tags = "v0.1.0-beta.1"
|
||||||
|
# regex for ignoring tags
|
||||||
|
ignore_tags = "^ethers.*"
|
||||||
|
# sort the tags topologically
|
||||||
|
topo_order = false
|
||||||
|
# sort the commits inside sections by oldest/newest order
|
||||||
|
sort_commits = "newest"
|
||||||
|
# limit the number of commits included in the changelog.
|
||||||
|
# limit_commits = 42
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "examples-anvil"
|
name = "examples-anvil"
|
||||||
version = "2.0.0"
|
version = "0.0.0"
|
||||||
publish = false
|
publish = false
|
||||||
authors = ["Andrea Simeoni <andreasimeoni84@gmail.com>"]
|
authors = ["Andrea Simeoni <andreasimeoni84@gmail.com>"]
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "examples-big-numbers"
|
name = "examples-big-numbers"
|
||||||
version = "2.0.0"
|
version = "0.0.0"
|
||||||
publish = false
|
publish = false
|
||||||
authors = ["Andrea Simeoni <andreasimeoni84@gmail.com>"]
|
authors = ["Andrea Simeoni <andreasimeoni84@gmail.com>"]
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "examples-contracts"
|
name = "examples-contracts"
|
||||||
version = "2.0.0"
|
version = "0.0.0"
|
||||||
publish = false
|
publish = false
|
||||||
authors = ["Andrea Simeoni <andreasimeoni84@gmail.com>"]
|
authors = ["Andrea Simeoni <andreasimeoni84@gmail.com>"]
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "examples-events"
|
name = "examples-events"
|
||||||
version = "2.0.0"
|
version = "0.0.0"
|
||||||
publish = false
|
publish = false
|
||||||
authors = ["Andrea Simeoni <andreasimeoni84@gmail.com>"]
|
authors = ["Andrea Simeoni <andreasimeoni84@gmail.com>"]
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "examples-middleware"
|
name = "examples-middleware"
|
||||||
version = "2.0.0"
|
version = "0.0.0"
|
||||||
publish = false
|
publish = false
|
||||||
authors = ["Andrea Simeoni <andreasimeoni84@gmail.com>"]
|
authors = ["Andrea Simeoni <andreasimeoni84@gmail.com>"]
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "examples-providers"
|
name = "examples-providers"
|
||||||
version = "2.0.0"
|
version = "0.0.0"
|
||||||
publish = false
|
publish = false
|
||||||
authors = ["Andrea Simeoni <andreasimeoni84@gmail.com>"]
|
authors = ["Andrea Simeoni <andreasimeoni84@gmail.com>"]
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "examples-queries"
|
name = "examples-queries"
|
||||||
version = "2.0.0"
|
version = "0.0.0"
|
||||||
publish = false
|
publish = false
|
||||||
authors = ["Andrea Simeoni <andreasimeoni84@gmail.com>"]
|
authors = ["Andrea Simeoni <andreasimeoni84@gmail.com>"]
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "examples-subscriptions"
|
name = "examples-subscriptions"
|
||||||
version = "2.0.0"
|
version = "0.0.0"
|
||||||
publish = false
|
publish = false
|
||||||
authors = ["Andrea Simeoni <andreasimeoni84@gmail.com>"]
|
authors = ["Andrea Simeoni <andreasimeoni84@gmail.com>"]
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "examples-transactions"
|
name = "examples-transactions"
|
||||||
version = "2.0.0"
|
version = "0.0.0"
|
||||||
publish = false
|
publish = false
|
||||||
authors = ["Andrea Simeoni <andreasimeoni84@gmail.com>"]
|
authors = ["Andrea Simeoni <andreasimeoni84@gmail.com>"]
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "examples-wallets"
|
name = "examples-wallets"
|
||||||
version = "2.0.0"
|
version = "0.0.0"
|
||||||
publish = false
|
publish = false
|
||||||
authors = ["Andrea Simeoni <andreasimeoni84@gmail.com>"]
|
authors = ["Andrea Simeoni <andreasimeoni84@gmail.com>"]
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
[package]
|
[package]
|
||||||
name = "ethers-wasm"
|
name = "examples-wasm"
|
||||||
version = "2.0.0"
|
version = "0.0.0"
|
||||||
authors = ["Matthias Seitz <matthias.seitz@outlook.de>"]
|
authors = ["Matthias Seitz <matthias.seitz@outlook.de>"]
|
||||||
license = "MIT OR Apache-2.0"
|
license = "MIT OR Apache-2.0"
|
||||||
|
publish = false
|
||||||
|
|
||||||
rust-version.workspace = true
|
rust-version.workspace = true
|
||||||
edition.workspace = true
|
edition.workspace = true
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "ethers-wasm",
|
"name": "examples-wasm",
|
||||||
"license": "MIT OR Apache-2.0",
|
"license": "MIT OR Apache-2.0",
|
||||||
"private": "true",
|
"private": "true",
|
||||||
"scripts": {
|
"scripts": {
|
|
@ -5,7 +5,7 @@ use ethers::{
|
||||||
signers::Signer,
|
signers::Signer,
|
||||||
types::Chain,
|
types::Chain,
|
||||||
};
|
};
|
||||||
use ethers_wasm::{utils, SimpleContract};
|
use examples_wasm::{utils, SimpleContract};
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use wasm_bindgen_test::*;
|
use wasm_bindgen_test::*;
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
allow-branch = ["master"]
|
||||||
|
pre-release-commit-message = "chore: release"
|
||||||
|
tag-message = "chore: release {{crate_name}} v{{version}}"
|
Loading…
Reference in New Issue