replace_msgs.sh 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. #!/bin/sh
  2. # replace_msgs.sh - step3 - replace source and generate messages.h and messages.c files
  3. #mkdir ./source
  4. #files=$(ls ../Firmware/*.c* | grep -v 'language'; ls ../Firmware/*.h | grep -v 'language'; )
  5. #cp $files ./source/
  6. #exit
  7. files=$(ls ./source/*.c* | grep -v 'language'; ls ./source/*.h | grep -v 'language'; )
  8. #echo "$files"
  9. #list messages used only once
  10. #msgs=$(cat msgs_usage.txt | grep " 1$" | cut -f1 -d' ')
  11. #make regular expression from the list - replace spaces with '\b|\b'
  12. #msgs=$(echo $msgs | sed "s/ /\\\b\\\|\\\b/g")
  13. #filter this messages from msgs_en.txt to msgs_en_1.txt
  14. #cat msgs_en.txt | grep "$msgs" > msgs_en_1.txt
  15. cat msgs_en_X.txt | sed "s/\\\\/\\\\\\\\/g;s/\//\\\\\\\\\//g" | while read name cols rows text; do
  16. comment="$name $cols $rows"
  17. if sed -i -E "s/(.*)(\b$name\b)(.*)$/\1_i\($text\)\3\/\/\/\/$comment/g" $files; then
  18. echo "$name OK"
  19. else
  20. echo "$name NG!"
  21. fi
  22. done | tee replace2.out
  23. read
  24. #grep "$msgs" $files > msg_.txt
  25. exit
  26. cat msgs_en.txt | grep
  27. echo "$msgs" | while read name; do
  28. # sed -i "s/\b$name\b/_i\(\"$text\"\)/g" ./source/ultralcd.cpp
  29. done
  30. read
  31. exit
  32. #
  33. name=MSG_INFO_NOZZLE_FAN
  34. text="Nozzle FAN:"
  35. #grep "\b$name\b" $files
  36. sed -i "s/\b$name\b/_i\(\"$text\"\)/g" ./source/ultralcd.cpp
  37. read
  38. exit
  39. #unused messages will be listed in msgs_unused.txt.
  40. cat msgs_usage.txt | grep " 0$" | cut -f1 -d' ' >msgs_unused.txt
  41. #remove generated source files
  42. if [ -e messages.h ]; then rm messages.h; fi
  43. if [ -e messages.c ]; then rm messages.c; fi
  44. #messages used twice or more will be listed in messages.h and messages.cpp.
  45. msgs=$(cat msgs_usage.txt | grep -v " 0$" | cut -f1 -d' ')
  46. echo '//messages.h' > messages.h
  47. echo '#include <avr/pgmspace.h>' >> messages.h
  48. echo '//messages.c' >> messages.c
  49. echo '#include "messages.h"' >> messages.c
  50. echo -n '#define bool int
  51. ' >> messages.c
  52. echo -n '#define true 1
  53. ' >> messages.c
  54. echo -n '#define false 0
  55. ' >> messages.c
  56. echo '#include "Configuration_prusa.h"' >> messages.c
  57. sync -f messages.c
  58. echo '//internationalized messages' | tee -a messages.h >> messages.c
  59. cat msgs_en.txt | sed 's/\\/\\\\/g' | while read msg cols rows text; do
  60. if echo "$msgs" | grep "^$msg" >/dev/null; then
  61. echo "extern const char $msg[] PROGMEM;" >> messages.h
  62. echo "const char $msg[] PROGMEM = "$text";" >> messages.c
  63. echo "$msg"
  64. fi
  65. done
  66. echo '//not internationalized messages' | tee -a messages.h >> messages.c
  67. cat msgs_common.txt | sed 's/\\/\\\\/g' | while read msg text; do
  68. if echo "$msgs" | grep "^$msg" >/dev/null; then
  69. echo "extern const char $msg[] PROGMEM;" >> messages.h
  70. echo "const char $msg[] PROGMEM = "$text";" >> messages.c
  71. echo "$msg"
  72. fi
  73. done
  74. read
  75. exit
  76. #messages used twice or more will be listed in messages.h and messages.cpp.
  77. #msgs=$(cat msgs_usage.txt | grep -v " 0$" | grep -v " 1$" | cut -f1 -d' ')
  78. msgs=$(cat msgs_usage.txt | grep -v " 0$" | cut -f1 -d' ')
  79. echo '//messages.h' > messages.h
  80. echo '//messages.c' > messages.c
  81. echo '#include <avr/pgmspace.h>' >> messages.h
  82. echo '#include <avr/pgmspace.h>' >> messages.c
  83. #internationalized messages
  84. echo '//internationalized messages' >> messages.h
  85. echo '//internationalized messages' >> messages.c
  86. msgs2=$(cat msgs_en.txt | while read msg cols rows text; do
  87. if echo "$msgs" | grep "^$msg" >/dev/null; then
  88. echo "extern const char $msg[] PROGMEM;" >> messages.h
  89. echo "const char $msg[] PROGMEM = $text;" >> messages.c
  90. echo $msg
  91. fi
  92. done)
  93. #not internationalized messages
  94. echo '//not internationalized messages' >> messages.h
  95. echo '//not internationalized messages' >> messages.c
  96. cat msgs_common.txt | while read msg text; do
  97. if echo "$msgs" | grep "^$msg" >/dev/null; then
  98. if echo "$msgs2" | grep "^$msg" >/dev/null; then
  99. else
  100. echo "extern const char $msg[] PROGMEM;" >> messages.h
  101. echo "const char $msg[] PROGMEM = $text;" >> messages.c
  102. echo $msg
  103. fi
  104. fi
  105. done
  106. echo "finished..."
  107. read
  108. exit
  109. cat msgs_en.txt | while read msg cols rows text; do
  110. if echo "$msgs" | grep "^$msg" >/dev/null; then
  111. echo "$msg $text"
  112. fi
  113. done
  114. #; then
  115. # echo "" $msg
  116. # fi
  117. #done
  118. #echo "$msgs" | while read msg; do
  119. # echo "" $msg
  120. #done
  121. #msg=MSG_WIZARD_FILAMENT_LOADED
  122. #txt="PSTR(\"Is filament loaded?\")"
  123. #fn=../ultralcd.cpp
  124. #sed -i "s/$msg/$txt/g" $fn
  125. read