logos-delivery/scripts/install_anvil.sh

75 lines
2.3 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
# Install Foundry binaries (forge, cast, anvil, chisel).
#
# We bypass `foundryup` and pull the release tarball straight from GitHub.
set -euo pipefail
REQUIRED_FOUNDRY_VERSION="${1:-}"
if [ -z "$REQUIRED_FOUNDRY_VERSION" ]; then
echo "usage: install_anvil.sh <foundry-version>" >&2
exit 1
fi
if command -v anvil >/dev/null 2>&1; then
CURRENT_FOUNDRY_VERSION=$(anvil --version 2>/dev/null | awk '{print $2}')
if [ -n "$CURRENT_FOUNDRY_VERSION" ]; then
lower_version=$(printf '%s\n%s\n' "$CURRENT_FOUNDRY_VERSION" "$REQUIRED_FOUNDRY_VERSION" | sort -V | head -n1)
if [ "$lower_version" != "$REQUIRED_FOUNDRY_VERSION" ]; then
echo "Anvil is already installed with version $CURRENT_FOUNDRY_VERSION, which is older than the required $REQUIRED_FOUNDRY_VERSION. Please update Foundry manually if needed."
fi
fi
exit 0
fi
feat: Update implementation for new contract abi (#3390) * update RLN contract abi functions and procs * Clean up debugging lines * Use more descriptive object field names for MembershipInfo * Fix formatting * fix group_manager after rebase to use new contract method sig * Fix linting for group_manager.nim * Test idcommitment to BE and debug logs * Improve IdCommitment logging * Update all keystore credentials to use BE format * Add workaround for groupmanager web3 eth_call * Add await to sendEthCallWithChainID * Add error handling for failed eth_call * Improve error handling for eth_call workaround * Revert keystore credentials back to using LE * Update toRateCommitment proc to use LE instead of BE * Add IdCommitment to calldata as BE * feat: Update rln contract deployment and tests (#3408) * update RLN contract abi functions and procs * update waku-rlnv2-contract submodule commit to latest * Add RlnV2 contract deployment using forge scripts * Clean up output of forge script command, debug logs to trace, warn to error * Move TestToken deployment to own proc * first implementation of token minting and approval * Update rln tests with usermessagelimit new minimum * Clean up code and error handling * Rework RLN tests WIP * Fix RLN test for new contract * RLN Tests updated * Fix formatting * Improve error logs * Fix error message formatting * Fix linting * Add pnpm dependency installation for rln tests * Update test dependencies in makefile * Minor updates, error messages etc * Code cleanup and change some debug logging to trace * Improve handling of Result return value * Use absolute path for waku-rlnv2-contract * Simplify token approval and balance check * Remove unused Anvil options * Add additional checks for stopAnvil process * Fix anvil process call to null * Add lock to tests for rln_group_manager_onchain * Debug for forge command * Verify paths * Install pnpm as global * Cleanup anvil running procs * Add check before installing anvil * CLean up onchain group_manager * Add proc to setup environment for contract deployer * Refactoring and improved error handling * Fix anvil install directory string * Fix linting in test_range_split * Add const for the contract address length * Add separate checks for why Approval transaction fails * Update RLN contract address and chainID for TWN
2025-06-20 11:46:08 +02:00
case "$(uname -s)" in
Darwin) PLATFORM=darwin ;;
Linux) PLATFORM=linux ;;
*) echo "Unsupported platform: $(uname -s)" >&2; exit 1 ;;
esac
case "$(uname -m)" in
x86_64|amd64) ARCH=amd64 ;;
arm64|aarch64) ARCH=arm64 ;;
*) echo "Unsupported architecture: $(uname -m)" >&2; exit 1 ;;
esac
BASE_DIR="${XDG_CONFIG_HOME:-$HOME}"
FOUNDRY_DIR="${FOUNDRY_DIR:-"$BASE_DIR/.foundry"}"
FOUNDRY_BIN_DIR="$FOUNDRY_DIR/bin"
TAG="v${REQUIRED_FOUNDRY_VERSION}"
ASSET="foundry_${TAG}_${PLATFORM}_${ARCH}.tar.gz"
URL="https://github.com/foundry-rs/foundry/releases/download/${TAG}/${ASSET}"
echo "Installing Foundry ${TAG} for ${PLATFORM}/${ARCH}..."
mkdir -p "$FOUNDRY_BIN_DIR"
tmpdir=$(mktemp -d)
trap 'rm -rf "$tmpdir"' EXIT
archive="$tmpdir/foundry.tar.gz"
curl -fL --retry 5 --retry-delay 2 --retry-all-errors -o "$archive" "$URL"
# Validate the archive before extracting -- catches truncated/HTML responses
# loudly instead of leaving a half-installed Foundry on disk.
tar tzf "$archive" >/dev/null
tar -xzf "$archive" -C "$FOUNDRY_BIN_DIR" forge cast anvil chisel
chmod +x "$FOUNDRY_BIN_DIR"/{forge,cast,anvil,chisel}
export PATH="$FOUNDRY_BIN_DIR:$PATH"
if [ -n "${GITHUB_PATH:-}" ]; then
echo "$FOUNDRY_BIN_DIR" >> "$GITHUB_PATH"
fi
if ! command -v anvil >/dev/null 2>&1; then
echo "Error: anvil installation failed" >&2
exit 1
fi
echo "Anvil successfully installed: $(anvil --version)"