format-changelog.sh 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #!/bin/bash
  2. set -euo pipefail
  3. shopt -s nullglob
  4. export LANG=C.UTF-8
  5. [ "$#" -ne 2 ] && {
  6. echo "Usage $0 <EMQX version> <en|zh>" 1>&2;
  7. exit 1
  8. }
  9. version="${1}"
  10. language="${2}"
  11. changes_dir="$(git rev-parse --show-toplevel)/changes/${version}"
  12. item() {
  13. local filename pr indent
  14. filename="${1}"
  15. pr="$(echo "${filename}" | sed -E 's/.*-([0-9]+)\.(en|zh)\.md$/\1/')"
  16. indent="- [#${pr}](https://github.com/emqx/emqx/pull/${pr}) "
  17. while read -r line; do
  18. echo "${indent}${line}"
  19. indent=" "
  20. done < "${filename}"
  21. echo
  22. }
  23. section() {
  24. local prefix=$1
  25. for i in "${changes_dir}"/"${prefix}"-*."${language}".md; do
  26. item "${i}"
  27. done
  28. }
  29. if [ "${language}" = "en" ]; then
  30. cat <<EOF
  31. # ${version}
  32. ## Enhancements
  33. $(section feat)
  34. $(section perf)
  35. ## Bug fixes
  36. $(section fix)
  37. EOF
  38. elif [ "${language}" = "zh" ]; then
  39. cat <<EOF
  40. # ${version}
  41. ## 增强
  42. $(section feat)
  43. ## 修复
  44. $(section fix)
  45. EOF
  46. else
  47. echo "Invalid language ${language}" 1>&2;
  48. exit 1
  49. fi