diff options
Diffstat (limited to 'net-mgmt/nefu/pkg-deinstall')
-rw-r--r-- | net-mgmt/nefu/pkg-deinstall | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/net-mgmt/nefu/pkg-deinstall b/net-mgmt/nefu/pkg-deinstall new file mode 100644 index 000000000000..123ea4b8eb97 --- /dev/null +++ b/net-mgmt/nefu/pkg-deinstall @@ -0,0 +1,70 @@ +#! /bin/sh + +ask() { + local question default answer + + question=$1 + default=$2 + if [ -z "${PACKAGE_BUILDING}" -a -z "${BATCH}" ]; then + read -p "${question} [${default}]? " answer + fi + if [ x${answer} = x ]; then + answer=${default} + fi + echo ${answer} +} + +yesno() { + local dflt question answer + + question=$1 + dflt=$2 + while :; do + answer=$(ask "${question}" "${dflt}") + case "${answer}" in + [Yy]*) return 0;; + [Nn]*) return 1;; + esac + echo "Please answer yes or no." + done +} + +delete_account() { + local u g home + + u=$1 + g=$2 + if pw group show ${g} > /dev/null 2>&1; then + if yesno "Do you want me to remove group \"${g}\"" y; then + pw group del -n ${g} + echo "Done." + else + GID=`pw group show ${g} | awk -F: '{ print $3 }'` + fi + fi + if pw user show ${u} > /dev/null 2>&1; then + if yesno "Do you want me to remove user \"${u}\"" y; then + eval home=~${u} + pw user del -n ${u} -r + echo "Done." + if [ -d "${home}" ]; then + echo "Please remember to remove the home directory \"${home}\"" + fi + + # pw user del may have removed the group, too. + # Put it back if the admin asked us to retain it. + if [ -n "$GID" ]; then + pw group show ${g} > /dev/null 2>&1 + if [ $? -ne 0 ]; then + pw group add ${g} + fi + fi + fi + fi +} + +case $2 in + POST-DEINSTALL) + delete_account nefu nefu + ;; +esac |