Files
smom-dbis-138/scripts/lib
defiQUG 1fb7266469 Add Oracle Aggregator and CCIP Integration
- 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.
2025-12-12 14:57:48 -08:00
..

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:

#!/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:

source "$SCRIPT_DIR/lib/common/colors.sh"
source "$SCRIPT_DIR/lib/common/logging.sh"

Examples

Using Logging

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

source "$SCRIPT_DIR/lib/init.sh"

color_red "Error message"
color_green "Success message"
color_yellow "Warning message"

Using Region Codes

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

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:

    # 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