Files
smom-dbis-138/scripts/CONSOLIDATION_PLAN.md

222 lines
6.1 KiB
Markdown
Raw Normal View History

# Script Consolidation and Modularization Plan
## Overview
This document outlines the consolidation and modularization strategy for scripts in this repository. The goal is to reduce duplication, improve maintainability, and create reusable components.
## Library Structure (Created)
**scripts/lib/** - Common libraries
- `lib/common/colors.sh` - Color definitions
- `lib/common/logging.sh` - Logging functions
- `lib/common/paths.sh` - Path definitions
- `lib/common/utils.sh` - Utility functions
- `lib/config/env.sh` - Environment loading
- `lib/config/regions.sh` - Region code mapping (single source of truth)
- `lib/azure/cli.sh` - Azure CLI wrappers
- `lib/init.sh` - Initialize all libraries
## Script Groups Identified for Consolidation
### 1. Deployment Scripts - High Duplication
#### Monitor Scripts (Can be consolidated into 1-2 scripts)
- `monitor-deployment.sh`
- `monitor-and-complete.sh`
- `monitor-and-fix.sh`
- `monitor-continuous.sh`
- `monitor-deployment-live.sh`
- `live-monitor.sh`
- `continuous-monitor.sh`
- `monitor-36-region-deployment.sh`
- `deployment-dashboard.sh`
**Action**: Create `monitor-deployment.sh` with modes: `--continuous`, `--live`, `--complete`, `--fix`
#### Parallel Deployment Scripts (Can be consolidated)
- `deploy-parallel.sh`
- `deploy-all-parallel.sh`
- `deploy-besu-parallel.sh`
- `deploy-max-parallel.sh`
- `deploy-ultra-parallel.sh`
- `deploy-besu-max-parallel.sh`
- `deploy-monitoring-parallel.sh`
- `configure-kubernetes-parallel.sh`
- `configure-kubernetes-max-parallel.sh`
- `deploy-contracts-parallel.sh`
- `verify-all-clusters-parallel.sh`
- `verify-all-max-parallel.sh`
**Action**: Create generic `deploy-parallel.sh` with resource type parameter
#### Phase Deployment Scripts
- `deploy-infrastructure-phase1.sh`
- `deploy-infrastructure-phase2.sh`
- `deploy-infrastructure-phase3.sh`
- `deploy-infrastructure-phase4.sh`
- `deploy-infrastructure-all-phases.sh`
- `deploy-all-phases.sh`
- `complete-all-phases-parallel.sh`
- `execute-all-phases.sh`
- `wait-and-complete-all.sh`
**Action**: Create `deploy-phase.sh` with phase number parameter
#### Complete/All Scripts
- `complete-all-deployment.sh`
- `complete-all-next-steps.sh`
- `complete-all-tasks.sh`
- `complete-infrastructure-deployment.sh`
- `wait-and-run-all-next-steps.sh`
- `run-all-next-steps.sh`
- `wait-and-run-next-steps.sh`
- `run-next-steps-with-available.sh`
**Action**: Consolidate into `complete-deployment.sh` with step options
### 2. Cost Calculation Scripts - High Duplication
- `calculate-accurate-costs.sh`
- `calculate-accurate-deployment-costs.sh`
- `calculate-conservative-costs.sh`
- `calculate-contract-deployment-costs.sh`
- `calculate-gas-fees.sh`
- `update-all-cost-estimates.sh`
- `update-cost-estimates.sh`
- `finalize-cost-estimates.sh`
- `get-accurate-gas-price.sh`
- `get-conservative-gas-price.sh`
- `get-mainnet-gas-prices.sh`
- `get-real-gas-prices.sh`
- `test-etherscan-gas-api.sh`
**Action**: Create `lib/deployment/costs.sh` library + single `calculate-costs.sh` script
### 3. Verification Scripts
- `verify-chain138-complete.sh`
- `verify-chain138-full-deployment.sh`
- `verify-chain138-services.sh`
- `verify-deployment.sh`
- `verify-mainnet-deployments.sh`
- `verify-on-chain-deployments.sh`
- `verify-all-clusters-parallel.sh`
- `verify-36-region-clusters.sh`
- `verify-all-max-parallel.sh`
- `verify-contract-etherscan.sh`
**Action**: Create `verify-deployment.sh` with resource type and mode options
### 4. Contract Deployment Scripts
- `deploy-weth.sh`
- `deploy-weth10.sh`
- `deploy-weth-with-ccip.sh`
- `deploy-ccip-weth9-bridge.sh`
- `deploy-ccip-weth10-bridge.sh`
- `deploy-multicall.sh`
- `deploy-multisig.sh`
- `deploy-ccip-router.sh`
**Action**: Create generic `deploy-contract.sh` with contract name parameter
### 5. Check/Status Scripts
- `check-deployment-status.sh`
- `check-infrastructure-status.sh`
- `check-mainnet-deployment-status.sh`
- `check-terraform-status.sh`
- `check-all-deployment-sources.sh`
- `check-existing-deployments.sh`
- `check-mainnet-balances.sh`
- `check-wallet-balances.sh`
- `check-and-proceed.sh`
- `check-rpc-status.sh`
**Action**: Create `check-status.sh` with resource type parameter
### 6. Import Scripts
- `import-existing-clusters.sh`
- `import-all-resources.sh`
**Action**: Create `import-resources.sh` with resource type parameter (these are already similar)
## Migration Strategy
### Phase 1: Library Adoption ✅ (In Progress)
1. ✅ Create common library structure
2. ✅ Create shared utilities
3. 🔄 Update key scripts to use libraries (example created)
### Phase 2: High-Impact Consolidations
1. Consolidate monitor scripts
2. Consolidate parallel deployment scripts
3. Consolidate cost calculation scripts
### Phase 3: Medium-Impact Consolidations
1. Consolidate verification scripts
2. Consolidate check/status scripts
3. Consolidate contract deployment scripts
### Phase 4: Cleanup
1. Remove deprecated scripts
2. Update documentation
3. Update Makefile targets
## Script Template
All new scripts should follow this template:
```bash
#!/bin/bash
# Script description
# Usage: script-name.sh [OPTIONS]
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/../lib/init.sh"
# Parse arguments
while [[ $# -gt 0 ]]; do
case $1 in
--option)
OPTION="$2"
shift 2
;;
*)
log_error "Unknown option: $1"
exit 1
;;
esac
done
# Main script logic
ensure_azure_cli || exit 1
log_section "Script Title"
```
## Benefits
1. **Reduced Duplication**: ~50% reduction in script count
2. **Single Source of Truth**: Region codes, colors, utilities defined once
3. **Consistency**: All scripts use same logging, error handling
4. **Maintainability**: Update once, applies everywhere
5. **Easier Testing**: Reusable functions can be unit tested
6. **Better Documentation**: Clear library structure
## Progress Tracking
- [x] Create library structure
- [x] Create common utilities
- [x] Create example refactored script
- [ ] Migrate high-priority scripts
- [ ] Consolidate monitor scripts
- [ ] Consolidate deployment scripts
- [ ] Consolidate cost scripts
- [ ] Update documentation
- [ ] Remove deprecated scripts