63 lines
2.9 KiB
Markdown
63 lines
2.9 KiB
Markdown
# Deployment script library
|
|
|
|
Reusable helpers for deployment scripts: **tag-based CLI** (no .env placeholders for one-off values), **interactive prompts** when run without args, and **callable modular linking** so scripts can invoke each other with arguments.
|
|
|
|
## Conventions
|
|
|
|
- **Secrets and chain config** stay in `.env` (e.g. `PRIVATE_KEY`, RPC URLs, contract addresses).
|
|
- **One-off or per-run values** are passed via **script tags** (e.g. `--eth 1.5`, `--chain bsc polygon`, `--lockbox`), not .env.
|
|
- Scripts that accept amounts **prompt interactively** when run with no args and stdin is a TTY.
|
|
- Scripts are **callable** from other scripts by passing the same tags (e.g. `run-all-four-gaps.sh g4 --eth 1`).
|
|
|
|
## Modules
|
|
|
|
| File | Purpose |
|
|
|------|--------|
|
|
| `prompts.sh` | Tag parsers: `parse_fund_tags` (--eth, --weth, --dry-run), `prompt_fund_amounts`, `eth_to_wei`, `parse_phase_tags` (g1, g2g3, g4), `parse_chain_filter` (--chain bsc polygon ...), `parse_lockbox_tag` (--lockbox / --no-lockbox), `parse_link_tags` (--link, --dry-run), `parse_dry_run_tag`, `parse_deploy_tag` (--deploy), `parse_delay_tag` (--delay). `L2_CHAIN_NAMES`, `normalize_chain_name`. |
|
|
| `dotenv.sh` | `load_deployment_env`, `require_fund_lp_env`. |
|
|
| `costs.sh` | Gas and cost helpers (existing). |
|
|
|
|
## Validate syntax (one command)
|
|
|
|
- **From this repo** (`smom-dbis-138`):
|
|
`./scripts/deployment/check-syntax.sh`
|
|
- **From workspace root** (e.g. `proxmox`):
|
|
`./smom-dbis-138/scripts/deployment/check-syntax.sh`
|
|
|
|
Checks all tag-based deployment scripts and the lib with `bash -n`.
|
|
|
|
## Usage
|
|
|
|
```bash
|
|
# From any script in scripts/deployment:
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
source "$SCRIPT_DIR/../lib/deployment/dotenv.sh"
|
|
source "$SCRIPT_DIR/../lib/deployment/prompts.sh"
|
|
load_deployment_env
|
|
|
|
# Parse G4 amounts from args, then prompt if still empty (TTY)
|
|
parse_fund_tags "$@"
|
|
prompt_fund_amounts
|
|
# Use FUND_ETH_AMOUNT_WEI, FUND_WETH_AMOUNT_WEI
|
|
```
|
|
|
|
## Example: G4 fund mainnet LP
|
|
|
|
- **Standalone:** `./scripts/deployment/fund-mainnet-lp.sh --eth 1.5 --weth 0.5`
|
|
- **Interactive:** `./scripts/deployment/fund-mainnet-lp.sh`
|
|
- **From run-all:** `./scripts/deployment/run-all-four-gaps.sh g4 --eth 1`
|
|
|
|
No `FUND_ETH_AMOUNT_WEI` / `FUND_WETH_AMOUNT_WEI` in .env.
|
|
|
|
## Other scripts (tags)
|
|
|
|
| Script | Tags |
|
|
|--------|------|
|
|
| deploy-pmm-all-l2s.sh | --chain bsc polygon ... (or DEPLOY_PMM_L2S_FILTER in .env) |
|
|
| live-test-trustless-bridge.sh | --check (optional: print LP stats and BondManager totalEthHeld); prints cast commands for lock → claim → finalize → release |
|
|
| deploy-trustless-l2s.sh | --chain, --lockbox / --no-lockbox |
|
|
| fund-ccip-bridges-with-link.sh | --link amount, --dry-run |
|
|
| fix-nonce-and-retry.sh | --chain, --script (positional still supported) |
|
|
| run-remaining-g2g3-with-nonce-fix.sh | --delay, --lockbox / --no-lockbox |
|
|
| check-balances-gas-and-deploy.sh | --deploy |
|