- Introduced Aggregator.sol for Chainlink-compatible oracle functionality, including round-based updates and access control. - Added OracleWithCCIP.sol to extend Aggregator with CCIP cross-chain messaging capabilities. - Created .gitmodules to include OpenZeppelin contracts as a submodule. - Developed a comprehensive deployment guide in NEXT_STEPS_COMPLETE_GUIDE.md for Phase 2 and smart contract deployment. - Implemented Vite configuration for the orchestration portal, supporting both Vue and React frameworks. - Added server-side logic for the Multi-Cloud Orchestration Portal, including API endpoints for environment management and monitoring. - Created scripts for resource import and usage validation across non-US regions. - Added tests for CCIP error handling and integration to ensure robust functionality. - Included various new files and directories for the orchestration portal and deployment scripts.
133 lines
3.2 KiB
Markdown
133 lines
3.2 KiB
Markdown
# Scripts Library
|
|
|
|
Common libraries for all scripts in the project. This modularizes and consolidates shared functionality.
|
|
|
|
## Structure
|
|
|
|
```
|
|
lib/
|
|
├── common/ # Common utilities
|
|
│ ├── colors.sh # Color definitions and functions
|
|
│ ├── logging.sh # Logging functions (info, warn, error, etc.)
|
|
│ ├── paths.sh # Path definitions (SCRIPT_DIR, PROJECT_ROOT, etc.)
|
|
│ └── utils.sh # Utility functions (confirm, require_command, etc.)
|
|
├── config/ # Configuration
|
|
│ ├── env.sh # Environment variable loading
|
|
│ └── regions.sh # Region code mapping (single source of truth)
|
|
├── azure/ # Azure-specific functions
|
|
│ └── cli.sh # Azure CLI wrapper functions
|
|
└── init.sh # Initialize all libraries (main entry point)
|
|
```
|
|
|
|
## Usage
|
|
|
|
### Quick Start
|
|
|
|
Most scripts should source `init.sh` to load all libraries:
|
|
|
|
```bash
|
|
#!/bin/bash
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
source "$SCRIPT_DIR/lib/init.sh"
|
|
|
|
# Now you can use all functions from the libraries
|
|
log_info "Starting script"
|
|
ensure_azure_cli || exit 1
|
|
```
|
|
|
|
### Individual Libraries
|
|
|
|
You can also source individual libraries if you only need specific functionality:
|
|
|
|
```bash
|
|
source "$SCRIPT_DIR/lib/common/colors.sh"
|
|
source "$SCRIPT_DIR/lib/common/logging.sh"
|
|
```
|
|
|
|
### Examples
|
|
|
|
#### Using Logging
|
|
|
|
```bash
|
|
source "$SCRIPT_DIR/lib/init.sh"
|
|
|
|
log_info "Processing regions..."
|
|
log_warn "This might take a while"
|
|
log_error "Failed to connect"
|
|
log_success "Completed successfully"
|
|
log_section "Deployment Status"
|
|
```
|
|
|
|
#### Using Colors
|
|
|
|
```bash
|
|
source "$SCRIPT_DIR/lib/init.sh"
|
|
|
|
color_red "Error message"
|
|
color_green "Success message"
|
|
color_yellow "Warning message"
|
|
```
|
|
|
|
#### Using Region Codes
|
|
|
|
```bash
|
|
source "$SCRIPT_DIR/lib/init.sh"
|
|
|
|
# Get all regions
|
|
get_all_regions
|
|
|
|
# Get region code
|
|
CODE=$(get_region_code "westeurope") # Returns "wst"
|
|
|
|
# Get region name from code
|
|
REGION=$(get_region_name "wst") # Returns "westeurope"
|
|
```
|
|
|
|
#### Using Azure CLI Functions
|
|
|
|
```bash
|
|
source "$SCRIPT_DIR/lib/init.sh"
|
|
|
|
# Ensure Azure CLI is ready
|
|
ensure_azure_cli || exit 1
|
|
|
|
# Get subscription info
|
|
SUB_ID=$(get_current_subscription)
|
|
```
|
|
|
|
## Migration Guide
|
|
|
|
To migrate existing scripts to use the library:
|
|
|
|
1. **Remove duplicate code**:
|
|
- Remove color definitions (use `lib/common/colors.sh`)
|
|
- Remove SCRIPT_DIR/PROJECT_ROOT definitions (use `lib/common/paths.sh`)
|
|
- Remove region code mappings (use `lib/config/regions.sh`)
|
|
|
|
2. **Replace with library calls**:
|
|
```bash
|
|
# Old
|
|
RED='\033[0;31m'
|
|
echo -e "${RED}Error${NC}"
|
|
|
|
# New
|
|
source "$SCRIPT_DIR/lib/init.sh"
|
|
log_error "Error"
|
|
```
|
|
|
|
3. **Use standardized functions**:
|
|
- Replace `az account show` checks with `ensure_azure_cli`
|
|
- Replace manual color codes with logging functions
|
|
- Replace duplicate region mappings with `get_region_code()`
|
|
|
|
## Benefits
|
|
|
|
1. **Single Source of Truth**: Region codes defined once
|
|
2. **Consistency**: All scripts use the same colors, logging, and utilities
|
|
3. **Maintainability**: Update once, applies everywhere
|
|
4. **Reduced Duplication**: Eliminates repetitive code
|
|
5. **Better Error Handling**: Standardized error messages and checks
|
|
|