format-changelog.sh 1023 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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 section_name=$1
  25. for i in "${changes_dir}"/"${section_name}"-*."${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. ## Bug fixes
  35. $(section fix)
  36. EOF
  37. elif [ "${language}" = "zh" ]; then
  38. cat <<EOF
  39. # ${version}
  40. ## 增强
  41. $(section feat)
  42. ## 修复
  43. $(section fix)
  44. EOF
  45. else
  46. echo "Invalid language ${language}" 1>&2;
  47. exit 1
  48. fi