#!/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" ] || [ "$1" = "--help" ] ; then
		echog "gacl - acl control for gear repo in $GEARHOST"
		echo
		echog "Usage: gacl [GIRAR] [-b REPONAME] [package] command [params]"
		echo
		echog "Options:"
		echog "$HELP_GIRAR"
		echog "    -b REPONAME  binary repository name (4.1, p5, t6 and so on) (sisyphus by default)"
		echo
		echog "Commands:"
		echog "    add USER  add new user to ACL list for package"
		echog "    del USER  del user from ACL list for package"
		echog "    show      show current ACL list"
		echo
		echog "Examples:"
		echog "    gacl package add newuser"
		echog "    gacl package del newuser"
		echog "    gacl -b p6 package show"
		echo
		echog "Examples for git project from current dir:"
		echog "    gacl add newuser"
		echog "    gacl -b p6 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_repo_name)
		COMMAND=$1
	# two param: add newuser or package show
	elif [ -z "$3" ] ; then
		if [ "$1" = "add" ] ; then
			# add newuser
			PROJECTNAME=$(get_repo_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 "$GEARHOST:$BINARYREPO ACL for $PROJECTNAME: $COMMAND $PARAM..."
		docmd ssh $GEARHOST acl $BINARYREPO $PROJECTNAME $COMMAND $PARAM
		;;
	"show")
		showcmd ssh $GEARHOST acl $BINARYREPO $PROJECTNAME $COMMAND
		echo -n "$GEARHOST:$BINARYREPO ACL for "
		ssh $GEARHOST acl $BINARYREPO $PROJECTNAME $COMMAND
		echo
		;;
	*)
		fatal "Unknown command $COMMAND"
		;;
esac

