mirror of
https://github.com/screentinker/screentinker.git
synced 2026-06-15 02:33:15 -06:00
bump-version.sh matched `<?xml version="1.0" ...?>` - the XML format version, which has a leading space before version= just like the widget attribute - and rewrote it to the app version, producing invalid XML that breaks the Tizen .wgt build: 'XML version "X.Y.Z" is not supported, only XML 1.0 is supported'. (CI did not catch it because the no-Tizen-CLI build path just zips the files without validating the XML.) - bump-version.sh: skip the `<?xml` declaration line in the tizen version sed. - tizen/config.xml: restore the declaration to version="1.0" (prior bumps had corrupted it to 1.8.2). The widget version and tizen:application required_version are still updated / left alone correctly (verified with a dummy bump + an XML parse). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
60 lines
2.7 KiB
Bash
Executable file
60 lines
2.7 KiB
Bash
Executable file
#!/bin/bash
|
|
# Bump the ScreenTinker version across every source of truth in one commit + tag.
|
|
#
|
|
# scripts/bump-version.sh major|minor|patch|X.Y.Z
|
|
#
|
|
# Updates (and commits together): VERSION (root, the value the server reads at
|
|
# runtime), server/package.json + package-lock.json, android versionName
|
|
# (+versionCode by 1), tizen/config.xml widget version. Then creates an annotated
|
|
# tag vX.Y.Z. Does NOT push - prints the push command, so a release fires
|
|
# deliberately (pushing the tag is what triggers the release workflow).
|
|
set -euo pipefail
|
|
cd "$(dirname "$0")/.."
|
|
|
|
# Require a clean tree so the version commit can't sweep up unrelated changes.
|
|
if [ -n "$(git status --porcelain)" ]; then
|
|
echo "ERROR: working tree is dirty - commit or stash before bumping." >&2
|
|
exit 1
|
|
fi
|
|
|
|
CURRENT="$(cat VERSION)"
|
|
IFS=. read -r MAJ MIN PAT <<< "$CURRENT"
|
|
|
|
case "${1:-}" in
|
|
major) NEW="$((MAJ + 1)).0.0" ;;
|
|
minor) NEW="${MAJ}.$((MIN + 1)).0" ;;
|
|
patch) NEW="${MAJ}.${MIN}.$((PAT + 1))" ;;
|
|
[0-9]*.[0-9]*.[0-9]*) NEW="$1" ;;
|
|
*) echo "usage: $0 major|minor|patch|X.Y.Z (current: $CURRENT)" >&2; exit 1 ;;
|
|
esac
|
|
echo "Bumping $CURRENT -> $NEW"
|
|
|
|
# 1) VERSION (source of truth)
|
|
printf '%s\n' "$NEW" > VERSION
|
|
|
|
# 2) server/package.json version + lockfile (only the top-level "version" key;
|
|
# dependency entries are "name": "^x.y.z" and won't match "version": "x.y.z")
|
|
sed -i -E "s/(\"version\"[[:space:]]*:[[:space:]]*)\"[0-9]+\.[0-9]+\.[0-9]+\"/\1\"$NEW\"/" server/package.json
|
|
( cd server && npm install --package-lock-only >/dev/null )
|
|
|
|
# 3) android versionName + versionCode (+1)
|
|
sed -i -E "s/(versionName[[:space:]]*=[[:space:]]*)\"[0-9.]+\"/\1\"$NEW\"/" android/app/build.gradle.kts
|
|
CODE="$(grep -oE 'versionCode[[:space:]]*=[[:space:]]*[0-9]+' android/app/build.gradle.kts | grep -oE '[0-9]+$')"
|
|
sed -i -E "s/(versionCode[[:space:]]*=[[:space:]]*)[0-9]+/\1$((CODE + 1))/" android/app/build.gradle.kts
|
|
|
|
# 4) tizen widget version. Skip the <?xml ...?> declaration line - its
|
|
# version="1.0" is the XML FORMAT version, not the app version, and it also
|
|
# has a leading space before version= so the guard below would otherwise hit
|
|
# it (issue #77). The leading-space guard still excludes tizen:application
|
|
# required_version="..." (that's "...d_version", no preceding space).
|
|
sed -i -E "/^<\?xml/! s/([[:space:]]version=\")[0-9][^\"]*(\")/\1${NEW}\2/" tizen/config.xml
|
|
|
|
# 5) commit + annotated tag (no push)
|
|
git add VERSION server/package.json server/package-lock.json android/app/build.gradle.kts tizen/config.xml
|
|
git commit -q -m "chore(release): v$NEW"
|
|
git tag -a "v$NEW" -m "ScreenTinker v$NEW"
|
|
|
|
echo
|
|
echo "Committed + tagged v$NEW (nothing pushed). To release:"
|
|
echo " git push origin main && git push origin v$NEW"
|