gacl 2.21 KB
Newer Older
1 2 3 4 5 6 7 8
#!/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"

9
set_girar_host $1 && shift
10 11 12 13

mygetopts()
{

Vitaly Lipatov's avatar
Vitaly Lipatov committed
14
	if [ "$1" = "-h" ] || [ "$1" = "--help" ] ; then
15
		echog "gacl - acl control for gear repo in $GEARHOST"
16 17 18
		echo
		echog "Usage: gacl [GIRAR] [-b REPONAME] [package] command [params]"
		echo
19
		echog "Options:"
20
		echog "$HELP_GIRAR"
21
		echog "    -b REPONAME  binary repository name (4.1, p5, t6 and so on) (sisyphus by default)"
22 23 24 25 26 27
		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
28
		echog "Examples:"
29 30 31 32 33 34 35
		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"
36 37 38
		exit 0
	fi

39 40 41 42 43
	if [ "$1" = "-b" ] ; then
		BINARYREPONAME="$2"
		shift 2
	fi

44 45 46
	# one param
	if [ -z "$2" ] ; then
		[ "$1" = "show" ] || fatal "See $0 --help for correct options"
47
		PROJECTNAME=$(get_repo_name)
48 49 50 51 52
		COMMAND=$1
	# two param: add newuser or package show
	elif [ -z "$3" ] ; then
		if [ "$1" = "add" ] ; then
			# add newuser
53
			PROJECTNAME=$(get_repo_name)
54 55 56 57 58 59 60 61
			COMMAND=$1
			PARAM=$2
		else
			# package show
			PROJECTNAME=$1
			COMMAND=$2
		fi
	else # 3 or more param
62
		PROJECTNAME=$1
63 64
		COMMAND=$2
		PARAM=$3
65 66 67 68 69 70 71
	fi

}

#parse_cmd_pre_spec "$@"
parse_cmd_pre "$@"
mygetopts $LISTARGS
72
# see functions/alt:set_binaryrepo() for BINARYREPONAME
73 74 75 76 77 78 79 80
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"
81 82
		echo "$GEARHOST:$BINARYREPO ACL for $PROJECTNAME: $COMMAND $PARAM..."
		docmd ssh $GEARHOST acl $BINARYREPO $PROJECTNAME $COMMAND $PARAM
83 84
		;;
	"show")
85 86 87
		showcmd ssh $GEARHOST acl $BINARYREPO $PROJECTNAME $COMMAND
		echo -n "$GEARHOST:$BINARYREPO ACL for "
		ssh $GEARHOST acl $BINARYREPO $PROJECTNAME $COMMAND
88
		echo
89 90 91 92 93 94
		;;
	*)
		fatal "Unknown command $COMMAND"
		;;
esac