From 74d23e6dd6c151552f79fc11ac793df978c68857 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Sun, 31 Mar 2019 22:48:34 +0200 Subject: [PATCH] Updated generateUnusedKeys --- tools/generateUnusedKeys | 56 +++++++++++++++++++++++++--------------- 1 file changed, 35 insertions(+), 21 deletions(-) diff --git a/tools/generateUnusedKeys b/tools/generateUnusedKeys index 484da3667..6d2b68390 100755 --- a/tools/generateUnusedKeys +++ b/tools/generateUnusedKeys @@ -1,20 +1,20 @@ #!/usr/bin/env bash +# This script is part of RawTherapee. +# # This Bash4 script checks whether each key in "default" is used in # a .cc or .h file. Those that are not are printed to screen, and the # user is asked if they should be deleted from all language files. # -# Keys in commented-out sections are treated as if they weren't there. -# The following comment styles are handled: -# // key -# /* key -# key */ - -# It does not handle dynamically built keys: +# Keys in commented-out sections "//" are ignored. +# +# Some concatenated keys are ignored, these need to be added to the list manually: # HISTORY_MSG_ # EXTPROGTARGET_ # FILEBROWSER_POPUPRANK # FILEBROWSER_POPUPCOLORLABEL +# SAMPLEFORMAT_ +# TP_RAW_[demosaic_method] # # The script can also clean up already-translated files by removing keys which # do not exist in default. @@ -22,11 +22,10 @@ # Run the script from the project root: # ./tools/generateUnusedKeys # -# Doublecheck the deletion before committing. # Run ./tools/generateTranslationDiffs before and after running this script. +# Double-check the deletion before committing. # # Blame DrSlony -# Please report bugs or enhancements to http://code.google.com/p/rawtherapee/issues/list tmp=temp_file if [[ -w $tmp ]]; then @@ -61,26 +60,41 @@ fi dos2unix default 2>/dev/null +# In the code block below, the grep/sed outside the loop lists keys to ignore. +# Exit status 1 (failure) means key not found in code, destined for deletion. +# The piped grep inside the loop checks the initial match for known comment markers "//". +# Sometimes a key is first found in a comment, and then the same key is found +# in active code, therefore -m1 (stop reading after 1st match) cannot be used. +# To remove comment support, remove the piped grep and set first grep flags to +# -Irl -m1 +# Dynamically built keys like HISTORY_MSG_1 can't be grepped in the code, +# so it renames KEY_1-KEY_9 to KEY_ so that they can be grepped and therefore ignored. t1="$(date +%s)" printf '%s\n' 'Matching keys in "default" against .cc and .h files' 'Unmatched keys follow:' unset delLines while read -r 'defLine'; do - grep -Ir --include=\*.{cc,h} --exclude-dir="klt" "${defLine%%;*}" ../../* | grep -Ev "//.*${defLine%%;*}|/\*.*${defLine%%;*}|${defLine%%;*}.*\*/" &>/dev/null + grep -Ir --include=\*.{cc,h} --exclude-dir="klt" "${defLine%%;*}" ../../* | grep -Ev "//.*${defLine%%;*}" &>/dev/null if [[ $? = 1 ]]; then printf ' %s\n' "${defLine%%;*}" delLines+=("${defLine%%;*}") fi -done < <(grep -Ev "^(#|$)|HISTORY_MSG_" "default" | sed -e "s/EXTPROGTARGET_[0-9]*/EXTPROGTARGET_/" -e "s/FILEBROWSER_POPUPCOLORLABEL[0-9]*/FILEBROWSER_POPUPCOLORLABEL/" -e "s/FILEBROWSER_POPUPRANK[0-9]*/FILEBROWSER_POPUPRANK/" | sort -Vu) -# The grep/sed line above lists keys to ignore. Exit status 1 (failure) means -# key not found in code, destined for deletion. The piped grep in the loop -# checks the initial match for known comment markers // /* and */ -# Sometimes a key is first found in a comment, and then the same key is found -# in active code, therefore -m1 (stop reading after 1st match) cannot be used. -# To remove comment support, remove the piped grep and set first grep flags to -# -Irl -m1 -# Dynamically built keys like HISTORY_MSG_1 can't be grepped in the code, -# so it renames KEY_1-KEY_9 to KEY_ so that they can be grepped and therefore ignored. -# The piped grep in the loop +done < <( \ + grep -Ev -e "^(#|$)|HISTORY_MSG_" \ + -e "^(#|$)|TP_RAW_1PASSMEDIUM" \ + -e "^(#|$)|TP_RAW_2PASS" \ + -e "^(#|$)|TP_RAW_3PASSBEST" \ + -e "^(#|$)|TP_RAW_4PASS" \ + -e "^(#|$)|TP_RAW_AMAZEVNG4" \ + -e "^(#|$)|TP_RAW_DCBVNG4" \ + -e "^(#|$)|TP_RAW_MONO" \ + -e "^(#|$)|TP_RAW_NONE" \ + -e "^(#|$)|TP_RAW_RCDVNG4" \ + "default" | \ + sed -e "s/EXTPROGTARGET_[0-9]*/EXTPROGTARGET_/" \ + -e "s/FILEBROWSER_POPUPCOLORLABEL[0-9]*/FILEBROWSER_POPUPCOLORLABEL/" \ + -e "s/FILEBROWSER_POPUPRANK[0-9]*/FILEBROWSER_POPUPRANK/" \ + -e "s/SAMPLEFORMAT_[0-9]*/SAMPLEFORMAT_/" \ + | sort -Vu) t2="$(date +%s)" tt=$((t2-t1)) printf '%s\n' "" "Scan took $tt seconds" "" "Double-checking the code for matched keys:"