#!/bin/bash #mage manager # version: 0.3.6-r8 source /etc/mage.rc TMPDIR=/tmp/magemanager TMPFILE=${TMPDIR}/categories TMPFILE2=${TMPDIR}/programs TMPFILE3=${TMPDIR}/uninstalldialog TOINSTALLDIR=${TMPDIR}/install TOUNINSTALLDIR=${TMPDIR}/uninstall #clear up && init if [ -e "${TMPDIR}" ] then rm -rf ${TMPDIR} fi install -d ${TOINSTALLDIR} install -d ${TOUNINSTALLDIR} create_dialog_categories() { #tempfile erstellen für categorie dialog echo -e "dialog \\" > $TMPFILE echo -e "--backtitle \"$TITLE\" \\" >> $TMPFILE echo -e "--cancel-label \"Beenden\" \\" >> $TMPFILE echo -e "--ok-label \"Auswahl\" \\" >> $TMPFILE echo -e "--stdout \\" >> $TMPFILE echo -e "--extra-button \\" >> $TMPFILE echo -e "--extra-label \"Install\" \\" >> $TMPFILE echo -e "--menu \"Bitte Kategorie auswaehlen:\" 14 70 7 \\" >> $TMPFILE for i in ${MAGEDIR}/* do if [ -d ${i} ] then echo "$(basename ${i}) \"\" \\" >> $TMPFILE fi done echo -e "\n" >> $TMPFILE chmod a+x $TMPFILE } create_dialog_programs() { ##temp file erstellen für programme dialog echo -e "dialog \\" > $TMPFILE2 echo -e "--backtitle \"$TITLE\" \\" >> $TMPFILE2 echo -e "--cancel-label \"Abbrechen\" \\" >> $TMPFILE2 #echo -e "--ok-label \"Weiter\" \\" >> $TMPFILE2 echo -e "--stdout \\" >> $TMPFILE2 #echo -e "--extra-button \\" >> $TMPFILE2 #echo -e "--extra-label \"Uninstall\" \\" >> $TMPFILE2 echo -e "--checklist \"Bitte Programm auswaehlen:\" 14 70 7 \\" >> $TMPFILE2 for i in ${MAGEDIR}/${CATEGORIE}/* do if [ -f ${i} ] then #check if installed = 0 (true) if [ "$(check_installed ${i} )" == "0" ] then echo "$(basename ${i}) \"\" "on" \\" >> $TMPFILE2 else echo "$(basename ${i}) \"\" "off" \\" >> $TMPFILE2 fi fi done echo -e "\n" >> $TMPFILE2 chmod a+x $TMPFILE2 } #aufruf: check_installed $@ (bsp check_installed foo-1.0.mage dev-libs/foo-2.0-r1.mage) check_installed(){ #note 0= true 1=false #delete var unset installed local installed local searchfile #for i in $@ #do #searchfile="$(basename ${i} .mage)" searchfile="$(basename $1 .mage)" if [ -d "${INSTALLDB}/${searchfile}" ] then installed=0 else installed=1 fi #done #an return ${installed} echo ${installed} } create_dialog_uninstall() { echo -e "dialog \\" > $TMPFILE3 echo -e "--backtitle \"$TITLE\" \\" >> $TMPFILE3 echo -e "--cancel-label \"Beenden\" \\" >> $TMPFILE3 echo -e "--ok-label \"Uninstall\" \\" >> $TMPFILE3 echo -e "--stdout \\" >> $TMPFILE3 #echo -e "--extra-button \\" >> $TMPFILE3 #echo -e "--extra-label \"Uninstall\" \\" >> $TMPFILE3 echo -e "--checklist \"Bitte Programme waehlen:\" 14 70 7 \\" >> $TMPFILE3 for i in ${INSTALLDB}/* do if [ -d ${i} ] then echo "$(basename ${i}) \"\" "off" \\" >> $TMPFILE3 fi done echo -e "\n" >> $TMPFILE3 chmod a+x $TMPFILE3 } #aufruf: dialog_install ${magefile} dialog_install() { magefile="$1" dialog \ --backtitle "$TITLE" \ --infobox "Setting up ${magefile} ..." 3 70 } #aufruf: dialog_uninstall ${magefile} dialog_uninstall() { magefile="$1" dialog \ --backtitle "$TITLE" \ --infobox "Removing ${magefile} ..." 3 70 } dialog_update() { dialog \ --backtitle "$TITLE" \ --infobox "Updating Mage Tree from ${RSYNC} ..." 3 70 } dialog_clean() { dialog \ --backtitle "$TITLE" \ --infobox "Cleaning up ..." 3 70 } dialog_choose_what() { dialog \ --stdout \ --backtitle "$TITLE" \ --cancel-label "Beenden" \ --menu "What do you want todo today ?" 12 70 4 \ "install" "Installiert Programme" \ "uninstall" "Deinstalliert Programme" \ "update" "Aktualisiert den Mage-Tree" \ "clean" "Löscht heruntergeladene Packete" } ################## Mainpart begins here ################################ TODO="$(dialog_choose_what)" if [ "${TODO}" == "install" ] then RETCAT=-1 while [ $RETCAT -ne 1 ] do create_dialog_categories CATEGORIE="`$TMPFILE`" RETCAT="$?" if [ "${RETCAT}" == "0" ] then create_dialog_programs PROGRAM="`$TMPFILE2`" RETPROG="$?" if [ "$RETPROG" == "0" ] then echo "$PROGRAM" > ${TOINSTALLDIR}/${CATEGORIE} fi fi #if [ "$RETPROG" == "0" ] #then # echo "$PROGRAM" > ${TOINSTALLDIR}/${CATEGORIE} #fi #debug #echo "${CATEGORIE}/${PROGRAM}" ##run install if [ "$RETCAT" == "3" ] then for cat in ${TOINSTALLDIR}/* do for prog in $(cat ${cat}) do ### cat hat full path -> basename; inhalt von prog hat klammern -> sed #echo "$(basename ${cat})/$(echo ${prog}|sed -e 's:\"::g')" magefile=$(basename ${cat})/$(echo ${prog}|sed -e 's:\"::g') ( mage install $magefile &> /dev/null ) | dialog_install $magefile done done #force an exit #RETCAT=1 #unset variables and delete tmpfiles CATEGORIE="" PROGRAM="" for i in ${TOINSTALLDIR}/* do rm -f ${i} done fi done fi if [ "${TODO}" == "uninstall" ] then create_dialog_uninstall UNINSTALL="`$TMPFILE3`" RETUNINST="$?" echo "${UNINSTALL}" > ${TOUNINSTALLDIR}/uninstall if [ "$RETUNINST" == "0" ] then for i in $(cat ${TOUNINSTALLDIR}/uninstall) do magefile=$(echo ${i}|sed -e 's:\"::g') SELECTED="$(find ${MAGEDIR} -name ${magefile}*)" CATEGORIE=$(dirname ${SELECTED#${MAGEDIR}/*}) PROGRAM="$(basename ${SELECTED})" magefile=${CATEGORIE}/${PROGRAM} ( mage uninstall $magefile &> /dev/null ) | dialog_uninstall $magefile unset magefile unset PROGRAM unset CATEGORIE unset SELECTED done fi #dialog_choose_what fi if [ "${TODO}" == "update" ] then ( mage update &> /dev/null ) | dialog_update #dialog_choose_what fi if [ "${TODO}" == "clean" ] then ( mage clean &> /dev/null ) | dialog_clean #dialog_choose_what fi