#! /bin/bash
set -e

if [ -z "$2" ] ; then 
    cat <<EOF
$0 [username] [ssh-public-key] [user-id (optional)]

    adds user, using user-id older than the specified value.
    User-id defaults to 1000.

EOF
  exit 1
fi

USERNAME="$1"
SSHPUBKEY="$2"
USERNUM="$3"
test -z "$USERNUM" && USERNUM=1000
USERNUM=$(cat /etc/passwd|awk '{split($0,A,":"); usedid[A[3]]="yes"}END{i='$USERNUM'; while ("yes"==usedid[i]) {i ++;}; print i}')

echo "$USERNAME"::"$USERNUM":"$USERNUM"::"/home/$USERNAME":/bin/bash >> /etc/passwd
echo "$USERNAME:x:$USERNUM:" >> /etc/group
mkdir "/home/$USERNAME"
chown "$USERNAME.$USERNAME" "/home/$USERNAME"
mkdir -p "/home/$USERNAME/.ssh"
echo "$SSHPUBKEY" > /home/$USERNAME/.ssh/authorized_keys
chown "$USERNAME.$USERNAME" "/home/$USERNAME/.ssh"
chown "$USERNAME.$USERNAME" "/home/$USERNAME/.ssh/authorized_keys"
