| 1 | # Erzeuge Konfiguration in .config |
|---|
| 2 | # |
|---|
| 3 | # Aufruf erfolgt über Makefile mittels 'make config' |
|---|
| 4 | # |
|---|
| 5 | # Autor: hcw@gmx.de |
|---|
| 6 | |
|---|
| 7 | # |
|---|
| 8 | # Kommandozeilenparameter: Liste der verfügbaren Module |
|---|
| 9 | MODULES=$* |
|---|
| 10 | |
|---|
| 11 | # Pfade und Dateinamen |
|---|
| 12 | CONFFILE=.config |
|---|
| 13 | MODPATH=./src |
|---|
| 14 | MODSUFFIX=.module |
|---|
| 15 | |
|---|
| 16 | [ -w $CONFFILE ] || { echo "$CONFFILE fehlt. Nutze 'make config'."; exit 1; } |
|---|
| 17 | |
|---|
| 18 | # |
|---|
| 19 | # verfügbare Module auslesen und Kurzbeschreibung anzeigen |
|---|
| 20 | # |
|---|
| 21 | |
|---|
| 22 | selprompt= |
|---|
| 23 | PS3="Gewählte Module sind mit '+' gekennzeichnet. |
|---|
| 24 | Auswahl (angegebene Ziffer oder 0 für Ende) > " |
|---|
| 25 | |
|---|
| 26 | echo |
|---|
| 27 | echo Verfügbare Module für XCompose: |
|---|
| 28 | for i in ${MODULES}; do |
|---|
| 29 | sed -n " |
|---|
| 30 | /^#configinfo[ \t]*/{ |
|---|
| 31 | s/// |
|---|
| 32 | b print |
|---|
| 33 | } |
|---|
| 34 | |
|---|
| 35 | \$! b |
|---|
| 36 | |
|---|
| 37 | s/.*/(ohne Beschreibung)/ |
|---|
| 38 | : print |
|---|
| 39 | |
|---|
| 40 | x |
|---|
| 41 | s/^/$i / |
|---|
| 42 | G |
|---|
| 43 | s/^\(.\{9\}\).*\n\(.\{1,69\}\).*/\1 \2/ # 80-Zeichen-Terminal-Grenze |
|---|
| 44 | p |
|---|
| 45 | q |
|---|
| 46 | " ${MODPATH}/${i}${MODSUFFIX} |
|---|
| 47 | |
|---|
| 48 | if grep -q $i $CONFFILE; then |
|---|
| 49 | selprompt="${selprompt} ${i}+ "; |
|---|
| 50 | else |
|---|
| 51 | selprompt="${selprompt} ${i} "; |
|---|
| 52 | fi |
|---|
| 53 | done |
|---|
| 54 | echo |
|---|
| 55 | |
|---|
| 56 | # |
|---|
| 57 | # Nutzereingabe |
|---|
| 58 | # |
|---|
| 59 | |
|---|
| 60 | again=true |
|---|
| 61 | |
|---|
| 62 | while ${again} ; do |
|---|
| 63 | again=false |
|---|
| 64 | select MOD in ${selprompt}; do |
|---|
| 65 | case "X$MOD" in |
|---|
| 66 | X) |
|---|
| 67 | if [ "X$REPLY" != "X0" ]; then again=true; fi ;; |
|---|
| 68 | *) |
|---|
| 69 | again=true |
|---|
| 70 | selprompt=`echo $selprompt | sed "s/$MOD/$MOD+/;s/++//"` ;; |
|---|
| 71 | esac |
|---|
| 72 | break |
|---|
| 73 | done |
|---|
| 74 | done |
|---|
| 75 | |
|---|
| 76 | # |
|---|
| 77 | # Configfile erzeugen |
|---|
| 78 | # |
|---|
| 79 | |
|---|
| 80 | echo $selprompt | sed ' |
|---|
| 81 | s/$/ / # letztes Wort mit Leerzeichen abschließen |
|---|
| 82 | s/[^ +]\+ / /g # Wörter ohne plus am Ende löschen |
|---|
| 83 | s/+//g # alle Pluszeichen löschen |
|---|
| 84 | s/^ *// # Leerzeichen am Anfang und Ende löschen |
|---|
| 85 | s/ *$// # Leerzeichen am Anfang und Ende löschen |
|---|
| 86 | s/ \+/_/g # Leerzeichen normalisieren |
|---|
| 87 | s/^/USER_XCOMPOSE = XCompose_/ |
|---|
| 88 | ' > $CONFFILE |
|---|
| 89 | |
|---|
| 90 | echo |
|---|
| 91 | echo Gewählte Module: |
|---|
| 92 | cat $CONFFILE |
|---|
| 93 | |
|---|
| 94 | grep -q base $CONFFILE || echo "*** Warnung: Modul 'base' wurde nicht gewählt." |
|---|
| 95 | grep -q enUS $CONFFILE || echo "*** Warnung: Modul 'enUS' wurde nicht gewählt." |
|---|
| 96 | |
|---|
| 97 | echo |
|---|
| 98 | echo "Weiter mit 'make' bzw. 'make install'" |
|---|