#!/bin/sh

FACILITIES_DIR=/etc/control.d/facilities

fatal()
{
	echo "${0##*/}: $*" >&2
	exit 1
}

embolden()
{
	local i sep= status=$1
	shift
	for i; do
		[ "$status" = "$i" ] &&
			printf '%s%s%s%s' "$sep" "$BOLD" "$i" "$RESET" ||
			printf '%s%s' "$sep" "$i"
		sep=' '
	done
}

if [ $# -eq 0 ]; then
	if [ -t 1 ] && [ -z "${NO_COLOR-}" ]; then
		BOLD=$(tput bold 2>/dev/null)
		RESET=$(tput sgr0 2>/dev/null)
	else
		BOLD=
		RESET=
	fi
	ls -1 $FACILITIES_DIR/ |
	while read FACILITY; do
		case "$FACILITY" in
			*.rpm*|*.orig|*~) continue ;;
		esac
		LIST="`$FACILITIES_DIR/$FACILITY list`"
		STATUS="`$FACILITIES_DIR/$FACILITY status`"
		[ -n "${FACILITY##_*}" ] || FACILITY="${FACILITY//_//}"
		[ -z "$BOLD" ] || LIST=$(embolden "$STATUS" $LIST)
		printf "%-15s %-15s (%s)\n" "$FACILITY" "$STATUS" "$LIST"
	done
	exit
fi

FACILITY="$1"
shift

case "$FACILITY" in
	--help)
		a= exec man 8 control
		exit
		;;
	--version)
		echo 0.8.1-alt1
		exit
		;;
esac

REQUESTED_FACILITY="$FACILITY"
FACILITY="${FACILITY//\//_}"

if [ -x "$FACILITIES_DIR/$FACILITY" ]; then
	$FACILITIES_DIR/$FACILITY "$*" || exit 1
	case "$*" in
		''|help|'help '*|list|status|summary)
			exit 0
			;;
	esac
	STATUS="`$FACILITIES_DIR/$FACILITY status`"
	if [ "$STATUS" != "$*" ]; then
		fatal "$REQUESTED_FACILITY: Requested $*, got $STATUS"
	fi
	exit 0
else
	fatal "No such facility: $FACILITY"
fi
