#!/bin/sh

op=${0##*-}

name=""
version=""
release=""
kernelrelease=""
flavor=""
variant=""
usrmerged="0"
image=""
certs=""

while true ; do
    case $1 in
	--name)
	    name="$2"
	    shift
	    ;;
	--version)
	    version="$2"
	    shift
	    ;;
	--release)
	    release="$2"
	    shift
	    ;;

	--kernelrelease)
	    kernelrelease="$2"
	    shift
	    ;;
	--flavor)
	    flavor="$2"
	    shift
	    ;;
	--variant)
	    variant="$2"
	    shift
	    ;;

	--usrmerged)
	    # legacy
	    shift
	    ;;
	--image)
	    image="$2"
	    shift
	    ;;
	--certs)
	    certs="$2"
	    shift
	    ;;

	*) break
	    ;;
    esac
    shift
done

[ -z "$KERNEL_PACKAGE_SCRIPT_DEBUG" ] || \
    echo "$op" name: "$name" version: "$version" release: "$release" \
    kernelrelease: "$kernelrelease" flavor: "$flavor" variant: "$variant" \
    usrmerged: "$usrmerged" image: "$image" certs: "$certs" -- "$@" >&2

script_rc=0

case $op in
    pre)
	[ -z "$certs" ] || /usr/lib/module-init-tools/kernel-scriptlets/cert-"$op" --ca-check 1 --certs "$certs" "$@" || script_rc=$?
	;;
    post)
	if [ ! -e /.buildenv ] ; then
	    /usr/sbin/depmod -a "$kernelrelease-$flavor"
	    if [ -z "$TRANSACTIONAL_UPDATE" ]; then
		/usr/bin/sdbootutil --image="$image" add-kernel "$kernelrelease-$flavor"
		# make sure to select the latest kernel
		/usr/bin/sdbootutil set-default-snapshot
		[ -e /usr/lib/systemd/system/purge-kernels.service ] && { :>/boot/do_purge_kernels || :; }
	    fi
	fi
	[ -z "$certs" ] || /usr/lib/module-init-tools/kernel-scriptlets/cert-"$op" --ca-check 1 --certs "$certs" "$@" || script_rc=$?
	;;
    preun)
	[ -z "$certs" ] || /usr/lib/module-init-tools/kernel-scriptlets/cert-"$op" --ca-check 1 --certs "$certs" "$@" || script_rc=$?
	;;
    postun)
	# can't check $1 as kernel is usually multiversion. So need to check if
	# that particular kernel was actually removed from disk.
	if [ ! -e /.buildenv ] && [ ! -e /lib/modules/"$kernelrelease-$flavor/$image" ] ; then
	    [ -z "$TRANSACTIONAL_UPDATE" ] && /usr/bin/sdbootutil --image="$image" remove-kernel "$kernelrelease-$flavor"
	    [ -z "$certs" ] || /usr/lib/module-init-tools/kernel-scriptlets/cert-"$op" --ca-check 1 --certs "$certs" "$@"
	fi
	;;
    posttrans)
	;;
    *)
	echo Unknown scriptlet "$op" >&2
	exit 255
	;;
esac

exit $script_rc

# vim: set sts=4 sw=4 ts=8 noet:
