#!/bin/sh

alterator_api_version=1

. alterator-sh-functions

FACILITIES_DIR=/etc/control.d/facilities
CONTROL=/usr/sbin/control

on_message()
{
	case "$in_action" in
		list)
			case "$in__objects" in
			    facility)
				[ -z "$in_name" ] ||
				    "$CONTROL" "$in_name" list|
				    tr ' ' '\n'|
				    write_enum
				;;
			    /)
				for f in "$FACILITIES_DIR"/*;do
				    local name="${f##*/}"
				    write_table_item \
				        name "$name" \
				        summary "$($CONTROL "$name" summary)" \
				        current "$($CONTROL "$name")"
				done
				;;
			esac
			;;
		read)
			[ -n "$in_name" ] || return

			local mode="$in_mode"
			[ -n "$mode" ] || mode="$("$CONTROL" "$in_name")"

			write_string_param mode "$mode"
			write_string_param help "$("$CONTROL" "$in_name" help "$in_mode")"
			;;
		write)
			retcode=0
			if [ -n "$in_name" -a -n "$in_mode" ];then
				"$CONTROL" "$in_name" "$in_mode"
				retcode=$?
			fi

			[ "$retcode" -eq 0 ] ||
			    write_error "`_ "facility setup failed"`"
			;;
	esac
}

message_loop
