gowalk-cicd 1.0.11 → 1.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -73,6 +73,19 @@ in Play Console; every later run detects API readiness and uploads to the
73
73
  `internal` track automatically. Override the track or status with repository
74
74
  variables `GOOGLE_PLAY_TRACK` and `GOOGLE_PLAY_STATUS`.
75
75
 
76
+ ### Localized release notes
77
+
78
+ Both stores pick up per-locale release notes from committed files:
79
+
80
+ - **iOS** — `fastlane/metadata/ios/<locale>/release_notes.txt` (ASC locale
81
+ codes: `en-US`, `de-DE`, `zh-Hans`, …). Each localization whose file exists
82
+ gets that text as its "What's New"; localizations without a file fall back
83
+ to the single `app-store-whats-new` input / default text.
84
+ - **Android** — `distribution/whatsnew/whatsnew-<bcp47>` files (e.g.
85
+ `whatsnew-en-US`, `whatsnew-de-DE`). When `distribution/whatsnew/` exists,
86
+ the deploy workflow passes it to the Play upload and the notes ship with
87
+ every release; when absent, releases upload without notes as before.
88
+
76
89
  ## Android delivery via Bitrise (alternative mode)
77
90
 
78
91
  Use this when the Android **upload keystore password lives in Bitrise** (not in
@@ -1 +1 @@
1
- 1.0.11
1
+ 1.0.13
@@ -208,6 +208,18 @@ def _read_whats_new() -> tuple[str, str]:
208
208
  return "", "<empty>"
209
209
 
210
210
 
211
+ def _locale_release_notes(locale: str) -> str:
212
+ """Per-locale override: fastlane/metadata/ios/<locale>/release_notes.txt
213
+ under GITHUB_WORKSPACE (fastlane's set_changelog layout, which the README
214
+ documents). Empty string when the file is absent or unreadable."""
215
+ root = os.environ.get("GITHUB_WORKSPACE", ".")
216
+ path = Path(root) / "fastlane" / "metadata" / "ios" / locale / "release_notes.txt"
217
+ try:
218
+ return path.read_text().strip()
219
+ except OSError:
220
+ return ""
221
+
222
+
211
223
  def _update_all_localizations(
212
224
  token: str, version_id: str, version: str, whats_new: str, seed_locale: str,
213
225
  only_if_empty: bool = False,
@@ -228,7 +240,8 @@ def _update_all_localizations(
228
240
  )
229
241
  entries = locs.get("data") or []
230
242
  if not entries:
231
- new_id = _create_localization(token, version_id, seed_locale, whats_new)
243
+ seed_text = _locale_release_notes(seed_locale) or whats_new
244
+ new_id = _create_localization(token, version_id, seed_locale, seed_text)
232
245
  _log(
233
246
  f"CREATEd appStoreVersionLocalization {new_id} whatsNew for "
234
247
  f"{version} ({seed_locale}) -- no prior localizations"
@@ -248,7 +261,10 @@ def _update_all_localizations(
248
261
  if existing:
249
262
  already += 1
250
263
  continue
251
- if _patch_localization(token, loc_id, whats_new):
264
+ # A committed per-locale release_notes.txt beats the single shared
265
+ # text, so localized notes ship instead of one language everywhere.
266
+ text = _locale_release_notes(loc) or whats_new
267
+ if _patch_localization(token, loc_id, text):
252
268
  _log(
253
269
  f"PATCHed appStoreVersionLocalization {loc_id} whatsNew "
254
270
  f"for {version} ({loc})"
@@ -1 +1 @@
1
- 1.0.11
1
+ 1.0.13
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gowalk-cicd",
3
- "version": "1.0.11",
3
+ "version": "1.0.13",
4
4
  "description": "Zero-config GitHub Actions delivery for iOS TestFlight and Android Google Play.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -187,3 +187,7 @@ jobs:
187
187
  releaseFiles: ${{ steps.android.outputs.bundle-path }}
188
188
  tracks: ${{ vars.GOOGLE_PLAY_TRACK || 'internal' }}
189
189
  status: ${{ vars.GOOGLE_PLAY_STATUS || 'completed' }}
190
+ # Localized release notes: commit distribution/whatsnew/whatsnew-<bcp47>
191
+ # files (e.g. whatsnew-en-US, whatsnew-de-DE) and they ship with every
192
+ # release. Empty when the directory is absent — the action skips it.
193
+ whatsNewDirectory: ${{ hashFiles('distribution/whatsnew/**') != '' && 'distribution/whatsnew' || '' }}