# Rustelo Scripts Directory This directory contains all the utility scripts for the Rustelo framework, organized by category for easy management and maintenance. ## 📁 Directory Structure ``` scripts/ ├── databases/ # Database management scripts ├── setup/ # Project setup and installation scripts ├── tools/ # Advanced tooling scripts ├── utils/ # General utility scripts ├── deploy.sh # Main deployment script ├── install.sh # Main installation script └── README.md # This file ``` ## 🚀 Quick Start ### Using Just (Recommended) The easiest way to use these scripts is through the `justfile` commands: ```bash # Development just dev # Start development server just build # Build project just test # Run tests # Database just db-setup # Setup database just db-migrate # Run migrations just db-backup # Create backup # Tools just perf-benchmark # Run performance tests just security-audit # Run security audit just monitor-health # Monitor application health just ci-pipeline # Run CI/CD pipeline ``` ### Direct Script Usage You can also run scripts directly: ```bash # Database operations ./scripts/databases/db.sh setup create ./scripts/databases/db.sh migrate run # Performance testing ./scripts/tools/performance.sh benchmark load ./scripts/tools/performance.sh monitor live # Security scanning ./scripts/tools/security.sh audit full ./scripts/tools/security.sh analyze report # Monitoring ./scripts/tools/monitoring.sh monitor health ./scripts/tools/monitoring.sh reports generate ``` ## 📂 Script Categories ### 🗄️ Database Scripts (`databases/`) Comprehensive database management and operations: - **`db.sh`** - Master database management hub - **`db-setup.sh`** - Database setup and initialization - **`db-migrate.sh`** - Migration management - **`db-backup.sh`** - Backup and restore operations - **`db-monitor.sh`** - Database monitoring and health checks - **`db-utils.sh`** - Database utilities and maintenance **Key Features:** - PostgreSQL and SQLite support - Automated migrations - Backup/restore with compression - Performance monitoring - Health checks and alerts - Data export/import - Schema management **Usage Examples:** ```bash # Full database setup ./scripts/databases/db.sh setup setup # Create backup ./scripts/databases/db.sh backup create # Monitor database health ./scripts/databases/db.sh monitor health # Run migrations ./scripts/databases/db.sh migrate run ``` ### 🔧 Setup Scripts (`setup/`) Project initialization and configuration: - **`install.sh`** - Main installation script - **`install-dev.sh`** - Development environment setup - **`setup_dev.sh`** - Development configuration - **`setup-config.sh`** - Configuration management - **`setup_encryption.sh`** - Encryption setup **Key Features:** - Multi-mode installation (dev/prod/custom) - Dependency management - Environment configuration - Encryption setup - Feature selection - Cross-platform support **Usage Examples:** ```bash # Basic development setup ./scripts/setup/install.sh # Production setup with TLS ./scripts/setup/install.sh -m prod --enable-tls # Custom interactive setup ./scripts/setup/install.sh -m custom ``` ### 🛠️ Tool Scripts (`tools/`) Advanced tooling and automation: - **`performance.sh`** - Performance testing and monitoring - **`security.sh`** - Security scanning and auditing - **`ci.sh`** - CI/CD pipeline management - **`monitoring.sh`** - Application monitoring and observability #### Performance Tools (`performance.sh`) **Commands:** - `benchmark load` - Load testing - `benchmark stress` - Stress testing - `monitor live` - Real-time monitoring - `analyze report` - Performance analysis - `optimize build` - Build optimization **Features:** - Load and stress testing - Real-time performance monitoring - Response time analysis - Resource usage tracking - Performance reporting - Build optimization **Usage:** ```bash # Run load test ./scripts/tools/performance.sh benchmark load -d 60 -c 100 # Live monitoring ./scripts/tools/performance.sh monitor live # Generate report ./scripts/tools/performance.sh analyze report ``` #### Security Tools (`security.sh`) **Commands:** - `audit full` - Complete security audit - `audit dependencies` - Dependency vulnerability scan - `audit secrets` - Secret scanning - `analyze report` - Security reporting **Features:** - Dependency vulnerability scanning - Secret detection - Permission auditing - Security header analysis - Configuration security checks - Automated fixes **Usage:** ```bash # Full security audit ./scripts/tools/security.sh audit full # Scan for secrets ./scripts/tools/security.sh audit secrets # Fix security issues ./scripts/tools/security.sh audit dependencies --fix ``` #### CI/CD Tools (`ci.sh`) **Commands:** - `pipeline run` - Full CI/CD pipeline - `build docker` - Docker image building - `test all` - Complete test suite - `deploy staging` - Staging deployment **Features:** - Complete CI/CD pipeline - Docker image building - Multi-stage testing - Quality checks - Automated deployment - Build reporting **Usage:** ```bash # Run full pipeline ./scripts/tools/ci.sh pipeline run # Build Docker image ./scripts/tools/ci.sh build docker -t v1.0.0 # Deploy to staging ./scripts/tools/ci.sh deploy staging ``` #### Monitoring Tools (`monitoring.sh`) **Commands:** - `monitor health` - Health monitoring - `monitor metrics` - Metrics collection - `monitor logs` - Log analysis - `reports generate` - Monitoring reports **Features:** - Real-time health monitoring - Metrics collection and analysis - Log monitoring and analysis - System resource monitoring - Alert management - Dashboard generation **Usage:** ```bash # Monitor health ./scripts/tools/monitoring.sh monitor health -d 300 # Monitor all metrics ./scripts/tools/monitoring.sh monitor all # Generate report ./scripts/tools/monitoring.sh reports generate ``` ### 🔧 Utility Scripts (`utils/`) General-purpose utilities: - **`configure-features.sh`** - Feature configuration - **`build-examples.sh`** - Example building - **`generate_certs.sh`** - TLS certificate generation - **`test_encryption.sh`** - Encryption testing - **`demo_root_path.sh`** - Demo path generation ## 🚀 Common Workflows ### Development Workflow ```bash # 1. Initial setup just setup # 2. Database setup just db-setup # 3. Start development just dev-full # 4. Run tests just test # 5. Quality checks just quality ``` ### Production Deployment ```bash # 1. Build and test just ci-pipeline # 2. Security audit just security-audit # 3. Performance testing just perf-benchmark # 4. Deploy to staging just ci-deploy-staging # 5. Deploy to production just ci-deploy-prod ``` ### Monitoring and Maintenance ```bash # 1. Setup monitoring just monitor-setup # 2. Health monitoring just monitor-health # 3. Performance monitoring just perf-monitor # 4. Security monitoring just security-audit # 5. Generate reports just monitor-report ``` ## 📋 Script Conventions ### Common Options Most scripts support these common options: - `--help` - Show help message - `--verbose` - Enable verbose output - `--quiet` - Suppress output - `--dry-run` - Show what would be done - `--force` - Skip confirmations - `--env ENV` - Specify environment ### Exit Codes Scripts use standard exit codes: - `0` - Success - `1` - General error - `2` - Misuse of shell builtins - `126` - Command invoked cannot execute - `127` - Command not found - `128` - Invalid argument to exit ### Logging Scripts use consistent logging: - `[INFO]` - General information - `[WARN]` - Warnings - `[ERROR]` - Errors - `[SUCCESS]` - Success messages - `[CRITICAL]` - Critical issues ## 🔧 Configuration ### Environment Variables Scripts respect these environment variables: ```bash # General PROJECT_NAME=rustelo ENVIRONMENT=dev LOG_LEVEL=info # Database DATABASE_URL=postgresql://user:pass@localhost/db # Docker DOCKER_REGISTRY=docker.io DOCKER_IMAGE=rustelo DOCKER_TAG=latest # Monitoring METRICS_PORT=3030 GRAFANA_PORT=3000 PROMETHEUS_PORT=9090 ``` ### Configuration Files Scripts may use these configuration files: - `.env` - Environment variables - `Cargo.toml` - Rust project configuration - `package.json` - Node.js dependencies - `docker-compose.yml` - Docker services ## 🛠️ Development ### Adding New Scripts 1. Create script in appropriate category directory 2. Make executable: `chmod +x script.sh` 3. Add to `justfile` if needed 4. Update this README 5. Add tests if applicable ### Script Template ```bash #!/bin/bash # Script Description # Detailed description of what the script does set -e # Colors for output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # Logging functions log() { echo -e "${GREEN}[INFO]${NC} $1"; } log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; } log_error() { echo -e "${RED}[ERROR]${NC} $1"; } # Your script logic here main() { log "Starting script..." # Implementation log "Script completed" } # Run main function main "$@" ``` ## 📚 References - [Just Command Runner](https://just.systems/) - Task runner - [Bash Style Guide](https://google.github.io/styleguide/shellguide.html) - Shell scripting standards - [Rustelo Documentation](../README.md) - Main project documentation - [Docker Documentation](https://docs.docker.com/) - Container management - [PostgreSQL Documentation](https://www.postgresql.org/docs/) - Database management ## 🆘 Troubleshooting ### Common Issues 1. **Permission Denied** ```bash chmod +x scripts/path/to/script.sh ``` 2. **Missing Dependencies** ```bash just setup-deps ``` 3. **Environment Variables Not Set** ```bash cp .env.example .env # Edit .env with your values ``` 4. **Database Connection Issues** ```bash just db-status just db-setup ``` 5. **Docker Issues** ```bash docker system prune -f just docker-build ``` ### Getting Help - Run any script with `--help` for usage information - Check the `justfile` for available commands - Review logs in the output directories - Consult the main project documentation ## 🤝 Contributing 1. Follow the established conventions 2. Add appropriate error handling 3. Include help documentation 4. Test thoroughly 5. Update this README For questions or issues, please consult the project documentation or create an issue.