Almost done

This commit is contained in:
Jack-Benny Persson 2014-01-11 12:32:32 +01:00
parent be3a6f49aa
commit 91665b4f0d

View File

@ -26,6 +26,7 @@ Author="Jack-Benny Persson (jack-benny@cyberinfo.se)"
# Binaries
Which="/usr/bin/which"
Aptget="/usr/bin/apt-get"
# Binaries entered in the list will be avalible to the script as variables with
# the first letter uppercase
Binaries=(dpkg sed awk egrep printf cat grep mktemp rm tail zenity)
@ -47,66 +48,104 @@ print_help()
print_version
$Printf "$Author\n"
$Printf "dpkg-frontend\n"
/bin/cat <<-EOT
/bin/cat <<-EOT
Options:
-h
Print detailed help screen
-V
Print version information
-v
Verbose output
EOT
Options:
-h
Print detailed help screen
-V
Print version information
-v
Verbose output
EOT
}
# Dialog for package searching
search_pkg()
{
Search=`$Zenity --title "dpkg-frontend" --entry \
--text="Search for package"`
if [ $? -eq 1 ]; then
return 1
fi
$Dpkg --list | $Awk '{ print $2 }' | $Egrep -x $Search &> /dev/null
if [ $? -eq 0 ]; then
return 0
else
return 5
fi
Search=`$Zenity --title "dpkg-frontend" --entry \
--text="Search for package"`
if [ $? -eq 1 ]; then
return 1
fi
$Dpkg --list | $Awk '{ print $2 }' | $Egrep -x $Search &> /dev/null
if [ $? -eq 0 ]; then
return 0
else
return 5
fi
}
uninstall_pkg()
{
$Zenity --title "dpkg-frontend" \
--question \
--text="Package $Search is installed.\nUninstall ${Search}?"
if [ $? -eq 0 ]; then # CHANGE NEXT LINE
sleep 3 | $Zenity --title "dpkg-frontend" \
--progress --pulsate --text "Uninstalling ${Search}..."
fi
$Zenity --title "dpkg-frontend" \
--question \
--text="Package <b>$Search</b> is installed.\nUninstall <b>${Search}</b>?"
if [ $? -eq 0 ]; then # CHANGE NEXT LINE
$Dpkg -r $Search | $Zenity --title "dpkg-frontend" \
--progress --pulsate --text "Uninstalling <b>${Search}</b>..."
fi
}
install_pkg()
{
echo "Install pkg?"
$Aptget install $Search -y | \
$Zenity --title "dpkg-fronend" --progress --pulsate \
--text "Installing package <b>$Search</b>"
if [ $? -eq 0 ]; then
$Zenity --title "dpkg-frontend" --info \
--text="Succesfully installed <b>$Search</b>"
exit 0
else
$Zenity --title "dpkg-frontend" --error \
--text="Something went wrong with the installation of <b>$Search</b>"
exit 1
fi
}
show_selections()
{
Selections=`dpkg --get-selections $Search | awk '{ print $2 }'`
$Zenity --title "dpkg-frontend" \
--info --text "Selections for $Search is: <b>${Selections}</b>"
Selections=`dpkg --get-selections $Search | awk '{ print $2 }'`
$Zenity --title "dpkg-frontend" \
--info --text "Selections for <b>$Search</b> is: <b>${Selections}</b>"
}
set_selections()
{
SetSelections=`$Zenity --title "dpkg-frontend" --entry \
--text="Type selections for package <b>$Search</b>"`
echo "$Search $SetSelections" | $Dpkg --set-selections
if [ $? -eq 0 ]; then
$Zentiy --title "dpkg-frontend" --info \
--text "<b>${SetSelections}</b> is set for <b>${Search}</b>"
else
$Zenity --title "dpkg-frontend" --error \
--text "Couldn't set selections for <b>$Search</b>"
fi
}
show_info()
{
Info=`$Dpkg --status $Search`
$Zenity --no-markup --title "dpkg-frontend" --info \
--text "$Info"
}
choice_dialog()
{
Choice=`$Zenity --list --column=Action --column=Description \
--radiolist uninstall "Uninstall" show "Show selections"`
if [ "$Choice" == "Uninstall" ]; then
return 11
elif [ "$Choice" == "Show selections" ]; then
return 12
fi
Choice=`$Zenity --list --column=Action --column=Description \
--radiolist uninstall "Uninstall" set "Set selections" \
show "Show selections" \
info "Show information"`
if [ "$Choice" == "Uninstall" ]; then
return 11
elif [ "$Choice" == "Show selections" ]; then
return 12
elif [ "$Choice" == "Show information" ]; then
return 13
elif [ "$Choice" == "Set selections" ]; then
return 14
fi
}
# Create variables with absolute path to binaries and check
@ -114,7 +153,7 @@ choice_dialog()
# variables with first character uppercase, such as Grep)
Count=0
for i in ${Binaries[@]}; do
$Which $i &> /dev/null
$Which $i &> /dev/null
if [ $? -eq 0 ]; then
declare $(echo ${Binaries[$Count]^}=`${Which} $i`)
((Count++))
@ -124,6 +163,13 @@ for i in ${Binaries[@]}; do
fi
done
# Check if we are root
if [ $EUID -ne 0 ]; then
$Zenity --title "dpkg-frontend" --error \
--text "You need to run <b>dpkg-frontend</b> as root"
exit 1
fi
# Parse command line options and arguments
while getopts Vvho: Opt; do
case "$Opt" in
@ -142,22 +188,31 @@ while getopts Vvho: Opt; do
esac
done
### Main ###
search_pkg
if [ $? -eq 1 ]; then
exit 0
elif [ $? -eq 5 ]; then
$Zenity --title "dpkg-frontend" --info \
--text="Package $Search is not installed"
exit 1
fi
case $? in
1) exit 0
;;
5) $Zenity --title "dpkg-frontend" --question \
--text="Package <b>$Search</b> is not installed. Install it?"
if [ $? -eq 0 ]; then
install_pkg
else
exit 1
fi
;;
esac
choice_dialog
if [ $? -eq 11 ]; then
uninstall_pkg
elif [ $? -eq 12 ]; then
show_selections
fi
case $? in
11) uninstall_pkg
;;
12) show_selections
;;
13) show_info
;;
14) set_selections
;;
esac
exit 0