home *** CD-ROM | disk | FTP | other *** search
/ Chip 1994 February / CHIP0294.ISO / digital / test / linux / bootdisk / rootdisk.18 / usr / lib / LST / SelPkgs < prev    next >
Encoding:
Text File  |  1994-06-13  |  4.0 KB  |  171 lines

  1. # SelPkgs - selektiert Pakete innerhalb einer Serie
  2. #
  3. PATH=/LSTLIB:$PATH
  4.  
  5. DEF=off
  6. REC=off
  7. ALL=off
  8.  
  9. . $TEXTCONSTANTS
  10.  
  11. TMPDIR=/LSTLIB/tmp
  12.  
  13. # Functions
  14. PrintUsage()
  15. {
  16.     echo "Usage: SelPkgs [-all] [-minimum] [-recommended] "
  17.     echo "               [-instsrc INSTSRC] [-database DATABASE]"
  18.     echo "               [-fullindex FULLINDEX] -series SERIES "
  19.     exit 0
  20. }
  21.  
  22. # Main
  23.  
  24. # Parse Loop
  25. while [ 1 ]; do
  26.     if [ $# -lt 2 ]; then
  27.         PrintUsage
  28.     elif [ "$1" = '-all' ]; then
  29.         DEF=on
  30.         REC=on
  31.         ALL=on
  32.         shift 1
  33.     elif [ "$1" = '-minimum' ]; then
  34.         DEF=on
  35.         shift 1
  36.     elif [ "$1" = '-recommended' ]; then
  37.         DEF=on
  38.         REC=on
  39.         shift 1
  40.     elif [ "$1" = '-instsrc' ]; then
  41.         INSTSRC=$2
  42.         shift 2
  43.     elif [ "$1" = '-database' ]; then
  44.         DATABASE=$2
  45.         shift 2
  46.     elif [ "$1" = '-fullindex' ]; then
  47.         FULLINDEX=$2
  48.         shift 2
  49.     elif [ "$1" = '-series' ]; then
  50.         SERIES=$2
  51.         shift 2
  52.         break
  53.     fi
  54. done
  55.  
  56. while [ 1 ]; do
  57.  
  58. dialog --infobox \
  59. "Die Vorselektierung und die Beschreibungen \n\
  60. zur Serie >>$SERIES<< werden ermittelt. \n\
  61. \n\
  62.         Bitte warten Sie..." 10 60
  63.  
  64. cd $INSTSRC
  65. # echo "Ermittle zugeh÷rige Disketten..."
  66. rm -f $TMPDIR/$SERIES.dsk
  67.  
  68. # Ooohhhh, another dirty hack ;-)
  69. # If you use preselection with floppy disks, we trust
  70. # that your FULLINDEX and DATABASE on your rootdisk is
  71. # up to date ... So we search for disk1-disk9 in every series
  72. # If your FULLINDEX and DATABASE is not up to date, this will
  73. # fail for you :-(
  74. #
  75. if [ "$INSTSRC" = "/" ]; then
  76.     for i in 1 2 3 4 5 6 7 8 9 ; do
  77.         echo ":$SERIES$i:" >> $TMPDIR/$SERIES.dsk
  78.     done
  79. else
  80.     for i in ${SERIES}? ; do
  81.         echo ":$i:" >> $TMPDIR/$SERIES.dsk
  82.     done
  83. fi
  84.  
  85. # echo "Ermittle zugeh÷rige Daten..."
  86. fgrep -f $TMPDIR/$SERIES.dsk $DATABASE > $TMPDIR/$SERIES.dat
  87. # echo "Ermittle zugeh÷rige Pakete..."
  88. cut -d':' -f 2 $TMPDIR/$SERIES.dat > $TMPDIR/$SERIES.pkg
  89. # Test, ob ueberhaupt Pakete gefunden wurden
  90. dummy=`cat $TMPDIR/$SERIES.pkg`
  91.  
  92. if [ "$dummy" = "" ]; then
  93.     echo "Warnung ! Die Serie $SERIES wurde nicht gefunden !"
  94.     echo "Ueberspringe die Serie $SERIES !"
  95.     echo "Sie koennen diese Serie auch spaeter nachinstallieren."
  96.     echo "Lesen Sie dazu die Installationsanleitung."
  97.     echo "Weiter mit der Eingabetaste"
  98.     read dummy
  99.     exit 1
  100. fi
  101.  
  102. fgrep -f $TMPDIR/$SERIES.pkg $FULLINDEX | fgrep '[' | sed 's/\[.\]//' > $TMPDIR/$SERIES.idx
  103.  
  104. if [ ! -f $TMPDIR/$SERIES.cmd ]; then
  105.     if [ -f $INSTSRC/${SERIES}1/$SERIES.cmd ]; then
  106.         cp $INSTSRC/${SERIES}1/$SERIES.cmd $TMPDIR/$SERIES.cmd
  107.     else
  108.         # echo "Baue Kommando auf ..."
  109. cat << EOF > $TMPDIR/$SERIES.cmd
  110. #!/bin/sh
  111. 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 \\
  112. EOF
  113.         for i in `cat $TMPDIR/$SERIES.pkg` ; do
  114.             SIZE=`fgrep :$i: $TMPDIR/$SERIES.dat | cut -d':' -f 5`
  115.             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
  116.         done
  117.         echo "2> $TMPDIR/$SERIES.sel" >> $TMPDIR/$SERIES.cmd
  118.     fi
  119. fi
  120.  
  121.  
  122. # echo "Setze die entsprechenden Selektionen ..."
  123. ( sed "s/\"[AOU]\"/$ALL/g" | sed "s/\"D\"/$DEF/g" | sed "s/\"R\"/$REC/g" ) < $TMPDIR/$SERIES.cmd > /tmp/COMMAND
  124. chmod 700 /tmp/COMMAND
  125.  
  126. # echo "Rufe Vorauswahl auf ..."
  127.  
  128. /tmp/COMMAND
  129.  
  130. retval=$?
  131.  
  132. if [ "$retval" != 0 ]; then
  133.     echo "Dialog returnwert != 0 ! Versuche es nochmal ..."
  134.     echo "Weiter mit w, abbruch mit q und nochmal versuchen nur Eingabetaste"
  135.     echo "Bitte drⁿcken"
  136.     read dummy
  137.     # dirty hack
  138.     if [ "$dummy" = "q" ]; then
  139.         exit 1
  140.     elif [ "$dummy" != "w" ]; then
  141.         continue
  142.     fi
  143. fi
  144. # ▄berprⁿfe die Liste der selektierten Pakete
  145. if [ ! -f $TMPDIR/$SERIES.sel ]; then
  146.     echo "Es wurden keine Pakete selektiert !"
  147.     echo -n "War das Absicht ? (j/n): "    
  148.     read dummy
  149.     if [ "$dummy" = "j" ]; then
  150.         break
  151.     elif [ "$dummy" = "n" ]; then
  152.         continue
  153.     else
  154.         echo "Falsche Eingabe ! "
  155.         echo
  156.     fi
  157. else 
  158.     if [ "$EXPERT" != "" ]; then
  159.         echo "Expert Modus: Folgende Pakete wurden selektiert :"
  160.         echo
  161.         cat $TMPDIR/$SERIES.sel 
  162.         echo
  163.         echo "Eingabetaste drⁿcken"
  164.         read dummy
  165.     fi
  166.     break
  167. fi
  168.  
  169. done
  170.  
  171.