From 526e04568c26f8c59b7d8ec5302abbe789aa1f1a Mon Sep 17 00:00:00 2001 From: Bernd Flemisch <bernd@iws.uni-stuttgart.de> Date: Thu, 15 Jan 2015 10:10:29 +0000 Subject: [PATCH] [docu] add a script that checks if runtime parameters have been added or deleted The script should be run and acted upon before every release. This has been added to the release manager's tasks. Reviewed by Thomas. git-svn-id: svn://svn.iws.uni-stuttgart.de/DUMUX/dumux/trunk@14063 2fb0f335-1f38-0410-981e-8018bf24f1b0 --- bin/compareparameters.sh | 117 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 bin/compareparameters.sh diff --git a/bin/compareparameters.sh b/bin/compareparameters.sh new file mode 100644 index 0000000000..fc019cf994 --- /dev/null +++ b/bin/compareparameters.sh @@ -0,0 +1,117 @@ +#!/bin/sh + +# 1. obtain a list new_parameters.csv of all current parameters +# retrieve all occurrences of GET_PARAM and GET_RUNTIME_PARAM +find dumux/ -name '*.[ch][ch]' -exec grep 'GET_PARAM' {} \; | sort -u >new_parameters.csv +find dumux/ -name '*.[ch][ch]' -exec grep 'GET_RUNTIME_PARAM' {} \; | sort -u >>new_parameters.csv +# remove #define's +sed -i '/#define/d' new_parameters.csv +# remove everything before GET_PARAM and GET_RUNTIME_PARAM +sed -i 's/^.*GET_PARAM/GET_PARAM/' new_parameters.csv +sed -i 's/^.*GET_RUNTIME_PARAM/GET_RUNTIME_PARAM/' new_parameters.csv +# remove everything before and including first comma +awk '{print substr($0,index($0,",")+1)}' new_parameters.csv >tmp.txt +mv tmp.txt new_parameters.csv +# remove leading whitespace +sed -i 's/^[ \t]*//' new_parameters.csv +# remove everything after and including paranthesis +sed -i 's/).*//' new_parameters.csv +# sort uniquely +sort -u new_parameters.csv -o new_parameters.csv +# keep only the lines containing two commas +sed -i '/,.*,/!d' new_parameters.csv +# append types to the end of the lines +sed -i '/^bool,/ s/$/, bool/' new_parameters.csv +sed -i '/^double,/ s/$/, double/' new_parameters.csv +sed -i '/^int,/ s/$/, int/' new_parameters.csv +sed -i '/^Scalar,/ s/$/, Scalar/' new_parameters.csv +sed -i '/^std::string,/ s/$/, std::string/' new_parameters.csv +# remove types from the beginning of the lines +sed -i 's/bool,//' new_parameters.csv +sed -i 's/double,//' new_parameters.csv +sed -i 's/int,//' new_parameters.csv +sed -i 's/Scalar,//' new_parameters.csv +sed -i 's/std::string,//' new_parameters.csv +# remove all blanks +sed -i 's/ //g' new_parameters.csv +# add blanks after every comma +sed -i 's/,/, /g' new_parameters.csv +# sort uniquely +sort -u new_parameters.csv -o new_parameters.csv +# remove lines containing no parameter names +sed -i '/, , /d' new_parameters.csv + + +# 2. obtain a list old_parameters.csv of all old parameters +# convert the spreadsheet to csv +if ! unoconv --format=csv -e FilterOptions=44,34,0,3,1/1/2/1/3/1/4/9/5/9 -o tmp.csv doc/doxygen/extradoc/parameters.ods; then + echo "Failed to convert parameters.ods. Be sure that it is not opened somewhere." + rm -f new_parameters.csv tmp.csv + exit 1 +fi +unoconv --format=csv -i FilterOptions=44,34,0,3,1/1/2/1/3/1/4/9/5/9 -o old_parameters.csv tmp.csv +rm tmp.csv +# remove lines containing no parameter names +sed -i '/,,/d' old_parameters.csv +# loop over all lines, add group name if necessary +word="" +while read line; do + word=$(echo "$line" | awk '{print $1;}') + #echo "$word" + firstletter=$(echo $word | head -c 1) + if [ $firstletter != "," ]; then + group=$word + fi + if [ $group = "" ]; then + echo "No group found in line $line. Abort." + fi + linewithoutgroup=$(echo "$line" | cut -d " " -f2-) + echo "$group $linewithoutgroup" >>tmp.csv +done <old_parameters.csv +mv tmp.csv old_parameters.csv +# format in the same way as new_parameters.csv +sed -i 's/ //g' old_parameters.csv +sed -i 's/,/, /g' old_parameters.csv +sort -u old_parameters.csv -o old_parameters.csv + +# 3. compare lists of old and new parameters +# treat additions +diff -u old_parameters.csv new_parameters.csv | grep -E "^\+" | grep -v "\++" >added.csv +if [[ -s added.csv ]]; then + echo "" + echo "Compared to parameters.ods, the following parameters have been _added_:" + echo "" + echo "Group, Parameter, Type:" + sed -i 's/+//g' added.csv + cat added.csv + echo "" + echo "Search for those parameters and their default values. If default values" + echo "are set, you can find them by searching for GroupNameParameterName (one" + echo "word only). Decide whether the parameter should be included in" + echo "doc/doxygen/extradoc/parameters.ods, possibly by discussing with the responsible guy." +fi +# treat deletions +diff -u old_parameters.csv new_parameters.csv | grep -E "^\-" | grep -v "\--" >deleted.csv +if [[ -s deleted.csv ]]; then + echo "" + echo "Compared to parameters.ods, the following parameters have been _deleted_:" + echo "" + echo "Group, Parameter, Type:" + sed -i 's/-//g' deleted.csv + cat deleted.csv + echo "" + echo "Check whether those parameters really don't exist anymore by grepping for" + echo "their name. If so, delete the corresponding rows in doc/doxygen/extradoc/parameters.ods." +fi +# final remark +if [[ ! -s added.csv && ! -s deleted.csv ]]; then + echo "" + echo "Compared to parameters.ods, no parameters have been added or deleted." + echo "" +else + echo "" + echo "_Important:_ If you change parameters.ods, be sure to export it to" + echo "parameters.html." +fi +# clean up +rm -f old_parameters.csv new_parameters.csv added.csv deleted.csv -- GitLab