#!/bin/sh
#Barry Kauler Dec. 2010, license GPL v3 /usr/share/doc/legal.
#based on a script by technosaurus, Dec. 2010.
#101222 fix menu.
#101227 technosaurus: fixed reverse dependency check.
#110505 support sudo for non-root user.
#120202 rodin.s: internationalized.
#120329 Xdialog bug --yesno supposed to "yes" "No" buttons, but they are "OK" "Cancel".
#171026 Update msgs for Quirky. Note, Easy has its own 'remove_builtin' script.

[ "`whoami`" != "root" ] && exec sudo -A ${0} ${@} #110505

export TEXTDOMAIN=remove_builtin
export TEXTDOMAINDIR=/usr/share/locale
export OUTPUT_CHARSET=UTF-8
eval_gettext () {
  local myMESSAGE=$(gettext "$1")
  eval echo \"$myMESSAGE\"
}
export LANGORG=$LANG

#export LANG=C #keep Xdialog happy. #off for gettext

. /etc/rc.d/install.log #171026

Yes_lbl="$(gettext 'Yes')"
No_lbl="$(gettext 'No')"

MSG1="`gettext \"Simple utility to 'delete' packages that are builtin\nto the read-only .sfs file (Squashfs filesystem)\"`"

#!/bin/sh
D=$HOME/.packages/builtin_files

if [ "$INSTALLED_MODE" == "full" ];then #171026
 MSG1="$(gettext "Simple utility to delete packages that are\nbuiltin to Quirky (not user-installed)")"
 MSG2="$(gettext "The packages that are builtin to Quirky cannot be uninstalled by\n
the PKGget Package Manager. However, they can be uninstalled here.")\n\n
$(gettext "Technical note:\n
The lists of builtin files is at /root/.packages/builtin_files,\n
the list of builtin pkgs is in /root/.packages/woof-installed-packages.")"
else
 MSG1="$(gettext "Simple utility to 'delete' packages that are builtin\nto the read-only q.sfs file (Squashfs filesystem)")"
 MSG2="$(gettext "In all modes of running Quirky, other than a full hard-drive installation,\n
all of the Quirky files are in a compressed read-only file named 'q.sfs'.\n
So you can't actually delete these files. However, if you want to remaster the\n
live-CD to create your own custom Quirky, you can use this little program to\n
'pretend' to delete them -- and they will really be gone in the remastered CD.\n
So, for example if you remove SeaMonkey, it will be gone in the remastered CD\n
thus reducing the size of the .iso live-CD file.")\n\n
$(gettext "Technical note:\n
The lists of builtin files is at /root/.packages/builtin_files,\n
the list of builtin pkgs is in /root/.packages/woof-installed-packages.")"
fi

while [ 1 ];do
 FIXMENU='no' #101222
 PKGS=`ls -1 $D`
 PKG=`Xdialog --left --screen-center --backtitle "${MSG1}" --title "$(gettext 'Remove builtin packages')" --stdout --help "${MSG2}" --combobox "$(gettext 'Select package to remove:')" 0 0 $PKGS`
 if [ "$PKG" ];then
  aREGEX="|${PKG}|"
  DESCR="`grep "$aREGEX" /root/.packages/woof-installed-packages |cut -d "|" -f 10`"
  Xdialog --left --screen-center --backtitle "$(gettext 'Confirm that you want to delete') '${PKG}'" --title "$(gettext 'Remove builtin packages')" --ok-label "$Yes_lbl" --cancel-label "$No_lbl" --yesno "$(gettext 'Description of package:')\n
${DESCR}\n\n
$(gettext 'For information only, these are dependencies of') '${PKG}':\n
`grep "$aREGEX" /root/.packages/woof-installed-packages |cut -d "|" -f 9 | sed -e 's%^+%%' -e 's%,+% %g'`
\n
`eval_gettext \"Warning, removing '\\\${PKG}' _may_ break the following packages:\"`\n
`grep +${PKG} /root/.packages/woof-installed-packages |cut -d "|" -f 2 |tr "\n" " "`
\n
$(gettext 'Continue?')" 0 0
  if [ $? -eq 0 ];then
   [ "`grep '\.desktop$' ${D}/${PKG}`" != "" ] && FIXMENU='yes' #101222
   for x in `cat $D/$PKG`; do [ -d $x ] && cd $x || rm $x; done
   for x in `tac $D/$PKG`; do [ -d $x ] && [ ! "`ls $x`" ] && rmdir $x; done
   rm $D/$PKG
   grep -v "$aREGEX" /root/.packages/woof-installed-packages > /tmp/woof-installed-packages-cut2
   mv -f /tmp/woof-installed-packages-cut2 /root/.packages/woof-installed-packages
   MSG1="`eval_gettext \"Package '\\\${PKG}' was removed. Choose another...\"`"
   if [ "$FIXMENU" = "yes" ];then #101222
    fixmenus
    [ "`pidof jwm`" != "" ] && jwm -reload #171026
    sleep 1
   fi
  else
   MSG1="`eval_gettext \"Package '\\\${PKG}' was not removed. Choose another...\"`"
  fi
  #exec remove_builtin.sh "$MSG1"
  continue
 fi
 break
done
