#!/bin/bash ZOMBIENET_V=v1.3.106 POLKAHEZ_V=stable-2407-01 # Detect the operating system case "$(uname -s)" in Linux*) MACHINE=Linux;; Darwin*) MACHINE=Mac;; *) exit 1 esac # Detect the architecture ARCH=$(uname -m) # Set the executable name based on the OS and architecture if [ $MACHINE = "Linux" ]; then if [ $ARCH = "x86_64" ]; then ZOMBIENET_BIN=zombienet-linux-x64 elif [ $ARCH = "arm64" ] || [ $ARCH = "aarch64" ]; then ZOMBIENET_BIN=zombienet-linux-arm64 else echo "Unsupported Linux architecture: $ARCH" exit 1 fi elif [ $MACHINE = "Mac" ]; then if [ $ARCH = "x86_64" ]; then ZOMBIENET_BIN=zombienet-macos-x86 elif [ $ARCH = "arm64" ]; then ZOMBIENET_BIN=zombienet-macos-arm64 else echo "Unsupported macOS architecture: $ARCH" exit 1 fi fi echo "Using binary: $ZOMBIENET_BIN" BIN_DIR=bin-$POLKAHEZ_V build_pezkuwi() { echo "cloning pezkuwi repository..." CWD=$(pwd) mkdir -p "$BIN_DIR" pushd /tmp git clone https://github.com/pezkuwichain/pezkuwi-sdk.git pushd pezkuwi-sdk git checkout release-pezkuwi-$POLKAHEZ_V echo "building pezkuwi executable..." cargo build --release --features fast-runtime cp target/release/pezkuwi "$CWD/$BIN_DIR" cp target/release/pezkuwi-execute-worker "$CWD/$BIN_DIR" cp target/release/pezkuwi-prepare-worker "$CWD/$BIN_DIR" popd popd } fetch_pezkuwi() { echo "fetching from pezkuwi repository..." echo $BIN_DIR mkdir -p "$BIN_DIR" pushd "$BIN_DIR" wget https://github.com/pezkuwichain/pezkuwi-sdk/releases/download/pezkuwi-$POLKAHEZ_V/pezkuwi wget https://github.com/pezkuwichain/pezkuwi-sdk/releases/download/pezkuwi-$POLKAHEZ_V/pezkuwi-execute-worker wget https://github.com/pezkuwichain/pezkuwi-sdk/releases/download/pezkuwi-$POLKAHEZ_V/pezkuwi-prepare-worker chmod +x * popd } zombienet_init() { if [ ! -f $ZOMBIENET_BIN ]; then echo "fetching zombienet executable..." curl -LO https://github.com/pezkuwichain/zombienet/releases/download/$ZOMBIENET_V/$ZOMBIENET_BIN chmod +x $ZOMBIENET_BIN fi if [ ! -f $BIN_DIR/pezkuwi ]; then fetch_pezkuwi fi } zombienet_build() { if [ ! -f $ZOMBIENET_BIN ]; then echo "fetching zombienet executable..." curl -LO https://github.com/pezkuwichain/zombienet/releases/download/$ZOMBIENET_V/$ZOMBIENET_BIN chmod +x $ZOMBIENET_BIN fi if [ ! -f $BIN_DIR/pezkuwi ]; then build_pezkuwi fi } zombienet_devnet() { zombienet_init cargo build --release echo "spawning paseo-local relay chain plus devnet as a teyrchain..." local dir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) ./$ZOMBIENET_BIN spawn "$dir/../zombienet-config/devnet.toml" -p native } print_help() { echo "This is a shell script to automate the execution of zombienet." echo "" echo "$ ./zombienet.sh init # fetches zombienet and pezkuwi executables" echo "$ ./zombienet.sh build # builds pezkuwi executables from source" echo "$ ./zombienet.sh devnet # spawns a paseo-local relay chain plus teyrchain devnet-local as a teyrchain" } SUBCOMMAND=$1 case $SUBCOMMAND in "" | "-h" | "--help") print_help ;; *) shift zombienet_${SUBCOMMAND} $@ if [ $? = 127 ]; then echo "Error: '$SUBCOMMAND' is not a known SUBCOMMAND." >&2 echo "Run './zombienet.sh --help' for a list of known subcommands." >&2 exit 1 fi ;; esac