-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup.sh
More file actions
executable file
·54 lines (48 loc) · 2.41 KB
/
Copy pathsetup.sh
File metadata and controls
executable file
·54 lines (48 loc) · 2.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/usr/bin/env bash
# setup.sh — first-time setup for a fresh clone.
#
# Installs Solidity dependencies (forge install) + Node deps (npm install
# for both bridges/ and demos/). Run once after `git clone`; afterwards
# `./stack/stateset up` is enough.
#
# bash stack/setup.sh
set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
if [ -t 1 ]; then G=$'\033[32m'; C=$'\033[36m'; D=$'\033[2m'; B=$'\033[1m'; X=$'\033[0m'
else G= C= D= B= X=; fi
echo -e "${B}icommerce-quickstart setup${X} ${D}— installing Solidity + Node deps${X}\n"
# ─── Solidity: pinned OZ to keep solc 0.8.20 happy ────────────────────────
cd "$ROOT/contracts"
if [ ! -d lib/forge-std ]; then
echo -e "${C}→${X} forge install foundry-rs/forge-std"
forge install foundry-rs/forge-std
fi
if [ ! -d lib/openzeppelin-contracts ]; then
echo -e "${C}→${X} forge install OpenZeppelin/openzeppelin-contracts@v5.0.0"
forge install "OpenZeppelin/openzeppelin-contracts@v5.0.0"
fi
if [ ! -d lib/openzeppelin-contracts-upgradeable ]; then
echo -e "${C}→${X} forge install OpenZeppelin/openzeppelin-contracts-upgradeable@v5.0.0"
forge install "OpenZeppelin/openzeppelin-contracts-upgradeable@v5.0.0"
fi
echo -e "${G}✓${X} contracts/lib ready ($(ls lib/ | wc -l | tr -d ' ') libs)"
# ─── Node deps ───────────────────────────────────────────────────────────
for pkg in bridges demos; do
cd "$ROOT/$pkg"
if [ ! -d node_modules ]; then
echo -e "${C}→${X} npm install in $pkg/"
npm install --silent
fi
done
echo -e "${G}✓${X} bridges/ + demos/ npm deps installed"
echo -e "\n${G}${B}✓ setup complete${X}"
echo -e " Next: ${B}./stack/stateset up${X} (start anvil + deploy + bridges)"
echo -e " ${B}./stack/stateset test${X} (forge test + bridge tests + demo syntax)"
echo -e " ${B}./stack/stateset demo lifecycle${X} (~120-line escrow walk-through)"
echo -e ""
echo -e " Recommended (one-time):"
echo -e " ${B}eval \"\$(./stack/stateset completion bash)\"${X} tab-complete for 21 subcommands"
echo -e " ${B}bash scripts/install-hooks.sh${X} pre-commit fmt + syntax checks"
echo -e ""
echo -e " Before pushing to your fork:"
echo -e " ${B}./stack/stateset gates${X} runs the 5 non-chain CI gates locally"