Files
smom-dbis-138/scripts/setup/dev-environment.sh
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

141 lines
3.3 KiB
Bash
Executable File

#!/usr/bin/env bash
# Development environment setup script
# Installs required tools and dependencies for development
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
source "$SCRIPT_DIR/../lib/init.sh"
source "$SCRIPT_DIR/../lib/common/validation.sh"
cd "$PROJECT_ROOT"
log_section "Development Environment Setup"
# Check for required commands
log_subsection "Checking dependencies"
REQUIRED_COMMANDS=(
"bash"
"git"
"docker"
"python3"
"node"
"npm"
)
MISSING_COMMANDS=()
for cmd in "${REQUIRED_COMMANDS[@]}"; do
if command_exists "$cmd"; then
log_success "$cmd is installed"
else
log_warn "$cmd is not installed"
MISSING_COMMANDS+=("$cmd")
fi
done
# Optional tools
log_subsection "Checking optional tools"
OPTIONAL_COMMANDS=(
"shellcheck:Static analysis for shell scripts"
"shfmt:Shell script formatter"
"yamllint:YAML linter"
"terraform:Infrastructure as code"
"kubectl:Kubernetes CLI"
"az:Azure CLI"
)
for cmd_info in "${OPTIONAL_COMMANDS[@]}"; do
IFS=':' read -r cmd desc <<< "$cmd_info"
if command_exists "$cmd"; then
log_success "$cmd is installed"
else
log_info "$cmd is not installed (optional: $desc)"
fi
done
# Install shellcheck if missing
if ! command_exists shellcheck && command_exists apt-get; then
log_info "Installing shellcheck..."
sudo apt-get update
sudo apt-get install -y shellcheck
fi
# Install shfmt if missing
if ! command_exists shfmt && command_exists go; then
log_info "Installing shfmt..."
go install mvdan.cc/sh/v3/cmd/shfmt@latest
fi
# Setup pre-commit hooks
log_subsection "Setting up pre-commit hooks"
if [ -d ".git" ]; then
if [ ! -f ".git/hooks/pre-commit" ]; then
log_info "Creating pre-commit hook..."
cat > .git/hooks/pre-commit <<'EOF'
#!/usr/bin/env bash
# Pre-commit hook for code quality checks
set -e
# Run shellcheck on shell scripts
if command -v shellcheck &>/dev/null; then
git diff --cached --name-only --diff-filter=ACM | grep '\.sh$' | while read -r file; do
shellcheck "$file" || exit 1
done
fi
# Run yamllint on YAML files
if command -v yamllint &>/dev/null; then
git diff --cached --name-only --diff-filter=ACM | grep -E '\.(yml|yaml)$' | while read -r file; do
yamllint "$file" || exit 1
done
fi
EOF
chmod +x .git/hooks/pre-commit
log_success "Pre-commit hook created"
else
log_info "Pre-commit hook already exists"
fi
fi
# Create .env.example if it doesn't exist
if [ ! -f ".env.example" ]; then
log_info "Creating .env.example..."
cat > .env.example <<'EOF'
# Environment Configuration
# Copy this file to .env and update with your values
# RPC Configuration
RPC_URL=http://localhost:8545
# Chain Configuration
CHAIN_ID=138
# Azure Configuration (if using Azure)
AZURE_SUBSCRIPTION_ID=
AZURE_RESOURCE_GROUP=
AZURE_LOCATION=westeurope
# Key Vault Configuration
KEY_VAULT_NAME=
# Deployment Configuration
ENVIRONMENT=development
EOF
log_success ".env.example created"
fi
log_success "Development environment setup complete"
if [ ${#MISSING_COMMANDS[@]} -gt 0 ]; then
log_warn "Missing required commands: ${MISSING_COMMANDS[*]}"
log_info "Please install missing commands before continuing"
fi