#!/bin/bash -e

kernels=()
all=0

while read -r line; do
    # line is like usr/lib/modules/5.8.2-arch1-1/vmlinuz
    if [[ "${line}" != usr/lib/modules/* ]]; then
        # triggers when it's a change to usr/lib/booster/*
        all=1
        break
    fi

    kernels+=("/${line%/vmlinuz}")
done

if [ "${all}" -eq "1" ]; then
    # find out all installed kernels
    kernels=($(ls -d /usr/lib/modules/*))
fi

for kernel in "${kernels[@]}"; do
    if ! pacman -Qqo "${kernel}/pkgbase" > /dev/null 2>&1; then
        # if pkgbase does not belong to any package then skip this kernel
        continue
    fi
    read -r pkgbase < "${kernel}/pkgbase"

    booster -force -output /boot/booster-${pkgbase}.img -kernelVersion ${kernel##/usr/lib/modules/} &
    install -Dm644 "${kernel}/vmlinuz" "/boot/vmlinuz-${pkgbase}"
done

wait