#!/bin/sh -e
#
# Runs update-initramfs(8) to create/update an initramfs for specified
# version (if the pkg that is triggering it) or for the currently
# installed kernel otherwise.
#
# Arguments:	$ACTION = [run/targets]
#		$TARGET = [post-install/post-remove]
#		$PKGNAME
#		$VERSION
#		$UPDATE = [yes/no]
#
ACTION="$1"
TARGET="$2"
PKGNAME="$3"
VERSION="$4"
UPDATE="$5"

update_initramfs=usr/sbin/update-initramfs

case "$ACTION" in
targets)
	echo "post-install post-remove"
	;;
run)
	[ ! -x ${update_initramfs} ] && exit 0

	if [ "$PKGNAME" = "kernel" ]; then
		if [ "$TARGET" = "post-remove" ]; then
			exit 0
		fi
		if [ ! -f var/lib/initramfs-tools/${VERSION} ]; then
			# Create new initramfs
			initramfs_args="-B -c -t -k ${VERSION}"
		else
			# Update existing initramfs
			initramfs_args="-B -u -t -k ${VERSION}"
		fi
	else
		# Update initramfs for all kernels
		initramfs_args="-B -u -t -k all"
	fi

	if [ ! -e /proc/filesystems ]; then
		mount -t proc proc /proc
		proc_mounted=1
	fi

	if [ ! -e /sys/kernel/vmcoreinfo ]; then
		mount -t sysfs sysfs /sys
		sys_mounted=1
	fi

	${update_initramfs} ${initramfs_args}

	if [ -x usr/sbin/grub-mkconfig ]; then
		usr/sbin/grub-mkconfig -o boot/grub/grub.cfg
	fi

	if [ -n "$proc_mounted" ]; then
		umount /proc
	fi
	if [ -n "$sys_mounted" ]; then
		umount /sys
	fi
	;;
*)
	exit 1
	;;
esac

exit 0
