textaddr.sh 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #!/bin/sh
  2. #
  3. # Version 1.0.1 Build 7
  4. #
  5. # textaddr.sh - multi-language support script
  6. # Compile progmem1.var and lang_en.txt files to textaddr.txt file (mapping of progmem addreses to text idenifiers)
  7. #
  8. # Input files:
  9. # progmem1.var
  10. # lang_en.txt
  11. #
  12. # Output files:
  13. # textaddr.txt
  14. #
  15. #
  16. # Dscription of process:
  17. # check if input files exists
  18. # create sorted list of strings from progmem1.var and lang_en.txt
  19. # lines from progmem1.var will contain addres (8 chars) and english text
  20. # lines from lang_en.txt will contain linenumber and english text
  21. # after sort this will generate pairs of lines (line from progmem1 first)
  22. # result of sort is compiled with simple script and stored into file textaddr.txt
  23. #
  24. #############################################################################
  25. # Change log:
  26. # 30 May 2018, XPila, Initial
  27. # 9 June 2020, 3d-gussner, Added version and Change log
  28. # 9 June 2020, 3d-gussner, colored output
  29. # 2 Apr. 2021, 3d-gussner, Use `git rev-list --count HEAD textaddr.sh`
  30. # to get Build Nr
  31. #############################################################################
  32. echo "$(tput setaf 2)textaddr.sh started$(tput sgr0)" >&2
  33. if [ ! -e progmem1.var ]; then echo "$(tput setaf 1)textaddr.sh - file progmem1.var not found!$(tput sgr0)" >&2; exit 1; fi
  34. if [ ! -e lang_en.txt ]; then echo "$(tput setaf 1)textaddr.sh - file lang_en.txt not found!$(tput sgr0)" >&2; exit 1; fi
  35. addr=''
  36. text=''
  37. (cat progmem1.var | sed -E "s/^([^ ]*) ([^ ]*) (.*)/\1 \"\3\"/";\
  38. cat lang_en.txt | sed "/^$/d;/^#/d" | sed = | sed '{N;s/\n/ /}') |\
  39. sort -k2 |\
  40. sed "s/\\\/\\\\\\\/g" | while read num txt; do
  41. if [ ${#num} -eq 8 ]; then
  42. if [ -z "$addr" ]; then
  43. addr=$num
  44. else
  45. if [ "$text" = "$txt" ]; then
  46. addr="$addr $num"
  47. else
  48. echo "ADDR NF $addr $text"
  49. addr=$num
  50. fi
  51. fi
  52. text=$txt
  53. else
  54. if [ -z "$addr" ]; then
  55. if ! [ -z "$num" ]; then echo "TEXT NF $num $txt"; fi
  56. else
  57. if [ "$text" = "$txt" ]; then
  58. if [ ${#addr} -eq 8 ]; then
  59. echo "ADDR OK $addr $num"
  60. else
  61. echo "$addr" | sed "s/ /\n/g" | while read ad; do
  62. echo "ADDR OK $ad $num"
  63. done
  64. fi
  65. addr=''
  66. text=''
  67. else
  68. if ! [ -z "$num" ]; then echo "TEXT NF $num $txt"; fi
  69. fi
  70. fi
  71. fi
  72. done > textaddr.txt
  73. echo "$(tput setaf 2)textaddr.sh finished$(tput sgr0)" >&2
  74. exit 0