diff --git a/.github/workflows/store-delivery.yml b/.github/workflows/store-delivery.yml index 5f07b0fd..55255911 100644 --- a/.github/workflows/store-delivery.yml +++ b/.github/workflows/store-delivery.yml @@ -352,10 +352,13 @@ jobs: }; write("notes_en", join(summary.changes?.["en-US"])); write("notes_zh", join(summary.changes?.["zh-CN"])); - write( - "notes_ja", - join(summary.changes?.ja || summary.changes?.["ja-JP"]), - ); + const notesJa = join(summary.changes?.ja || summary.changes?.["ja-JP"]); + if (!notesJa) { + throw new Error( + "release-summary.json is missing Japanese What's New (ja or ja-JP). Pass --change-locale ja:...", + ); + } + write("notes_ja", notesJa); NODE - name: Set up Ruby and fastlane diff --git a/apps/ios/fastlane/Fastfile b/apps/ios/fastlane/Fastfile index 5833050c..1f120613 100644 --- a/apps/ios/fastlane/Fastfile +++ b/apps/ios/fastlane/Fastfile @@ -11,8 +11,14 @@ platform :ios do notes_en = ENV["APP_STORE_RELEASE_NOTES_EN"].to_s.strip has_notes = notes_zh != "" && notes_en != "" release_notes = has_notes ? { "zh-Hans" => notes_zh, "en-US" => notes_en } : nil - if has_notes && ENV["APP_STORE_RELEASE_NOTES_JA"].to_s.strip != "" - release_notes["ja"] = ENV.fetch("APP_STORE_RELEASE_NOTES_JA") + if has_notes + notes_ja = ENV["APP_STORE_RELEASE_NOTES_JA"].to_s.strip + if notes_ja == "" + UI.user_error!( + "APP_STORE_RELEASE_NOTES_JA is required because the App Store listing includes Japanese What's New.", + ) + end + release_notes["ja"] = notes_ja end api_key = app_store_connect_api_key( diff --git a/scripts/store-delivery.test.mjs b/scripts/store-delivery.test.mjs index de0cb72d..c00ee522 100644 --- a/scripts/store-delivery.test.mjs +++ b/scripts/store-delivery.test.mjs @@ -86,6 +86,7 @@ describe("store delivery command", () => { "APP_STORE_BUILD_NUMBER: ${{ steps.ios_build.outputs.build_number }}", ); expect(workflow).toContain("APP_STORE_RELEASE_NOTES_EN:"); + expect(workflow).toContain("missing Japanese What's New"); expect(workflow).not.toContain( "Pass ios_build_number; do not build from apps/mobile or EAS.", ); @@ -111,6 +112,7 @@ describe("store delivery command", () => { "utf8", ); expect(fastfile).toContain("precheck_include_in_app_purchases: false"); + expect(fastfile).toContain("APP_STORE_RELEASE_NOTES_JA is required"); }); test("replaces the GitHub APK with the Play-signed universal APK", () => {