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
|