You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							267 lines
						
					
					
						
							7.2 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							267 lines
						
					
					
						
							7.2 KiB
						
					
					
				
								#!/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<filled; i++)); do printf "█"; done
							 | 
						|
								    for ((i=0; i<empty; i++)); do printf "░"; done
							 | 
						|
								    printf "] $percentage%%\n\n"
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								# Function to show common replacement patterns
							 | 
						|
								show_replacement_patterns() {
							 | 
						|
								    echo "🔄 Common Replacement Patterns"
							 | 
						|
								    echo "=============================="
							 | 
						|
								    echo "generateInsertStatement → this.\$generateInsertStatement"
							 | 
						|
								    echo "generateUpdateStatement → this.\$generateUpdateStatement"
							 | 
						|
								    echo "parseJsonField → this._parseJsonField"
							 | 
						|
								    echo "mapColumnsToValues → this._mapColumnsToValues"
							 | 
						|
								    echo "logToDb → this.\$log"
							 | 
						|
								    echo "logConsoleAndDb → this.\$logAndConsole"
							 | 
						|
								    echo "memoryLogs → this.\$memoryLogs"
							 | 
						|
								    echo ""
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								# Function to show migration template
							 | 
						|
								show_migration_template() {
							 | 
						|
								    echo "📝 Migration Template for Vue Components"
							 | 
						|
								    echo "========================================"
							 | 
						|
								    echo ""
							 | 
						|
								    echo "1. Add PlatformServiceMixin import:"
							 | 
						|
								    echo "   import { PlatformServiceMixin } from '@/utils/PlatformServiceMixin';"
							 | 
						|
								    echo ""
							 | 
						|
								    echo "2. Add mixin to component:"
							 | 
						|
								    echo "   export default class ComponentName extends Vue {"
							 | 
						|
								    echo "     mixins = [PlatformServiceMixin];"
							 | 
						|
								    echo "     // ... rest of component"
							 | 
						|
								    echo "   }"
							 | 
						|
								    echo ""
							 | 
						|
								    echo "3. Replace databaseUtil imports:"
							 | 
						|
								    echo "   // Remove: import { ... } from '@/db/databaseUtil';"
							 | 
						|
								    echo "   // Use mixin methods instead"
							 | 
						|
								    echo ""
							 | 
						|
								    echo "4. Update method calls:"
							 | 
						|
								    echo "   // Before: generateInsertStatement(contact, 'contacts')"
							 | 
						|
								    echo "   // After:  this.\$generateInsertStatement(contact, 'contacts')"
							 | 
						|
								    echo ""
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								# Function to validate migration
							 | 
						|
								validate_migration() {
							 | 
						|
								    echo "🔍 Validating Migration"
							 | 
						|
								    echo "======================"
							 | 
						|
								    
							 | 
						|
								    # Check for remaining databaseUtil imports
							 | 
						|
								    local remaining=$(count_remaining_imports)
							 | 
						|
								    if [ $remaining -eq 0 ]; then
							 | 
						|
								        print_status "No databaseUtil imports found!"
							 | 
						|
								    else
							 | 
						|
								        print_warning "Found $remaining files still importing databaseUtil"
							 | 
						|
								        show_remaining_files
							 | 
						|
								    fi
							 | 
						|
								    
							 | 
						|
								    # Run linting
							 | 
						|
								    echo "Running linting..."
							 | 
						|
								    if npm run lint > /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 
							 |