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

#!/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