#!/bin/zsh
#####################################################################

USAGE__options='
	-e, --exit-code         desired exit code of the function (default "0")
	-f, --output-function   one of the zsh/utils output functions (default "SUCCESS")
	-m, --message           a message to display (default "Hello, World!")
'

USAGE__description='
	a simple hello-world-style script which allows specific scwrypts
	conditions to be quickly emulated
'

#####################################################################

MAIN() {
	local OUTPUT_FUNCTION=SUCCESS
	local EXIT_CODE=0
	local MESSAGE='Hello, world!'

	ARGUMENT_REQUIRED() { ERROR "'$1' requires an argument"; }

	while [[ $# -gt 0 ]]
	do
		case $1 in
			-e | --exit-code )
				EXIT_CODE="$2"
				[ $2 ] && shift 1 || ARGUMENT_REQUIRED
				;;
			-f | --output-function )
				OUTPUT_FUNCTION="$2"
				[ $2 ] && shift 1 || ARGUMENT_REQUIRED
				;;
			-m | --message )
				MESSAGE="$2"
				[ $2 ] && shift 1 || ARGUMENT_REQUIRED
				;;
			* ) ERROR "unknown argument '$1'" ;;
		esac
		shift 1
	done

	CHECK_ERRORS

	##########################################

	[[ $OUTPUT_FUNCTION =~ ^FAIL$ ]] && FAIL $EXIT_CODE "$MESSAGE"

	$OUTPUT_FUNCTION "$MESSAGE"
	return $EXIT_CODE
}