diff --git a/.github/actions/upload-android/action.yml b/.github/actions/upload-android/action.yml index 0452a2832b..aafeccf437 100644 --- a/.github/actions/upload-android/action.yml +++ b/.github/actions/upload-android/action.yml @@ -65,14 +65,7 @@ runs: mkdir -p android/fastlane/metadata/android/en-US/changelogs if [ -f changelog.txt ]; then - char_count=$(wc -m < changelog.txt) - - if [ "$char_count" -gt 500 ]; then - cut -c1-497 changelog.txt > "android/fastlane/metadata/android/en-US/changelogs/${BUILD_VERSION}.txt" - printf "..." >> "android/fastlane/metadata/android/en-US/changelogs/${BUILD_VERSION}.txt" - else - cat changelog.txt > "android/fastlane/metadata/android/en-US/changelogs/${BUILD_VERSION}.txt" - fi + node .github/scripts/prepare-changelog.js else printf "Internal improvements and bug fixes" > "android/fastlane/metadata/android/en-US/changelogs/${BUILD_VERSION}.txt" fi diff --git a/.github/scripts/prepare-changelog.js b/.github/scripts/prepare-changelog.js new file mode 100644 index 0000000000..9b31db5635 --- /dev/null +++ b/.github/scripts/prepare-changelog.js @@ -0,0 +1,20 @@ +const fs = require("fs"); + +const buildVersion = process.env.BUILD_VERSION; +const input = fs.readFileSync("changelog.txt", "utf8"); + +const segmenter = new Intl.Segmenter("en", { granularity: "grapheme" }); +const chars = Array.from(segmenter.segment(input), s => s.segment); + +let output; +if (chars.length > 500) { + output = chars.slice(0, 497).join("") + "..."; +} else { + output = input; +} + +fs.writeFileSync( + `android/fastlane/metadata/android/en-US/changelogs/${buildVersion}.txt`, + output, + "utf8" +);