|
| 1 | +#!/usr/bin/env bash |
| 2 | +set -euo pipefail |
| 3 | + |
| 4 | +# ============================================================================= |
| 5 | +# DEPENDENCY VERSIONS |
| 6 | +# ============================================================================= |
| 7 | +NVM_VERSION="v0.40.3" |
| 8 | +NODE_VERSION="22" |
| 9 | +YARN_VERSION="4.6.0" |
| 10 | +SOLANA_VERSION="v1.17.25" |
| 11 | +ANCHOR_VERSION="v0.29.0" |
| 12 | +RUST_VERSION_FOR_PROJECT="1.84.0" |
| 13 | + |
| 14 | +# Resolve repo root from this script's directory |
| 15 | +SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" |
| 16 | +REPO_ROOT="$(cd -- "$SCRIPT_DIR/.." >/dev/null 2>&1 && pwd)" |
| 17 | +echo "=== Repo root: $REPO_ROOT ===" |
| 18 | + |
| 19 | +echo "=== Detecting system ===" |
| 20 | +UNAME_OUT="$(uname -s)" |
| 21 | +case "${UNAME_OUT}" in |
| 22 | + Linux*) OS=Linux;; |
| 23 | + Darwin*) OS=Mac;; |
| 24 | + *) OS="UNKNOWN:${UNAME_OUT}" |
| 25 | +esac |
| 26 | +echo "Detected: $OS" |
| 27 | + |
| 28 | +if [[ "$OS" == "Linux" ]]; then |
| 29 | + echo "=== Updating system packages (Linux) ===" |
| 30 | + sudo apt-get update && sudo apt-get upgrade -y |
| 31 | + sudo apt-get install -y build-essential pkg-config libssl-dev curl git |
| 32 | +elif [[ "$OS" == "Mac" ]]; then |
| 33 | + echo "=== Installing Xcode Command Line Tools ===" |
| 34 | + xcode-select --install || true |
| 35 | + |
| 36 | + echo "=== Installing Homebrew and dependencies ===" |
| 37 | + /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" || true |
| 38 | + eval "$(/opt/homebrew/bin/brew shellenv)" 2>/dev/null || eval "$(/usr/local/bin/brew shellenv)" 2>/dev/null || true |
| 39 | + brew update |
| 40 | + brew upgrade |
| 41 | + brew install pkg-config openssl git |
| 42 | +fi |
| 43 | + |
| 44 | +echo "=== Installing NVM (Node Version Manager) ===" |
| 45 | +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh | bash |
| 46 | +export NVM_DIR="$HOME/.nvm" |
| 47 | +source "$NVM_DIR/nvm.sh" |
| 48 | + |
| 49 | +echo "=== Installing Node.js ${NODE_VERSION} and Yarn (via Corepack) ===" |
| 50 | +nvm install ${NODE_VERSION} |
| 51 | +nvm use ${NODE_VERSION} |
| 52 | +corepack enable |
| 53 | +corepack prepare yarn@${YARN_VERSION} --activate |
| 54 | + |
| 55 | +echo "=== Installing Rust via rustup ===" |
| 56 | +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y |
| 57 | +source "$HOME/.cargo/env" |
| 58 | +rustup default stable |
| 59 | +rustc -V |
| 60 | + |
| 61 | +echo "=== Installing Solana CLI ===" |
| 62 | +sh -c "$(curl -sSfL https://release.anza.xyz/${SOLANA_VERSION}/install)" |
| 63 | +source "$HOME/.profile" || true |
| 64 | +solana -V |
| 65 | + |
| 66 | +echo "=== Installing Anchor (${ANCHOR_VERSION}) ===" |
| 67 | +cargo install --git https://github.com/coral-xyz/anchor --tag ${ANCHOR_VERSION} anchor-cli --force |
| 68 | +export PATH="$HOME/.cargo/bin:$PATH" |
| 69 | +cd "$REPO_ROOT" |
| 70 | + |
| 71 | +echo "=== Building local Whirlpools repo ===" |
| 72 | +rustup default ${RUST_VERSION_FOR_PROJECT} |
| 73 | +cd "$REPO_ROOT" |
| 74 | +yarn install |
| 75 | +yarn build |
| 76 | + |
| 77 | +echo "=== Setup complete ===" |
0 commit comments