#!/bin/bash

# Gapify Live Chat Plugin - Shared Packaging Functions
# Common functions used by both packaging scripts

# Load configuration
source "$(dirname "$0")/config.sh"

# Function: Create temporary directory and copy required files
create_temp_directory() {
    local temp_dir="$1"
    local include_assets="$2"
    
    echo "Creating temporary directory: $temp_dir"
    rm -rf "$temp_dir"
    mkdir "$temp_dir"
    
    # Copy required files
    for file in "${REQUIRED_FILES[@]}"; do
        if [ -e "$file" ]; then
            cp -r "$file" "$temp_dir/"
        else
            echo "⚠️  Warning: Required file '$file' not found"
        fi
    done
    
    # Copy optional files
    for file in "${OPTIONAL_FILES[@]}"; do
        if [ -f "$file" ]; then
            cp "$file" "$temp_dir/"
        fi
    done
    
    # Copy assets if requested
    if [ "$include_assets" = "true" ]; then
        copy_assets "$temp_dir"
    fi
}

# Function: Copy assets to temporary directory
copy_assets() {
    local temp_dir="$1"
    
    if [ -d "assets" ]; then
        echo "Copying assets from assets/ directory..."
        mkdir -p "$temp_dir/assets"
        
        # Copy asset files
        for pattern in "${ASSET_FILES[@]}"; do
            if ls $pattern >/dev/null 2>&1; then
                cp $pattern "$temp_dir/assets/" 2>/dev/null || true
            fi
        done
        
        echo "✓ Plugin assets copied"
    fi
    
    # Copy legacy assets (for backward compatibility)
    for pattern in "${LEGACY_ASSET_FILES[@]}"; do
        if ls $pattern >/dev/null 2>&1; then
            cp $pattern "$temp_dir/" 2>/dev/null || true
            echo "⚠ Found legacy assets in root - consider moving to assets/ directory"
        fi
    done
}

# Function: Create zip file
create_zip_file() {
    local zip_name="$1"
    local temp_dir="$2"
    
    echo "Creating zip file: $zip_name"
    rm -f "$zip_name"
    cd "$temp_dir"
    zip -r "../$zip_name" .
    cd ..
}

# Function: Clean up temporary directory
cleanup_temp_directory() {
    local temp_dir="$1"
    rm -rf "$temp_dir"
}

# Function: Display package contents
display_package_contents() {
    local zip_name="$1"
    echo ""
    echo "Contents:"
    unzip -l "$zip_name"
}

# Function: Validate required files exist
validate_required_files() {
    local missing_files=()
    
    for file in "${REQUIRED_FILES[@]}"; do
        if [ ! -e "$file" ]; then
            missing_files+=("$file")
        fi
    done
    
    if [ ${#missing_files[@]} -gt 0 ]; then
        echo "❌ Error: Missing required files:"
        printf '  - %s\n' "${missing_files[@]}"
        exit 1
    fi
    
    echo "✅ All required files found"
}

# Function: Get package size
get_package_size() {
    local zip_name="$1"
    if [ -f "$zip_name" ]; then
        local size=$(du -h "$zip_name" | cut -f1)
        echo "$size"
    else
        echo "unknown"
    fi
}
