home *** CD-ROM | disk | FTP | other *** search
Wrap
# SelPkgs - selektiert Pakete innerhalb einer Serie # PATH=/LSTLIB:$PATH DEF=off REC=off ALL=off . $TEXTCONSTANTS TMPDIR=/LSTLIB/tmp # Functions PrintUsage() { echo "Usage: SelPkgs [-all] [-minimum] [-recommended] " echo " [-instsrc INSTSRC] [-database DATABASE]" echo " [-fullindex FULLINDEX] -series SERIES " exit 0 } # Main # Parse Loop while [ 1 ]; do if [ $# -lt 2 ]; then PrintUsage elif [ "$1" = '-all' ]; then DEF=on REC=on ALL=on shift 1 elif [ "$1" = '-minimum' ]; then DEF=on shift 1 elif [ "$1" = '-recommended' ]; then DEF=on REC=on shift 1 elif [ "$1" = '-instsrc' ]; then INSTSRC=$2 shift 2 elif [ "$1" = '-database' ]; then DATABASE=$2 shift 2 elif [ "$1" = '-fullindex' ]; then FULLINDEX=$2 shift 2 elif [ "$1" = '-series' ]; then SERIES=$2 shift 2 break fi done while [ 1 ]; do dialog --infobox \ "Die Vorselektierung und die Beschreibungen \n\ zur Serie >>$SERIES<< werden ermittelt. \n\ \n\ Bitte warten Sie..." 10 60 cd $INSTSRC # echo "Ermittle zugeh÷rige Disketten..." rm -f $TMPDIR/$SERIES.dsk # Ooohhhh, another dirty hack ;-) # If you use preselection with floppy disks, we trust # that your FULLINDEX and DATABASE on your rootdisk is # up to date ... So we search for disk1-disk9 in every series # If your FULLINDEX and DATABASE is not up to date, this will # fail for you :-( # if [ "$INSTSRC" = "/" ]; then for i in 1 2 3 4 5 6 7 8 9 ; do echo ":$SERIES$i:" >> $TMPDIR/$SERIES.dsk done else for i in ${SERIES}? ; do echo ":$i:" >> $TMPDIR/$SERIES.dsk done fi # echo "Ermittle zugeh÷rige Daten..." fgrep -f $TMPDIR/$SERIES.dsk $DATABASE > $TMPDIR/$SERIES.dat # echo "Ermittle zugeh÷rige Pakete..." cut -d':' -f 2 $TMPDIR/$SERIES.dat > $TMPDIR/$SERIES.pkg # Test, ob ueberhaupt Pakete gefunden wurden dummy=`cat $TMPDIR/$SERIES.pkg` if [ "$dummy" = "" ]; then echo "Warnung ! Die Serie $SERIES wurde nicht gefunden !" echo "Ueberspringe die Serie $SERIES !" echo "Sie koennen diese Serie auch spaeter nachinstallieren." echo "Lesen Sie dazu die Installationsanleitung." echo "Weiter mit der Eingabetaste" read dummy exit 1 fi fgrep -f $TMPDIR/$SERIES.pkg $FULLINDEX | fgrep '[' | sed 's/\[.\]//' > $TMPDIR/$SERIES.idx if [ ! -f $TMPDIR/$SERIES.cmd ]; then if [ -f $INSTSRC/${SERIES}1/$SERIES.cmd ]; then cp $INSTSRC/${SERIES}1/$SERIES.cmd $TMPDIR/$SERIES.cmd else # echo "Baue Kommando auf ..." cat << EOF > $TMPDIR/$SERIES.cmd #!/bin/sh dialog --title "Auswahl der Pakete in der Serie >>$SERIES<<" --checklist "$MWAEHLEN $MMOVEMENT Die ungekⁿrzten Beschreibungen zu den Paketen k÷nnen Sie auf einer anderen Console einsehen." 22 77 10 \\ EOF for i in `cat $TMPDIR/$SERIES.pkg` ; do SIZE=`fgrep :$i: $TMPDIR/$SERIES.dat | cut -d':' -f 5` echo " \"$i\" \"`fgrep :$i: $TMPDIR/$SERIES.idx | cut -c 12-60` `expr $SIZE / 1024`K\" \"`fgrep :$i: $TMPDIR/$SERIES.dat | cut -d':' -f 4`\" \\" >> $TMPDIR/$SERIES.cmd done echo "2> $TMPDIR/$SERIES.sel" >> $TMPDIR/$SERIES.cmd fi fi # echo "Setze die entsprechenden Selektionen ..." ( sed "s/\"[AOU]\"/$ALL/g" | sed "s/\"D\"/$DEF/g" | sed "s/\"R\"/$REC/g" ) < $TMPDIR/$SERIES.cmd > /tmp/COMMAND chmod 700 /tmp/COMMAND # echo "Rufe Vorauswahl auf ..." /tmp/COMMAND retval=$? if [ "$retval" != 0 ]; then echo "Dialog returnwert != 0 ! Versuche es nochmal ..." echo "Weiter mit w, abbruch mit q und nochmal versuchen nur Eingabetaste" echo "Bitte drⁿcken" read dummy # dirty hack if [ "$dummy" = "q" ]; then exit 1 elif [ "$dummy" != "w" ]; then continue fi fi # ▄berprⁿfe die Liste der selektierten Pakete if [ ! -f $TMPDIR/$SERIES.sel ]; then echo "Es wurden keine Pakete selektiert !" echo -n "War das Absicht ? (j/n): " read dummy if [ "$dummy" = "j" ]; then break elif [ "$dummy" = "n" ]; then continue else echo "Falsche Eingabe ! " echo fi else if [ "$EXPERT" != "" ]; then echo "Expert Modus: Folgende Pakete wurden selektiert :" echo cat $TMPDIR/$SERIES.sel echo echo "Eingabetaste drⁿcken" read dummy fi break fi done