SQLITE_NOTICE(283): recovered 35 frames from WAL file /data/mtt.fossil-wal
SQLITE_NOTICE(283): recovered 35 frames from WAL file /data/mtt.fossil-wal
File mttroot/mtt/bin/trans/mtt_update artifact da39fd9946 part of check-in dc4cb529ab
#!/bin/sh ###################################### ##### Model Transformation Tools ##### ###################################### # Bourne shell script: mtt_update # Generates Updates core representations # Copyright (C) 2000 by Peter J. Gawthrop ############################################################### ## Version control history ############################################################### ## $Id$ ## $Log$ ## Revision 1.15 2000/10/17 09:53:05 peterg ## More on logic rep ## ## Revision 1.14 2000/10/17 08:36:56 peterg ## Included logic rep. ## ## Revision 1.13 2000/10/15 09:27:13 peterg ## Better way of generating $infofile ## ## Revision 1.12 2000/10/14 16:11:00 peterg ## Made all variables, states etc lower case ## ## Revision 1.11 2000/10/13 11:07:00 peterg ## Added initialisation for state and input ## ## Revision 1.10 2000/10/13 10:56:07 peterg ## Now uses the full name from the struc file - no need to recreate. ## ## Revision 1.9 2000/10/13 09:55:09 peterg ## Changed state/input name to $4_$3 ## ## Revision 1.8 2000/10/13 09:28:16 peterg ## Changed regexp to /\(.*$old.*=\)/ ## ## Revision 1.7 2000/10/13 08:56:51 peterg ## Output variables as column, not row. ## ## Revision 1.6 2000/10/13 08:07:24 peterg ## Added state and input - it checks against sympar as well so that ## defined variables may be used here. ## ## Revision 1.5 2000/10/12 19:24:55 peterg ## Corrected output message ## ## Revision 1.4 2000/10/12 17:57:34 peterg ## Fixed header typos ## ## Revision 1.3 2000/10/12 15:11:30 peterg ## Added the update switch ## ## Revision 1.2 2000/10/12 13:45:13 peterg ## Put in the no-file version ## ## Revision 1.1 2000/10/12 12:32:23 peterg ## Initial revision ## ## ############################################################### sys=$1 # System name rep=$2 # System representation update=$3 # Update or not date=`date` if [ -z "$2" ]; then echo Usage mtt_update system representation [update] exit fi rm -f mtt_empty touch mtt_empty case $rep in numpar) lang=txt textfile=$1_$2.$lang infofile=$1_sympar.$lang moreinfofile=$infofile default='1.0' ;; input) lang=txt textfile=$1_$2.$lang infofile=mtt_list.$lang moreinfofile=mtt_list_numpar.$lang awk '{if ($1==rep) printf("%s\n", $4)}' rep=$2 \ <$1_struc.txt >$infofile cat $infofile $1_sympar.$lang> $moreinfofile default='1.0' ;; state) lang=txt textfile=$1_$2.$lang infofile=mtt_list.$lang moreinfofile=mtt_list_numpar.$lang awk '{if ($1==rep) printf("%s\n", $4)}' rep=$2 \ <$1_struc.txt >$infofile cat $infofile $1_sympar.$lang> $moreinfofile default='0.0' ;; logic) lang=txt textfile=$1_$2.$lang infofile=mtt_list.$lang moreinfofile=mtt_list_numpar.$lang awk '{if ($3=="MTT_SWITCH") printf("%s_logic\n", $4)}' rep=$2 \ <$1_struc.txt >$infofile cat $infofile $1_sympar.$lang> $moreinfofile default='1.0' ;; *) echo Representation $rep not implemented exit esac # Create a string containing the variables if [ -f "$textfile" ]; then # Inform User echo Checking $textfile else echo Creating $textfile mtt_header $sys $rep $lang > $textfile info=`cut -f1 $infofile | sort` for new in $info; do echo $new $default |\ awk '{printf("%s\t= %s; # Default\n",$1,$2)}' >> $textfile done exit fi # Remove tmp files rm -f mtt_in_text mtt_in_info # Strip files strip_comments <$textfile | tr 'A-Z' 'a-z' >mtt_text strip_comments <$infofile | tr 'A-Z' 'a-z' >mtt_info strip_comments <$moreinfofile | tr 'A-Z' 'a-z' >mtt_moreinfo # Use awk to check file awk '{ if (FILENAME=="mtt_text") { gsub("[\t ]" ,""); # Remove whitespace split($0,a,"="); text[a[1]] = a[2]; } if (FILENAME=="mtt_info"){ info[$1] = default; } if (FILENAME=="mtt_moreinfo"){ moreinfo[$1] = default; } } END{ # for (iname in info) print iname for (tname in text) { if (!(tname in moreinfo)) print tname >> "mtt_in_text" } for (iname in info) { if (!(iname in text)) print iname >> "mtt_in_info" } }' default=$default mtt_text mtt_info mtt_moreinfo if [ -z "$update" ]; then if [ -f "mtt_in_text" ]; then echo "The following variables are defined in $textfile, but do not exist:" sort mtt_in_text | awk '{printf("\t%s\n",$1)}' echo Use mtt $sys $rep $lang to update fi if [ -f "mtt_in_info" ]; then echo "The following variables exist, but are not defined in $textfile:" sort mtt_in_info | awk '{printf("\t%s\n",$1)}' echo Use mtt $sys $rep $lang to update fi exit fi answered='' if [ -f "mtt_in_text" ]; then in_text=`sort mtt_in_text` echo "The following variables are defined in $textfile, but do not exist:" sort mtt_in_text | awk '{printf("\t%s\n",$1)}' while [ -z "$answered" ]; do echo "Update $textfile (y/n)?" read answer < /dev/tty case $answer in y) answered=yes for old in $in_text; do echo Commenting out $old sed "s/\(.*$old.*=\)/## Removed by MTT on $date: \1/I"\ <$textfile > mtt_tmp mv mtt_tmp $textfile changed=yes done ;; n) answered=yes ;; *) esac done fi answered='' if [ -f "mtt_in_info" ]; then echo "The following variables exist, but are not defined in $textfile:" sort mtt_in_info | awk '{printf("\t%s\n",$1)}' while [ -z "$answered" ]; do echo "Update $textfile (y/n)?" read answer < /dev/tty case $answer in y) answered=yes in_info=`sort mtt_in_info` for new in $in_info; do echo Adding $new echo $new $default |\ awk '{printf("%s\t= %s; # Added by MTT on %s\n",$1,$2,strftime())}'\ >> $textfile changed=yes done ;; n) answered=yes ;; *) esac done fi