#!/bin/sh
#
# Run scripts found in /etc/kernel.d/ directories.
#
# Arguments:	$ACTION = [run/targets]
#		$TARGET = [post-install/post-remove]
#		$PKGNAME
#		$VERSION
#		$UPDATE = [yes/no]
#
ACTION="$1"
TARGET="$2"
PKGNAME="$3"
VERSION="$4"
UPDATE="$5"

RUN_TARGETS="pre-install post-install pre-remove post-remove"

case "$ACTION" in
targets)
	echo "${RUN_TARGETS}"
	;;
run)
	# Ignore pre-remove when updating a package.
	if [ "${TARGET}" = "pre-remove" ]; then
		[ "${UPDATE}" = "yes" ] && exit 0
	fi

	# Create required dirs when necessary.
	for _dir_ in ${RUN_TARGETS}; do
		[ ! -d etc/kernel.d/${_dir_} ] && mkdir -p etc/kernel.d/${_dir_}
	done

	# Execute kernel hooks for the specified target.
	for _file_ in etc/kernel.d/${TARGET}/*; do
		[ ! -x "${_file_}" ] && continue
		echo "Executing ${TARGET} kernel hook: $(basename ${_file_}) ..."

		# A package may export "kernel_hooks_version" as a hint
		# to pass this version to the hooks.
		if [ -n "${kernel_hooks_version}" ]; then
			env ROOTDIR="." ${_file_} ${PKGNAME} ${kernel_hooks_version}
		else
			env ROOTDIR="." ${_file_} ${PKGNAME} ${VERSION}
		fi
	done
	;;
*)
	exit 1
	;;
esac

exit 0