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.
		
		
		
		
		
			
		
			
				
					
					
						
							122 lines
						
					
					
						
							4.0 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							122 lines
						
					
					
						
							4.0 KiB
						
					
					
				| #!/bin/bash | |
|  | |
| # TimeSafari Notification Migration Completeness Validator | |
| # Detects components with incomplete notification migrations | |
| 
 | |
| echo "🔔 TimeSafari Notification Migration Validator" | |
| echo "==============================================" | |
| 
 | |
| # Function to check if file has raw $notify calls | |
| check_raw_notify() { | |
|     local file="$1" | |
|     if [[ ! -f "$file" ]]; then | |
|         return 1 | |
|     fi | |
|      | |
|     # Count $notify calls (excluding comments, initialization, and parameter passing) | |
|     local notify_count=$(grep -v "^[[:space:]]*//\|^[[:space:]]*\*" "$file" | grep -v "createNotifyHelpers(this\.\$notify)" | grep -v "this\.\$notify[[:space:]]*," | grep -v "this\.\$notify[[:space:]]*)" | grep -c "this\.\$notify") | |
|     echo "$notify_count" | |
| } | |
| 
 | |
| # Function to check if file has notification helpers setup | |
| check_notify_helpers() { | |
|     local file="$1" | |
|     if [[ ! -f "$file" ]]; then | |
|         return 1 | |
|     fi | |
|      | |
|     # Check for createNotifyHelpers import and usage | |
|     local has_import=$(grep -c "createNotifyHelpers" "$file") | |
|     local has_property=$(grep -c "notify!:" "$file") | |
|     local has_created=$(grep -c "this.notify = createNotifyHelpers" "$file") | |
|      | |
|     if [[ $has_import -gt 0 && $has_property -gt 0 && $has_created -gt 0 ]]; then | |
|         echo "complete" | |
|     elif [[ $has_import -gt 0 || $has_property -gt 0 || $has_created -gt 0 ]]; then | |
|         echo "partial" | |
|     else | |
|         echo "none" | |
|     fi | |
| } | |
| 
 | |
| echo "🔍 Scanning for notification migration completeness..." | |
| 
 | |
| # Get all Vue components using PlatformServiceMixin | |
| mixin_components=$(grep -l "PlatformServiceMixin" src/**/*.vue 2>/dev/null | sort) | |
| 
 | |
| incomplete_migrations=() | |
| partial_migrations=() | |
| complete_migrations=() | |
| 
 | |
| for component in $mixin_components; do | |
|     notify_count=$(check_raw_notify "$component") | |
|     helper_status=$(check_notify_helpers "$component") | |
|      | |
|     if [[ $notify_count -gt 0 ]]; then | |
|         if [[ "$helper_status" == "none" ]]; then | |
|             incomplete_migrations+=("$component ($notify_count \$notify calls, no helpers)") | |
|         elif [[ "$helper_status" == "partial" ]]; then | |
|             partial_migrations+=("$component ($notify_count \$notify calls, partial helpers)") | |
|         else | |
|             incomplete_migrations+=("$component ($notify_count \$notify calls, but has helpers - mixed pattern)") | |
|         fi | |
|     else | |
|         if [[ "$helper_status" == "complete" ]]; then | |
|             complete_migrations+=("$component") | |
|         elif [[ "$helper_status" == "partial" ]]; then | |
|             partial_migrations+=("$component (unused helper setup)") | |
|         else | |
|             complete_migrations+=("$component") | |
|         fi | |
|     fi | |
| done | |
| 
 | |
| # Report results | |
| echo "" | |
| echo "📊 Notification Migration Status Report" | |
| echo "=======================================" | |
| 
 | |
| if [[ ${#incomplete_migrations[@]} -gt 0 ]]; then | |
|     echo "❌ INCOMPLETE NOTIFICATION MIGRATIONS (${#incomplete_migrations[@]} components):" | |
|     for item in "${incomplete_migrations[@]}"; do | |
|         echo "  - $item" | |
|     done | |
|     echo "" | |
| fi | |
| 
 | |
| if [[ ${#partial_migrations[@]} -gt 0 ]]; then | |
|     echo "⚠️  PARTIAL NOTIFICATION MIGRATIONS (${#partial_migrations[@]} components):" | |
|     for item in "${partial_migrations[@]}"; do | |
|         echo "  - $item" | |
|     done | |
|     echo "" | |
| fi | |
| 
 | |
| if [[ ${#complete_migrations[@]} -gt 0 ]]; then | |
|     echo "✅ COMPLETE NOTIFICATION MIGRATIONS (${#complete_migrations[@]} components):" | |
|     for item in "${complete_migrations[@]}"; do | |
|         echo "  - $item" | |
|     done | |
|     echo "" | |
| fi | |
| 
 | |
| # Summary | |
| total_issues=$((${#incomplete_migrations[@]} + ${#partial_migrations[@]})) | |
| total_components=${#mixin_components[@]} | |
| 
 | |
| echo "📈 Summary:" | |
| echo "  Total PlatformServiceMixin components: $total_components" | |
| echo "  Complete notification migrations: ${#complete_migrations[@]}" | |
| echo "  Incomplete/partial migrations: $total_issues" | |
| 
 | |
| if [[ $total_issues -gt 0 ]]; then | |
|     echo "" | |
|     echo "🚨 ACTION REQUIRED:" | |
|     echo "   $total_issues components need notification migration completion" | |
|     echo "   Follow: docs/migration-templates/COMPLETE_MIGRATION_CHECKLIST.md" | |
|     exit 1 | |
| else | |
|     echo "" | |
|     echo "🎉 ALL NOTIFICATION MIGRATIONS COMPLETE!" | |
|     exit 0 | |
| fi  |