Files
mev-beta/scripts/organize-scripts.sh

402 lines
12 KiB
Bash
Executable File

#!/bin/bash
# Script Organization and Cleanup
# Based on SCRIPT_ANALYSIS_REPORT.md recommendations
set -e
# Colors for output
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
RED='\033[0;31m'
NC='\033[0m' # No Color
echo -e "${BLUE}========================================${NC}"
echo -e "${BLUE}MEV Bot Script Organization${NC}"
echo -e "${BLUE}========================================${NC}"
echo ""
# Check if we're in the right directory
if [ ! -f "go.mod" ]; then
echo -e "${RED}❌ Error: Must be run from project root${NC}"
exit 1
fi
# Create status before changes
echo -e "${BLUE}📊 Capturing git status before changes...${NC}"
git status --short > /tmp/mev-bot-git-status-before.txt
echo ""
# Create deprecated directory
echo -e "${BLUE}📁 Creating directories...${NC}"
mkdir -p scripts/deprecated
mkdir -p scripts/demos
echo -e "${GREEN}✅ Created scripts/deprecated/ and scripts/demos/${NC}"
echo ""
# Move redundant log management scripts to deprecated
echo -e "${BLUE}🗂️ Moving redundant log management scripts...${NC}"
DEPRECATED_SCRIPTS=(
"scripts/archive-logs.sh"
"scripts/quick-archive.sh"
"scripts/view-latest-archive.sh"
"scripts/rotate-logs.sh"
"scripts/setup-log-rotation.sh"
)
for script in "${DEPRECATED_SCRIPTS[@]}"; do
if [ -f "$script" ]; then
echo -e " Moving: $script → scripts/deprecated/"
git mv "$script" "scripts/deprecated/$(basename "$script")"
else
echo -e "${YELLOW} Skipped: $script (not found)${NC}"
fi
done
echo -e "${GREEN}✅ Moved ${#DEPRECATED_SCRIPTS[@]} scripts to deprecated/${NC}"
echo ""
# Move demo scripts
echo -e "${BLUE}🎬 Moving demo scripts...${NC}"
DEMO_SCRIPTS=(
"scripts/demo-production-logs.sh"
)
for script in "${DEMO_SCRIPTS[@]}"; do
if [ -f "$script" ]; then
echo -e " Moving: $script → scripts/demos/"
git mv "$script" "scripts/demos/$(basename "$script")"
else
echo -e "${YELLOW} Skipped: $script (not found)${NC}"
fi
done
echo -e "${GREEN}✅ Moved ${#DEMO_SCRIPTS[@]} scripts to demos/${NC}"
echo ""
# Create README for deprecated scripts
echo -e "${BLUE}📝 Creating README for deprecated scripts...${NC}"
cat > scripts/deprecated/README.md << 'EOF'
# Deprecated Scripts
These scripts have been moved here because their functionality is now handled by more comprehensive tools.
## Log Management Scripts (Superseded by log-manager.sh)
All of these scripts have been replaced by `scripts/log-manager.sh`, which provides:
- Real-time analysis with health scoring
- Performance monitoring with MEV-specific metrics
- Corruption detection and integrity validation
- Multi-channel alerting (email, Slack)
- Background monitoring daemon
- Operations dashboard generation
- Intelligent rotation (size and time-based)
- Advanced archiving with metadata
### Deprecated Scripts
1. **archive-logs.sh** → Use `./scripts/log-manager.sh archive`
2. **quick-archive.sh** → Use `./scripts/log-manager.sh full`
3. **view-latest-archive.sh** → Use `./scripts/log-manager.sh status`
4. **rotate-logs.sh** → Use `./scripts/log-manager.sh rotate`
5. **setup-log-rotation.sh** → Use `./scripts/log-manager.sh init`
## Migration Guide
**Instead of:**
```bash
./scripts/archive-logs.sh
```
**Use:**
```bash
./scripts/log-manager.sh archive
```
**Instead of:**
```bash
./scripts/quick-archive.sh --clear-logs
```
**Use:**
```bash
./scripts/log-manager.sh full
```
## Why These Were Deprecated
The individual log management scripts were created before the comprehensive `log-manager.sh` system was implemented. The new system provides:
- **Unified Interface**: Single command with multiple subcommands
- **Production Grade**: Health monitoring, alerting, and metrics
- **Better Maintenance**: One script to maintain instead of five
- **More Features**: Dashboard generation, daemon mode, performance tracking
- **Safer Operations**: Validation and corruption detection
## Can I Still Use These?
Yes, these scripts still work and are kept for backwards compatibility. However, it's recommended to migrate to `log-manager.sh` for better functionality and ongoing support.
## When Will These Be Removed?
These scripts will be kept for at least one major version release to allow for migration. They may be removed in a future version once all users have migrated to `log-manager.sh`.
---
**See:** `docs/SCRIPT_ANALYSIS_REPORT.md` for the full analysis
EOF
echo -e "${GREEN}✅ Created README for deprecated scripts${NC}"
echo ""
# Create README for demos
echo -e "${BLUE}📝 Creating README for demo scripts...${NC}"
cat > scripts/demos/README.md << 'EOF'
# Demo & Example Scripts
These scripts are for demonstration and testing purposes only. They should not be used in production environments.
## Available Demos
### demo-production-logs.sh
Demonstrates the production log management system capabilities.
**Purpose:** Show how the log-manager.sh system works
**Usage:**
```bash
./scripts/demos/demo-production-logs.sh
```
**What it does:**
- Generates sample log entries
- Runs log analysis
- Shows health checks
- Demonstrates alerting
- Creates performance reports
- Generates operations dashboard
**Note:** This is a demonstration script. For production log management, use `./scripts/log-manager.sh`
---
**See:** `docs/SCRIPT_ANALYSIS_REPORT.md` for more information
EOF
echo -e "${GREEN}✅ Created README for demo scripts${NC}"
echo ""
# Create index README for scripts directory
echo -e "${BLUE}📝 Creating scripts directory index...${NC}"
cat > scripts/README.md << 'EOF'
# MEV Bot Scripts Directory
This directory contains all operational, utility, and development scripts for the MEV Bot project.
## Core Scripts
### Build & Runtime
- **build.sh** - Universal Go build script with configurable options
- **run.sh** - Main MEV bot execution script with production environment loading
- **test.sh** - Basic test runner
### Log Management
- **log-manager.sh** ⭐ Production-grade log management system
- Real-time analysis and health monitoring
- Performance tracking with MEV metrics
- Corruption detection and alerting
- Background daemon and dashboard generation
- See: `./scripts/log-manager.sh --help`
## CI/CD & Quality Assurance
### Primary CI Pipeline
- **../harness/local-ci-pipeline.sh** - Comprehensive CI/CD pipeline
- **ci-precommit.sh** - Fast pre-commit validation (10-30s)
- **ci-quick.sh** - Quick CI pipeline (30-60s)
- **ci-dev.sh** - Development CI pipeline (1-2min)
- **ci-full.sh** - Full CI pipeline (3-5min)
- **ci-container.sh** - Containerized CI execution
- **ci-watch.sh** - Watch mode for continuous validation
### Testing
- **test-runner.sh** - Configurable test execution (levels: basic, unit, integration, comprehensive, audit)
- **run_audit_suite.sh** - Mathematical correctness audit
- **security-validation.sh** - Comprehensive security validation
- **quick-test.sh** - Quick fix validation (30s)
- **run-stress-tests.sh** - Stress testing
- **run-fork-tests.sh** - Blockchain fork testing
## Deployment & Production
### Contract Deployment
- **deploy-contracts.sh** - Deploy smart contracts to Arbitrum
- **verify-contracts.sh** - Verify contracts on Arbiscan
- **deploy-staging.sh** - Staging environment deployment
- **deploy-production.sh** - Full production deployment with Docker Compose
### Production Operations
- **production-start.sh** - Start production MEV bot
- **production-validation.sh** - Pre-deployment validation checks
- **pre-run-validation.sh** - Environment validation before startup
## Wallet Management
- **setup-keystore.sh** - Encrypt and securely store private keys (AES-256-CBC)
- **fund-bot-wallet.sh** - Fund MEV bot wallet using Foundry cast
- **check-wallet-balance.sh** - Check wallet balance on Arbitrum One
## Monitoring & Analysis
- **watch-live.sh** - Real-time MEV bot activity monitor
- **analyze.sh** - Comprehensive system analysis (tests, benchmarks, coverage, static analysis)
- **performance-profile.sh** - Performance profiling with pprof
## Development Utilities
### Environment Setup
- **setup-env.sh** - Environment variable setup
- **setup-dev.sh** - Development environment setup
- **fix-rpc-config.sh** - Fix RPC configuration issues
### Git Workflow
- **git-hooks-setup.sh** - Install git hooks
- **git-enhanced.sh** - Enhanced git workflow commands
- **git-local-server.sh** - Local git server simulation
### Data & Code Generation
- **fetch_arbiscan_tx.sh** - Fetch transaction data from Arbiscan
- **extract_multicall_fixture.sh** - Extract multicall fixtures for testing
- **refresh-mev-datasets.sh** - Update MEV research datasets
- **generate-bindings.sh** - Generate Go bindings for smart contracts
### Other Utilities
- **kill-bot.sh** - Stop running MEV bot processes
- **dependency-scan.sh** - Scan for dependency vulnerabilities
- **verify-organization.sh** - Verify project organization
- **24h-validation-test.sh** - 24-hour validation test
## Special Directories
### deprecated/
Contains scripts that have been superseded by better alternatives. See `deprecated/README.md` for migration guide.
**Replaced by log-manager.sh:**
- archive-logs.sh
- quick-archive.sh
- view-latest-archive.sh
- rotate-logs.sh
- setup-log-rotation.sh
### demos/
Contains demonstration and example scripts for testing purposes only. Not for production use.
## Quick Reference
### Development Workflow
```bash
# Setup
./scripts/setup-dev.sh
# Quick validation
./scripts/ci-precommit.sh
# Run tests
./scripts/test-runner.sh --level comprehensive --coverage
# Security check
./scripts/security-validation.sh
# Math audit
./scripts/run_audit_suite.sh
```
### Production Deployment
```bash
# Validate environment
./scripts/production-validation.sh
# Deploy contracts
./scripts/deploy-contracts.sh
# Setup wallet
./scripts/setup-keystore.sh
./scripts/check-wallet-balance.sh
# Deploy and start
./scripts/deploy-production.sh
./scripts/run.sh
```
### Monitoring
```bash
# Live activity monitor
./scripts/watch-live.sh
# Log management
./scripts/log-manager.sh analyze
./scripts/log-manager.sh health
./scripts/log-manager.sh dashboard
# Performance profiling
./scripts/performance-profile.sh
```
## Documentation
For detailed script analysis and recommendations, see:
- **docs/SCRIPT_ANALYSIS_REPORT.md** - Comprehensive script analysis
- **Makefile** - Build automation targets and workflows
## Contributing
When adding new scripts:
1. Make scripts executable: `chmod +x script-name.sh`
2. Add shebang: `#!/bin/bash` or `#!/usr/bin/env bash`
3. Use set -e for error handling
4. Add descriptive comments
5. Update this README
6. Add help text (use --help flag)
---
**Total Scripts:** 80+
**Active Scripts:** 50+
**Deprecated Scripts:** 5
**Demo Scripts:** 1
EOF
echo -e "${GREEN}✅ Created scripts directory index${NC}"
echo ""
# Capture status after changes
echo -e "${BLUE}📊 Capturing git status after changes...${NC}"
git status --short > /tmp/mev-bot-git-status-after.txt
echo ""
# Show summary
echo -e "${BLUE}========================================${NC}"
echo -e "${GREEN}✅ Script Organization Complete!${NC}"
echo -e "${BLUE}========================================${NC}"
echo ""
echo -e "${BLUE}📝 Summary:${NC}"
echo -e " • Created: scripts/deprecated/"
echo -e " • Created: scripts/demos/"
echo -e " • Moved: ${#DEPRECATED_SCRIPTS[@]} scripts to deprecated/"
echo -e " • Moved: ${#DEMO_SCRIPTS[@]} scripts to demos/"
echo -e " • Created: 3 README files"
echo ""
echo -e "${BLUE}📊 Git Status Changes:${NC}"
echo -e "${YELLOW}Before:${NC}"
cat /tmp/mev-bot-git-status-before.txt | head -10
echo ""
echo -e "${YELLOW}After:${NC}"
git status --short | head -20
echo ""
echo -e "${BLUE}⏭️ Next Steps:${NC}"
echo -e " 1. Review changes: ${YELLOW}git diff --cached${NC}"
echo -e " 2. Commit changes: ${YELLOW}git commit -m \"refactor: organize scripts into logical directories\"${NC}"
echo -e " 3. Read report: ${YELLOW}docs/SCRIPT_ANALYSIS_REPORT.md${NC}"
echo ""