#!/bin/sh

# load common functions, compatible with local and installed script
. `dirname $0`/../share/eterbuild/functions/common
load_mod git

test -r "$1" && fatal "Do not need any files in params"

set_girar_host $1 && shift

mygetopts()
{

	if [ "$1" = "-h" ] ; then
		echog "gacl - acl control for gear repo in $GIRARHOST"
		echog "Use: gacl [GIRAR] [-$CURRENTBRANCHNAME] | [-b REPONAME]  [package] command [params]"
		echog "Options:"
		echog " -b REPONAME - binary repository name (4.1, 5.0, 5.1 and so on)"
		echog "Examples:"
		echog "    gacl [-$CURRENTBRANCHNAME] package add newuser"
		echog "    gacl [-$CURRENTBRANCHNAME] package del newuser"
		echog "    gacl [-$CURRENTBRANCHNAME] package show"
		echog "Examples for current git project:"
		echog "    gacl [-$CURRENTBRANCHNAME] add newuser"
		echog "    gacl [-$CURRENTBRANCHNAME] show"
		exit 0
	fi

	if [ "$1" = "-b" ] ; then
		BINARYREPONAME="$2"
		shift 2
	fi

	# one param
	if [ -z "$2" ] ; then
		[ "$1" = "show" ] || fatal "See $0 --help for correct options"
		PROJECTNAME=$(get_gear_name)
		COMMAND=$1
	# two param: add newuser or package show
	elif [ -z "$3" ] ; then
		if [ "$1" = "add" ] ; then
			# add newuser
			PROJECTNAME=$(get_gear_name)
			COMMAND=$1
			PARAM=$2
		else
			# package show
			PROJECTNAME=$1
			COMMAND=$2
		fi
	else # 3 or more param
		PROJECTNAME=$1
		COMMAND=$2
		PARAM=$3
	fi

}

#parse_cmd_pre_spec "$@"
parse_cmd_pre "$@"
mygetopts $LISTARGS
# see functions/alt:set_binaryrepo() for BINARYREPONAME
set_binaryrepo $MENV

[ -n "$PROJECTNAME" ] || fatal "Project name is missed"
[ -n "$COMMAND" ] || fatal "Command is missed"

case "$COMMAND" in
	"add"|"del")
		[ -n "$PARAM" ] || fatal "Param for command is missed"
		echo "$GIRARHOST:$BINARYREPO ACL for $PROJECTNAME: $COMMAND $PARAM..."
		ssh $GIRARHOST acl $BINARYREPO $PROJECTNAME $COMMAND $PARAM
		;;
	"show")
		echo -n "$GIRARHOST:$BINARYREPO ACL for "
		ssh $GIRARHOST acl $BINARYREPO $PROJECTNAME $COMMAND
		;;
	*)
		fatal "Unknown command $COMMAND"
		;;
esac

