diff --git a/scripts/version-compare.sh b/scripts/version-compare.sh new file mode 100755 index 0000000..cc30711 --- /dev/null +++ b/scripts/version-compare.sh @@ -0,0 +1,177 @@ +#!/bin/bash + +# 🏭 Production Version Comparison Script +# Easily compare, revert, and work with different production versions + +set -e + +# Colors for output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +PURPLE='\033[0;35m' +NC='\033[0m' # No Color + +# Function to print colored output +print_status() { + echo -e "${BLUE}[INFO]${NC} $1" +} + +print_success() { + echo -e "${GREEN}[SUCCESS]${NC} $1" +} + +print_warning() { + echo -e "${YELLOW}[WARNING]${NC} $1" +} + +print_error() { + echo -e "${RED}[ERROR]${NC} $1" +} + +print_step() { + echo -e "${PURPLE}[STEP]${NC} $1" +} + +# Version definitions +PRODUCTION_BACKUP_V1_0="PRODUCTION-BACKUP-v1.0" +PRODUCTION_BACKUP_V1_1="PRODUCTION-BACKUP-v1.1" +CURRENT_PRODUCTION="CURRENT-PRODUCTION" +PREVIEW_BRANCH="preview-capabilities-phase1-2" + +# Function to show available versions +show_versions() { + echo "🏷️ Available Production Versions:" + echo "" + echo "1. ${GREEN}PRODUCTION-BACKUP-v1.0${NC} (e0a37bf) - Stable deployment before major updates" + echo "2. ${GREEN}PRODUCTION-BACKUP-v1.1${NC} (b319ae0) - Clean state before inline editing features" + echo "3. ${GREEN}CURRENT-PRODUCTION${NC} (57770fd) - Currently deployed on master" + echo "4. ${YELLOW}preview-capabilities-phase1-2${NC} (0ab005c) - Current development branch" + echo "" +} + +# Function to compare versions +compare_versions() { + local version1=$1 + local version2=$2 + + print_step "Comparing $version1 vs $version2" + + if [ "$version1" = "$version2" ]; then + print_error "Cannot compare version to itself" + exit 1 + fi + + # Show file differences + echo "📊 File differences:" + git diff --name-status $version1 $version2 | head -20 + + echo "" + echo "📈 Summary of changes:" + git diff --stat $version1 $version2 + + echo "" + echo "🔍 Detailed diff (first 50 lines):" + git diff $version1 $version2 | head -50 + + print_success "Comparison completed" +} + +# Function to create rollback branch +create_rollback() { + local version=$1 + local branch_name="rollback-$(date +%Y%m%d-%H%M%S)" + + print_step "Creating rollback branch from $version" + + git checkout $version + git checkout -b $branch_name + + print_success "Created rollback branch: $branch_name" + print_status "To deploy this rollback:" + echo " git push origin $branch_name" + echo " firebase use cim-summarizer" + echo " firebase deploy --only functions" +} + +# Function to show version details +show_version_details() { + local version=$1 + + print_step "Details for $version" + + echo "📋 Commit Information:" + git show --no-patch --format="%H%n%an%n%ad%n%s" $version + + echo "" + echo "📁 Files changed:" + git show --name-only $version | head -10 + + echo "" + echo "📝 Commit message:" + git show --no-patch --format="%B" $version +} + +# Function to show help +show_help() { + echo "🏭 Production Version Comparison Script" + echo "" + echo "Usage: $0 [COMMAND] [OPTIONS]" + echo "" + echo "Commands:" + echo " versions Show all available versions" + echo " compare Compare two versions" + echo " rollback Create rollback branch from version" + echo " details Show detailed information about version" + echo " diff Show file differences between versions" + echo " help Show this help message" + echo "" + echo "Examples:" + echo " $0 versions" + echo " $0 compare PRODUCTION-BACKUP-v1.0 preview-capabilities-phase1-2" + echo " $0 rollback PRODUCTION-BACKUP-v1.1" + echo " $0 details CURRENT-PRODUCTION" + echo "" + echo "Available versions:" + echo " PRODUCTION-BACKUP-v1.0, PRODUCTION-BACKUP-v1.1, CURRENT-PRODUCTION" + echo " preview-capabilities-phase1-2" +} + +# Main script logic +case "${1:-help}" in + "versions") + show_versions + ;; + "compare") + if [ -z "$2" ] || [ -z "$3" ]; then + print_error "Usage: $0 compare " + exit 1 + fi + compare_versions "$2" "$3" + ;; + "rollback") + if [ -z "$2" ]; then + print_error "Usage: $0 rollback " + exit 1 + fi + create_rollback "$2" + ;; + "details") + if [ -z "$2" ]; then + print_error "Usage: $0 details " + exit 1 + fi + show_version_details "$2" + ;; + "diff") + if [ -z "$2" ] || [ -z "$3" ]; then + print_error "Usage: $0 diff " + exit 1 + fi + git diff --name-status "$2" "$3" + ;; + "help"|*) + show_help + ;; +esac