ethers-rs/bin/run_all_examples

43 lines
1.4 KiB
Bash
Executable File

#!/bin/bash
set -e; # Fail fast
# shellcheck shell=bash
# examples that we can't run because they require some additional infra, docker or ledger for example
ignored=(
"examples-contracts:deploy_moonbeam"
"examples-providers:ipc"
"examples-wallets:ledger"
"examples-wallets:trezor"
"examples-wallets:yubi"
"examples-transactions:remove_liquidity"
)
example_crates=$(cargo metadata --format-version 1 |
jq -c '.workspace_members' |
jq -r 'map(select(startswith("examples")) |
sub("\\s.*$";"")) | .[]')
for crate in $example_crates; do
# Remove "examples-" prefix from crate name (e.g. examples-contracts => contracts)
cratedir="${crate#examples-}"
srcdir="examples/$cratedir/examples"
# Retrieve all example files in crate:
# Transform the absolute path into the filename (e.g. some-path/deploy_anvil.rs => deploy_anvil)
example_files=$(find $srcdir -type f -name '*.rs' -exec basename {} \; | sed 's/\.[^.]*$//')
for file in $example_files; do
# Build the example
echo "Building example: $crate:$file"
cargo build -p $crate --example $file
# Run the example
if [[ "${ignored[*]}" =~ $(basename "$crate:$file") ]]; then
echo "skipping: $crate:$file"
continue
fi
echo "running $crate:$file"
cargo run -p $crate --example $file
done
done