#!/bin/bash # Migration Helper Script for TimeSafari PlatformServiceMixin Migration # This script helps track and automate the migration from databaseUtil to PlatformServiceMixin set -e echo "🔄 TimeSafari Migration Helper" echo "================================" # Colors for output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # Function to print colored output print_status() { echo -e "${GREEN}✅ $1${NC}" } print_warning() { echo -e "${YELLOW}âš ī¸ $1${NC}" } print_error() { echo -e "${RED}❌ $1${NC}" } print_info() { echo -e "${BLUE}â„šī¸ $1${NC}" } # Check if we're in the right directory if [ ! -f "package.json" ]; then print_error "Please run this script from the project root directory" exit 1 fi # Function to count remaining databaseUtil imports count_remaining_imports() { local count=$(find src -name "*.vue" -o -name "*.ts" | xargs grep -l "import.*databaseUtil" | wc -l) echo $count } # Function to show files with databaseUtil imports show_remaining_files() { echo "📋 Files still importing databaseUtil:" echo "----------------------------------------" find src -name "*.vue" -o -name "*.ts" | xargs grep -l "import.*databaseUtil" | sort echo "" } # Function to show migration progress show_progress() { local total_files=52 # Total files that need migration local remaining=$(count_remaining_imports) local migrated=$((total_files - remaining)) local percentage=$((migrated * 100 / total_files)) echo "📊 Migration Progress" echo "====================" echo "Total files to migrate: $total_files" echo "Files migrated: $migrated" echo "Files remaining: $remaining" echo "Progress: $percentage%" echo "" # Progress bar local filled=$((percentage / 2)) local empty=$((50 - filled)) printf "[" for ((i=0; i /dev/null 2>&1; then print_status "Linting passed" else print_error "Linting failed - check output above" fi # Run type checking echo "Running type checking..." if npx tsc --noEmit > /dev/null 2>&1; then print_status "TypeScript compilation passed" else print_error "TypeScript compilation failed - check output above" fi echo "" } # Function to show next steps show_next_steps() { echo "đŸŽ¯ Next Steps" echo "=============" echo "" local remaining=$(count_remaining_imports) if [ $remaining -eq 0 ]; then print_status "Migration complete! All files have been migrated." echo "" echo "Next actions:" echo "1. Run full test suite" echo "2. Test on all platforms (Web, Mobile, Desktop)" echo "3. Update documentation" echo "4. Remove databaseUtil file (if no longer needed)" else echo "Priority order for remaining $remaining files:" echo "1. Views (user-facing components)" echo "2. Components (reusable UI components)" echo "3. Services (business logic)" echo "4. Utils (utility functions)" echo "" echo "Use the migration template above for each file." fi echo "" } # Main menu show_menu() { echo "Choose an option:" echo "1. Show migration progress" echo "2. Show remaining files" echo "3. Show replacement patterns" echo "4. Show migration template" echo "5. Validate migration" echo "6. Show next steps" echo "7. Run all checks" echo "8. Exit" echo "" read -p "Enter your choice (1-8): " choice case $choice in 1) show_progress ;; 2) show_remaining_files ;; 3) show_replacement_patterns ;; 4) show_migration_template ;; 5) validate_migration ;; 6) show_next_steps ;; 7) show_progress show_remaining_files show_replacement_patterns validate_migration show_next_steps ;; 8) print_info "Goodbye!" exit 0 ;; *) print_error "Invalid choice. Please try again." ;; esac } # Check if arguments were provided if [ $# -eq 0 ]; then # No arguments, show menu show_menu else # Arguments provided, run specific function case $1 in "progress") show_progress ;; "files") show_remaining_files ;; "patterns") show_replacement_patterns ;; "template") show_migration_template ;; "validate") validate_migration ;; "next") show_next_steps ;; "all") show_progress show_remaining_files show_replacement_patterns validate_migration show_next_steps ;; *) print_error "Unknown argument: $1" echo "Usage: $0 [progress|files|patterns|template|validate|next|all]" exit 1 ;; esac fi