#!/bin/bash

# Nepracujeme s /etc/passwd, /etc/shadow a /etc/group, ale s kopiemi:

ROOT="."

passwd="${ROOT}/etc/passwd"
group="${ROOT}/etc/group"
shadow="${ROOT}/etc/shadow"
temp="/tmp/ptmp"

progname=$0			# Uschovame jmeno programu (pro chybove hlasky)

#====================== Inicializace promennych=========================

drophome=false			# -r
quiet=false				# --quiet

if [ -f "$shadow" ]; then shadowenable=1; else shadowenable=0; fi

# ------------- Kontrola a zpracovani prikazove radky --------------
usage() {
    echo "Usage: $progname [-r] user">&2
    exit 2
}

shouterror() {								#======= fce na error s kontrolou quiet
    if ! $quiet; then
        echo $1>&2 
    	exit 2 
    fi
}

shout() {								#======= fce na echo s kontrolou quiet
    if ! $quiet; then
        echo $1
    fi    
}

checkshadow() {								#======== kontrola shadow
    if [ $shadowenable -eq 0 ]; then
       echo $progname: $shadow not found>&2
       exit 14
    fi
}


if [ $# -eq 0 ]; then usage; fi						#========= kdyz nemam parametry kaslu na to

while [ $# -ne 0 ]; do							#========= jinak dokud je mam zpracovavam ;)
  case $1 in
    --help)    		usage ;;
    --version) 		echo "$progname version 0.0.0 ;)" 
                 	exit 2 ;;
    --quiet)		quiet=true ;;
    -r)				drophome=true ;;
    *)				if [ $# -eq 1 ]; then 
    				    username=$1
    				else
    				    usage 
    				fi ;;
  esac
  shift 
done


homedir=`grep -n "^${username}:" $passwd | cut -d: -f6`

shout "Droping user \`$username\`."

#============= nejdrive vyridime odebrani uzivatele ze skupin ================
shout "Droping user \`$username\` from groups."
cat "$group" | sed 's/:${username},/:/g' | sed 's/,${username},/,/g' | sed 's/,${username}\n/,\n/g' > "$temp"
cat "$temp" > "$group"; rm "$temp"
grep -v "^${username}:" "$group" > "$temp"
cat "$temp" > "$group"; rm "$temp"

if [ $shadowenable -eq 1 ] && grep -n "^${username}:" $shadow > /dev/null; then
	shout "Clearing user \`$username\` from shadow."
	grep -v "^${username}:" "$shadow" > "$temp"
	cat "$temp" > "$shadow"; rm "$temp"
fi

if [ -f $passwd ] && grep -n "^${username}:" $passwd > /dev/null; then
	grep -v "^${username}:" "$passwd" > "$temp"
	cat "$temp" > "$passwd"; rm "$temp"
fi

if $drophome && [ -d "$homedir" ]; then
	shout "Removing user \`$username\` home \`$homedir\`."
	rm -r $homedir
fi

exit 1
