#!/bin/sh
# Taken action* from /etc/rc.d/init.d/halt (startup-0.9.8.11-alt1)
#
# Taken echo*, SETCOLOR_*, MOVE_TO_COL and first initialization
# from /etc/rc.d/init.d/functions (service-0.5.14-alt1)

BOOTUP="${BOOTUP:-}"

# Read in our configuration
if [ -z "$BOOTUP" ]; then
	. /etc/sysconfig/init
	[ -n "$BOOTUP" ] || BOOTUP=color
fi

if [ -x /sbin/consoletype ] && [ "$(consoletype)" = serial ]; then
	BOOTUP=serial
fi

MOVE_TO_COL()     { :; }
SETCOLOR_BANNER() { :; }
SETCOLOR_FAILURE(){ :; }
SETCOLOR_INFO()   { :; }
SETCOLOR_NORMAL() { :; }
SETCOLOR_SUCCESS(){ :; }
SETCOLOR_WARNING(){ :; }
if [ "$BOOTUP" = color ]; then
	. /etc/init.d/outformat
fi

echo_success() {
	MOVE_TO_COL
	echo -n '[ '
	SETCOLOR_SUCCESS
	echo -n 'DONE'
	SETCOLOR_NORMAL
	echo -ne ' ]\r'
	return 0
}

echo_failure() {
	MOVE_TO_COL
	echo -n '['
	SETCOLOR_FAILURE
	echo -n 'FAILED'
	SETCOLOR_NORMAL
	echo -ne ']\r'
	return 1
}

echo_passed() {
	MOVE_TO_COL
	echo -n '['
	SETCOLOR_WARNING
	echo -n 'PASSED'
	SETCOLOR_NORMAL
	echo -ne ']\r'
	return 1
}

action_begin_msg() {
	[ -z "$*" ] || printf '%s ' "$*"
}

action_end_msg() {
	local rc=$1
	if [ "$BOOTUP" = color ]; then
		[ $rc = 0 ] && echo_success || echo_failure
	fi
	echo
}

action_passed_msg() {
	[ "$BOOTUP" != color ] ||
		echo_passed
	echo
}

action() {
	action_begin_msg "$1"
	shift
	$*
	local rc=$?
	action_end_msg "$rc"
	return $rc
}
