#!/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_fname" ] ||
				    "$CONTROL" "$in_fname" 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_fname" ] || return

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

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

			if [ "$retcode" -eq 0 ];then
				write_nop
			else
				write_error "`_ "facility setup failed"`"
			fi
			;;
	esac
}

message_loop
