#!/bin/sh

REQUESTOR="$1"
GROUP="$2"
MEMBER="$3"
test -z "$MEMBER" && \
  echo "Usage: groups-join requestor groupname member [groupfile]" 1>&2 && exit 1

if test -z "$NO_SYSUTILS"; then
	/usr/sbin/adduser "$MEMBER" "$GROUP" || exit 1
	echo "Added $MEMBER to group $GROUP for $REQUESTOR"
	exit 0
fi

GROUPFILE="$4"
test -z "$GROUPFILE" && GROUPFILE=./test

! grep -q "^$GROUP:" "$GROUPFILE" && \
  echo "Error: no such group: $GROUP" 1>&2 && exit 1

echo "$MEMBER" | grep -qvx '[a-z][a-z0-9]*' && \
  echo "Error: invalid member name: $MEMBER" 1>&2 && exit 1

grep -q "^$GROUP:.*\<$MEMBER\>" "$GROUPFILE" && \
  echo "Error: $MEMBER already member of $GROUP" 1>&2 && exit 1

sed -i.bak -e "/^$GROUP:/{;s/$/,$MEMBER/;s/:,/:/;}" "$GROUPFILE"
echo "Added $MEMBER to group $GROUP for $REQUESTOR"

