#!/bin/bash
#
#
#
# pacman menu interface
# Copyright 2005 Tony Brijeski
# Licensed under the GPL2 license which can be found here
# http://www.gnu.org/licenses/licenses.html
#
# Version 1 - basic package removal and installation along with refresh
# and updating options
#

#Check for a global config file if someone wants to make some changes
if [ -f /etc/pacmenu.conf ]; then
. /etc/pacmenu.conf
else
#just use the defaults below if there is no global config file
pacinstall="pacman -S "
pacremove="pacman -Rc "
pacrefresh="pacman -Sy"
pacupdate="pacman -Syu"
fi

main () {

dialog --clear --title "Pacman Package Manager Menu V 1.0" --menu \
"\n\n        Select the function you want and press enter \n\n\n" 18 65 7 \
"INSTALL" "Install new packages" \
"GINSTALL" "Install new groups" \
"REMOVE" "Remove installed packages" \
"GREMOVE" "Remove installed groups" \
"REFRESH" "Refresh the package database" \
"UPDATE" "Refresh the package database and update the system" \
"EXIT" "Quit Pacmenu" 2>/tmp/pacmenu.tmp

case $? in
0)
CHOICE=`cat /tmp/pacmenu.tmp`
rm -f /tmp/pacmenu.tmp
$CHOICE
;;
*)
exit 0
;;
esac
}

INSTALL () {
dialog --infobox "Please wait...Creating Package Install Menu" 3 48
pacman -Sl | awk '{print $2" "$3}' >/tmp/pacman.tmpinst
sort /tmp/pacman.tmpinst > /tmp/pacman.inst
rm -f /tmp/pacman.tmpinst
pacman -Q >/tmp/pacman.installed
rm -f /tmp/pacmenu.instmenu
cat /tmp/pacman.inst | while read LINE; do

pkgname=`echo $LINE | awk '{print $1}'`
pkgversion=`echo $LINE | awk '{print $2}'`
tst=""
tst=`grep $pkgname /tmp/pacman.installed`
if [ "$tst" = "" ]; then
echo -n "$pkgname $pkgversion ">>/tmp/pacmenu.instmenu
else 
ipkgname=`echo $tst | awk '{print $1}'`
ipkgversion=`echo $tst | awk '{print $2}'`
if [ "$pkgname" != "$ipkgname" ] && [ "$pkgversion" != "$ipkgversion" ]; then
echo -n "$pkgname $pkgversion ">>/tmp/pacmenu.instmenu
fi
fi
done
rm -f /tmp/pacman.inst /tmp/pacman.installed
pkginstmenu=`cat /tmp/pacmenu.instmenu`
rm -f /tmp/pacmenu.instmenu
dialog --clear --title "Pacman Package Install Menu" --menu \
"\n          Please select the package to install \n         Package Name                  Package Version" 23 70 15 \
$pkginstmenu 2>/tmp/pacman.instchoice
case $? in
0)
pkgpick=`cat /tmp/pacman.instchoice`
rm -f /tmp/pacman.instchoice
$pacinstall $pkgpick
echo " "
echo "Finished installing package(s)"
echo " "
echo "Press enter to continue"
read
INSTALL
;;
*)
rm -f /tmp/pacman.instchoice
;;
esac
}


GINSTALL () {
dialog --infobox "Please wait...Creating Group Install Menu" 3 48
pacman -Sg >/tmp/pacman.tmpinst
sort /tmp/pacman.tmpinst > /tmp/pacman.inst
rm -f /tmp/pacman.tmpinst
pacman -Qg | awk '{print $1}' >/tmp/pacman.installedu
uniq /tmp/pacman.installedu > /tmp/pacman.installed
rm -f /tmp/pacmenu.instmenu /tmp/pacman.installedu
cat /tmp/pacman.inst | while read LINE; do

pkgname="$LINE"
tst=""
tst="`grep $pkgname /tmp/pacman.installed`"
echo $tst | while read LINE2; do
tst2="$tst2 `echo -n $LINE2`"
done

 
if [ "$tst" = "" ]; then
echo -n "$pkgname $pkgname-group ">>/tmp/pacmenu.instmenu
else 
case $tst2 in
$pkgname)
echo -n "$pkgname $pkgname-group ">>/tmp/pacmenu.instmenu
;;
esac
fi
done
rm -f /tmp/pacman.inst /tmp/pacman.installed
pkginstmenu=`cat /tmp/pacmenu.instmenu`
rm -f /tmp/pacmenu.instmenu
dialog --clear --title "Pacman Group Package Install Menu" --menu \
"\n          Please select the group to install" 23 70 15 \
$pkginstmenu 2>/tmp/pacman.instchoice
case $? in
0)
pkgpick=`cat /tmp/pacman.instchoice`
rm -f /tmp/pacman.instchoice
$pacinstall $pkgpick
echo " "
echo "Finished installing group packages"
echo " "
echo "Press enter to continue"
read
GINSTALL
;;
*)
rm -f /tmp/pacman.instchoice
;;
esac
}


REMOVE () {
rm -f /tmp/pacmenu.remove
dialog --infobox "Please wait...Creating Package Remove Menu" 3 48
pacman -Q >/tmp/pacman.installed
cat /tmp/pacman.installed | while read LINE; do

pkgname=`echo $LINE | awk '{print $1}'`
pkgversion=`echo $LINE | awk '{print $2}'`
tst=`grep $pkgname /tmp/pacman.installed`
#echo -n '"'$pkgname'" "'$pkgversion'" '>>/tmp/pacmenu.instmenu
echo -n "$pkgname $pkgversion ">>/tmp/pacmenu.remove
done
rm -f /tmp/pacman.installed
pkgremmenu=`cat /tmp/pacmenu.remove`
rm -f /tmp/pacmenu.remove
dialog --clear --title "Pacman Package Remove Menu" --menu \
"\n          Please select the package to remove \n         Package Name                  Package Version" 23 70 15 \
$pkgremmenu 2>/tmp/pacman.remchoice
case $? in
0)
pkgpick=`cat /tmp/pacman.remchoice`
rm -f /tmp/pacman.remchoice
$pacremove $pkgpick
echo " "
echo "Finished removing package(s)"
echo " "
echo "Press enter to continue"
read
REMOVE
;;
*)
rm -f /tmp/pacman.remchoice
;;
esac
 
}

GREMOVE () {
rm -f /tmp/pacmenu.remove
dialog --infobox "Please wait...Creating Group Remove Menu" 3 48
pacman -Qg | awk '{print $1}' >/tmp/pacman.installedu
uniq /tmp/pacman.installedu > /tmp/pacman.installed
rm -f /tmp/pacman/installedu
cat /tmp/pacman.installed | while read LINE; do

pkgname="$LINE"
echo -n "$pkgname $pkgname-group ">>/tmp/pacmenu.remove
done
rm -f /tmp/pacman.installed
pkgremmenu=`cat /tmp/pacmenu.remove`
rm -f /tmp/pacmenu.remove
dialog --clear --title "Pacman Group Package Remove Menu" --menu \
"\n          Please select the group to remove" 23 70 15 \
$pkgremmenu 2>/tmp/pacman.remchoice
case $? in
0)
pkgpick=`cat /tmp/pacman.remchoice`
rm -f /tmp/pacman.remchoice
$pacremove $pkgpick
echo " "
echo "Finished removing group packages"
echo " "
echo "Press enter to continue"
read
GREMOVE
;;
*)
rm -f /tmp/pacman.remchoice
;;
esac
 
}


REFRESH () {
clear
$pacrefresh
echo " "
echo "Finished Refreshing the package database"
echo " "
echo "Press enter to continue"
read
}

UPDATE () {
clear
$pacupdate
echo " "
echo "Finished Updating the system"
echo " "
echo "Press enter to continue"
read
}


EXIT () {
exit 0
}





while [ 0 ]; do
main
done

