Scripts Directory
Last Updated: 2025-01-27 Purpose: Automation scripts for workspace integration and streamlining Structure: Modular organization with shared libraries
📁 Directory Structure
scripts/
├── README.md # This file
├── lib/ # Shared libraries
│ ├── common/ # Common utilities
│ │ ├── colors.sh # Color definitions
│ │ ├── logging.sh # Logging functions
│ │ ├── utils.sh # Utility functions
│ │ ├── validation.sh # Input validation
│ │ └── error-handling.sh # Error handling
│ ├── config/ # Configuration
│ │ └── env.sh # Environment loading
│ └── init.sh # Initialize all libraries
├── migration/ # Migration scripts
│ ├── migrate-readme.sh
│ ├── migrate-terraform.sh
│ ├── migrate-to-api-gateway.sh
│ ├── migrate-to-k8s.sh
│ ├── migrate-to-monitoring.sh
│ └── migrate-to-shared-packages.sh
├── metrics/ # Metrics scripts
│ ├── collect/ # Collection scripts
│ │ ├── collect-code-metrics.sh
│ │ ├── collect-deployment-metrics.sh
│ │ ├── collect-developer-metrics.sh
│ │ ├── collect-infrastructure-metrics.sh
│ │ ├── collect-operational-metrics.sh
│ │ └── collect-service-metrics.sh
│ ├── track-all-metrics.sh
│ ├── track-success-metrics.sh
│ ├── update-metrics.sh
│ └── generate-metrics-report.sh
├── dbis/ # DBIS-specific scripts
│ ├── automate-dbis-migration.sh
│ ├── migrate-all-dbis-projects.sh
│ ├── migrate-dbis-project.sh
│ └── test-dbis-migration.sh
├── infrastructure/ # Infrastructure scripts
│ ├── setup-shared-infrastructure.sh
│ └── setup.sh
└── utils/ # Utility scripts
├── analyze-costs.sh
├── optimize-builds.sh
├── deps-analyze.sh
├── deps-audit.sh
├── build-all.sh
├── test-all.sh
├── verify-all.sh
└── cleanup.sh
🚀 Quick Start
Using Scripts
All scripts can be run from the project root:
# Migration scripts
./scripts/migration/migrate-to-k8s.sh my-project
# Metrics scripts
./scripts/metrics/update-metrics.sh all
# Infrastructure scripts
./scripts/infrastructure/setup.sh
Using Shared Libraries
Scripts can use shared libraries by sourcing lib/init.sh:
#!/bin/bash
# Example script using shared libraries
# Get script directory
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# Load all libraries
source "$SCRIPT_DIR/../lib/init.sh"
# Now you can use library functions
log_info "Starting script..."
require_command kubectl
validate_project_name "$1"
📚 Shared Libraries
Common Utilities (lib/common/)
colors.sh
Color definitions for script output:
source "$SCRIPT_DIR/../lib/common/colors.sh"
echo -e "${GREEN}Success!${NC}"
logging.sh
Logging functions with levels:
source "$SCRIPT_DIR/../lib/common/logging.sh"
log_info "Information message"
log_error "Error message"
log_warn "Warning message"
log_debug "Debug message"
utils.sh
Common utility functions:
source "$SCRIPT_DIR/../lib/common/utils.sh"
require_command kubectl
ensure_dir "/tmp/my-dir"
confirm "Continue?"
validation.sh
Input validation functions:
source "$SCRIPT_DIR/../lib/common/validation.sh"
validate_project_name "my-project"
validate_environment "production"
validate_url "https://example.com"
error-handling.sh
Error handling and cleanup:
source "$SCRIPT_DIR/../lib/common/error-handling.sh"
set_error_trap
# Cleanup function will be called on error
cleanup() {
# Cleanup code
}
Configuration (lib/config/)
env.sh
Environment variable loading:
source "$SCRIPT_DIR/../lib/config/env.sh"
load_env ".env"
require_env "API_KEY"
get_env "PORT" "8080"
Initialization (lib/init.sh)
Load all libraries at once:
source "$SCRIPT_DIR/../lib/init.sh"
# All libraries are now available
📖 Script Categories
Migration Scripts (migration/)
Scripts for migrating projects to shared infrastructure:
- migrate-to-k8s.sh - Migrate to Kubernetes
- migrate-to-api-gateway.sh - Migrate to API Gateway
- migrate-to-monitoring.sh - Migrate to monitoring
- migrate-to-shared-packages.sh - Migrate to shared packages
- migrate-terraform.sh - Migrate Terraform modules
- migrate-readme.sh - Update README files
Metrics Scripts (metrics/)
Scripts for collecting and tracking metrics:
- collect/ - Individual metric collection scripts
- track-all-metrics.sh - Track all metrics
- update-metrics.sh - Update metrics data
- generate-metrics-report.sh - Generate reports
DBIS Scripts (dbis/)
DBIS-specific migration and testing scripts:
- automate-dbis-migration.sh - Automate DBIS migration
- migrate-all-dbis-projects.sh - Migrate all DBIS projects
- test-dbis-migration.sh - Test DBIS migration
Infrastructure Scripts (infrastructure/)
Infrastructure setup and deployment scripts:
- setup-shared-infrastructure.sh - Setup shared infrastructure
- setup.sh - General setup script
Utility Scripts (utils/)
General utility scripts:
- analyze-costs.sh - Cost analysis
- optimize-builds.sh - Build optimization
- deps-analyze.sh - Dependency analysis
- deps-audit.sh - Dependency audit
- build-all.sh - Build all projects
- test-all.sh - Test all projects
- verify-all.sh - Verify all projects
- cleanup.sh - Cleanup scripts
🔧 Development Guidelines
Creating New Scripts
-
Use shared libraries:
source "$(dirname "$0")/../lib/init.sh" -
Follow naming conventions:
- Use kebab-case:
my-script.sh - Be descriptive:
migrate-to-k8s.shnotmigrate.sh
- Use kebab-case:
-
Include help text:
if [ -z "$1" ]; then echo "Usage: $0 <project-name>" exit 1 fi -
Use logging functions:
log_info "Starting migration..." log_success "Migration complete!" -
Validate inputs:
validate_project_name "$1" require_command kubectl
Best Practices
- ✅ Use shared libraries for common functionality
- ✅ Validate all inputs
- ✅ Provide helpful error messages
- ✅ Include usage/help text
- ✅ Use logging instead of echo
- ✅ Handle errors gracefully
- ✅ Document complex logic
🔄 Migration from Old Structure
Scripts are being migrated from the flat structure to the modular structure. For backward compatibility, wrapper scripts may exist in the root scripts/ directory.
Migration Status
- ✅ Directory structure created
- ✅ Shared libraries created
- ⏳ Scripts being migrated (in progress)
- ⏳ Documentation being updated
📚 Related Documentation
Last Updated: 2025-01-27