#!/bin/bash

# Default values
version=""
kernel=""
initrd=""
copydir="/boot/efi/EFI/Linux"
command="cp -fvp"

# Parse command line arguments
while [[ $# -gt 0 ]]; do
    case $1 in
        --version)
            version="$2"
            shift 2
            ;;
        --kernel)
            kernel="$2"
            shift 2
            ;;
        --initrd)
            initrd="$2"
            shift 2
            ;;
        --copydir)
            copydir="$2"
            shift 2
            ;;
        *)
            echo "Unknown option: $1"
            exit 1
            ;;
    esac
done

# Load configuration if exists
if [ -f /etc/kernel-copyto.conf ]; then
    . /etc/kernel-copyto.conf
fi

# Validate required parameters
if [ -z "$version" ] || [ -z "$kernel" ] || [ -z "$initrd" ]; then
    echo "Error: Missing required parameters" >&2
    exit 1
fi

# Create destination directory if it doesn't exist
mkdir -p "$copydir" || {
    echo "Error: Cannot create directory $copydir" >&2
    exit 1
}

# Function to replace %v with version in filename
format_filename() {
    local filename="$1"
    echo "${filename//%v/$version}"
}

# Copy kernel image
kernel_dest="$copydir/$(format_filename "${kernel}")"
if [ -f "$kernel" ]; then
    echo "Copying kernel: $kernel -> $kernel_dest"
    eval $command "\"$kernel\"" "\"$kernel_dest\""
else
    echo "Warning: Kernel image not found: $kernel" >&2
fi

# Copy initrd
initrd_dest="$copydir/$(format_filename "${initrd}")"
if [ -f "$initrd" ]; then
    echo "Copying initrd: $initrd -> $initrd_dest"
    eval $command "\"$initrd\"" "\"$initrd_dest\""
else
    echo "Warning: Initrd image not found: $initrd" >&2
fi

echo "Kernel copy completed successfully"
