Skip to content

Commit 4cd059d

Browse files
fix(ci): correct fastlane metadata path; park the unsupported bs listing (#157)
## What Commit 1: make the Play upload reach the API correctly. - Point `fastlane supply --metadata_path` at `play/metadata/android` instead of `play/metadata` in `release.yml`, `play-listing.yml`, and the `play/README.md` example. Supply treats every child of `metadata_path` as a Play locale, so the old path made it upload a single bogus locale named `android` (`Invalid request` from the Play API, first surfaced once the 1.0.1 run got past the disabled-API error). - Move `play/metadata/android/bs/` to `play/metadata/unsupported/bs/`. Google Play does not offer Bosnian (`bs`) as a store-listing language, so supply's upload for it is rejected outright. The translated listing content is parked rather than deleted; in-app Bosnian is unaffected. Commit 2: make sure a release can never ship half-empty again. - `check_play_metadata.py` hard-fails when `EXPECTED_VERSION_CODE` is set and any locale lacks `changelogs/<code>.txt`; `release.yml` now exposes the tag-derived versionCode as a job output and passes it to the lint, so a tag without release notes stops before the Play upload. `play-listing.yml` doesn't set it, so listing-only syncs are unaffected. - The flatten step (both workflows) now also flattens `images/icon/` to Supply's `images/icon.png`, so the 512x512 store icon uploads automatically once it's committed; previously only `featureGraphic/` was flattened and a committed icon would have been silently ignored. - Renamed the never-shipped 1.0.0 release notes (`changelogs/10000.txt`) to `10001.txt` in all five locales: no 1.0.0 tag exists, so 1.0.1 is the initial public release and the "Initial release." copy is its release copy. - README: documented the versionCode scheme, the release-notes-before-tagging rule, and the icon/featureGraphic directory convention. ## Testing - Play Listing Sync (`validate_only=true`, images included): fails on main (`android - Invalid request`, runs 31900131748 / 31900249999), **Successfully validated the upload to Google Play** on this branch for all 5 locales (runs 31900400508, 31900845136, the latter with the new flatten + lint in place). Validate-only builds the full edit server-side and discards it; no binary uploaded. - Lint locally: no env = 5 icon warnings, exit 0; `EXPECTED_VERSION_CODE=10001` = exit 0; `EXPECTED_VERSION_CODE=10002` = 5 missing-changelog errors, exit 1. - Flatten loop locally with a simulated `images/icon/` PNG: produces `featureGraphic.png` for all 5 locales plus `icon.png` where present.
1 parent 5d0c009 commit 4cd059d

42 files changed

Lines changed: 85 additions & 19 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/play-listing.yml

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -52,18 +52,21 @@ jobs:
5252
- name: Lint metadata before upload
5353
run: python3 scripts/check_play_metadata.py
5454

55-
- name: Flatten feature graphics for Supply
55+
- name: Flatten feature graphics and icon for Supply
5656
shell: bash
57-
# Supply expects images/featureGraphic.png; the repo keeps the
58-
# active graphic as a named file inside images/featureGraphic/.
57+
# Supply expects flat images/featureGraphic.png and images/icon.png;
58+
# the repo keeps the active file as a named PNG inside
59+
# images/featureGraphic/ and images/icon/.
5960
run: |
6061
set -euo pipefail
61-
for dir in play/metadata/android/*/images/featureGraphic; do
62+
for dir in play/metadata/android/*/images/featureGraphic play/metadata/android/*/images/icon; do
6263
[ -d "$dir" ] || continue
6364
active=$(find "$dir" -maxdepth 1 -name '*.png' | LC_ALL=C sort | head -1)
64-
[ -n "$active" ] && cp "$active" "$(dirname "$dir")/featureGraphic.png"
65+
if [ -n "$active" ]; then
66+
cp "$active" "$(dirname "$dir")/$(basename "$dir").png"
67+
fi
6568
done
66-
find play/metadata -maxdepth 4 -name 'featureGraphic.png'
69+
find play/metadata -maxdepth 4 \( -name 'featureGraphic.png' -o -name 'icon.png' \)
6770
6871
- name: Install fastlane
6972
run: sudo gem install fastlane -N -v "~> 2.226"
@@ -82,7 +85,7 @@ jobs:
8285
fastlane supply \
8386
--json_key "${RUNNER_TEMP}/play-key.json" \
8487
--package_name com.tinkernorth.dish \
85-
--metadata_path play/metadata \
88+
--metadata_path play/metadata/android \
8689
--skip_upload_aab true \
8790
--skip_upload_apk true \
8891
--skip_upload_changelogs true \

.github/workflows/release.yml

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,8 @@ jobs:
126126
needs: [gates, required-secrets]
127127
runs-on: ubuntu-latest
128128
timeout-minutes: 60
129+
outputs:
130+
version_code: ${{ steps.ver.outputs.code }}
129131
steps:
130132
- name: Checkout
131133
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
@@ -321,19 +323,24 @@ jobs:
321323
322324
- name: Lint metadata before upload
323325
if: ${{ steps.gate.outputs.enabled == 'true' && steps.artifacts.outputs.ready == 'true' }}
326+
env:
327+
EXPECTED_VERSION_CODE: ${{ needs.release.outputs.version_code }}
324328
run: python3 scripts/check_play_metadata.py
325329

326-
- name: Flatten feature graphics for Supply
330+
- name: Flatten feature graphics and icon for Supply
327331
if: ${{ steps.gate.outputs.enabled == 'true' && steps.artifacts.outputs.ready == 'true' }}
328332
shell: bash
329-
# Supply expects images/featureGraphic.png; the repo keeps the
330-
# active graphic as a named file inside images/featureGraphic/.
333+
# Supply expects flat images/featureGraphic.png and images/icon.png;
334+
# the repo keeps the active file as a named PNG inside
335+
# images/featureGraphic/ and images/icon/.
331336
run: |
332337
set -euo pipefail
333-
for dir in play/metadata/android/*/images/featureGraphic; do
338+
for dir in play/metadata/android/*/images/featureGraphic play/metadata/android/*/images/icon; do
334339
[ -d "$dir" ] || continue
335340
active=$(find "$dir" -maxdepth 1 -name '*.png' | LC_ALL=C sort | head -1)
336-
[ -n "$active" ] && cp "$active" "$(dirname "$dir")/featureGraphic.png"
341+
if [ -n "$active" ]; then
342+
cp "$active" "$(dirname "$dir")/$(basename "$dir").png"
343+
fi
337344
done
338345
339346
- name: Install fastlane
@@ -359,7 +366,7 @@ jobs:
359366
--release_status "${PLAY_RELEASE_STATUS}" \
360367
--aab "${AAB}" \
361368
"${mapping_args[@]}" \
362-
--metadata_path play/metadata \
369+
--metadata_path play/metadata/android \
363370
--skip_upload_metadata false \
364371
--skip_upload_images false \
365372
--skip_upload_screenshots false \

play/README.md

Lines changed: 22 additions & 5 deletions
File renamed without changes.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
Steam-Controller-Unterstützung.
2+
3+
• Läuft im Direktmodus über USB, per Kabel oder Dongle (Opt-in).
4+
• Sticks, Trigger, Tasten, Motion und das rechte Trackpad als rechter Stick.
5+
• Solange Dish ihn nutzt, wirkt er nicht mehr als Maus und Tastatur am Handy und wird danach unverändert zurückgegeben.
6+
• Fällt ein Pad vom Dongle, bleibt keine Eingabe mehr hängen; beim Wiederverbinden richtet es sich automatisch neu ein.
File renamed without changes.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
Steam Controller support.
2+
3+
• Works in Direct mode over USB, wired or through the dongle (opt-in).
4+
• Sticks, triggers, buttons, motion, and the right trackpad as a right stick.
5+
• While Dish uses it, it stops doubling as a mouse and keyboard for the phone, and is handed back exactly as it was.
6+
• A pad that drops off the dongle no longer holds its last input, and it sets up again automatically when it reconnects.
File renamed without changes.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
Compatibilidad con el Steam Controller.
2+
3+
• Funciona en Modo directo por USB, con cable o mediante el dongle (opcional).
4+
• Sticks, gatillos, botones, motion y el trackpad derecho como stick derecho.
5+
• Mientras Dish lo usa, deja de actuar como ratón y teclado del teléfono, y se devuelve tal como estaba.
6+
• Si un mando se desconecta del dongle ya no deja su última entrada retenida, y al reconectarse se configura de nuevo automáticamente.
File renamed without changes.

0 commit comments

Comments
 (0)