43 lines
1.4 KiB
Bash
Executable File
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
|