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  |