From 7ed3adf208d9f227fb291ac85716da04991c56ed Mon Sep 17 00:00:00 2001 From: intelligence Date: Sun, 30 Aug 2026 00:20:52 +0200 Subject: [PATCH] feat:building-with-version-number --- .gitea/workflows/android.yml | 32 ++++++++++++++++++++++++++++++ .gitea/workflows/build.yml | 38 ++++++++++++++++++++++++++++++++++-- 2 files changed, 68 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/android.yml b/.gitea/workflows/android.yml index add5bb2..a8ffd21 100644 --- a/.gitea/workflows/android.yml +++ b/.gitea/workflows/android.yml @@ -22,6 +22,38 @@ jobs: - uses: android-actions/setup-android@v3 # Gitea's act resolver cannot peel the annotated v4 tag alias. - uses: gradle/actions/setup-gradle@ed408507eac070d1f99cc633dbcf757c94c7933a # v4.4.3 + - name: Set release version + if: gitea.event_name == 'release' + shell: bash + working-directory: android + env: + TRANSUI_RELEASE_TAG: ${{ gitea.event.release.tag_name }} + run: | + version="${TRANSUI_RELEASE_TAG#v}" + if [[ ! "$version" =~ ^([0-9]+)\.([0-9]+)\.([0-9]+)$ ]]; then + echo "Release tag must use vMAJOR.MINOR.PATCH or MAJOR.MINOR.PATCH" >&2 + exit 1 + fi + major=$((10#${BASH_REMATCH[1]})) + minor=$((10#${BASH_REMATCH[2]})) + patch=$((10#${BASH_REMATCH[3]})) + if (( minor > 999 || patch > 999 )); then + echo "Minor and patch versions must be below 1000" >&2 + exit 1 + fi + version_code=$((major * 1000000 + minor * 1000 + patch)) + if (( version_code < 1 || version_code > 2100000000 )); then + echo "Release version is outside Android's versionCode range" >&2 + exit 1 + fi + echo "TRANSUI_VERSION=$version" >> "$GITEA_ENV" + echo "TRANSUI_VERSION_CODE=$version_code" >> "$GITEA_ENV" + sed -i -E \ + -e "s/^([[:space:]]*)versionCode .*/\1versionCode $version_code/" \ + -e "s/^([[:space:]]*)versionName .*/\1versionName '$version'/" \ + app/build.gradle + grep -Fq " versionCode $version_code" app/build.gradle + grep -Fq " versionName '$version'" app/build.gradle - name: Install Android SDK packages run: sdkmanager "platforms;android-35" "build-tools;35.0.0" - name: Lint and test diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index 2e13031..bf6fd15 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -17,6 +17,18 @@ jobs: - uses: actions/checkout@v4 with: submodules: recursive + - name: Set release version + if: gitea.event_name == 'release' + shell: bash + env: + TRANSUI_RELEASE_TAG: ${{ gitea.event.release.tag_name }} + run: | + version="${TRANSUI_RELEASE_TAG#v}" + if [[ ! "$version" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + echo "Release tag must use vMAJOR.MINOR.PATCH or MAJOR.MINOR.PATCH" >&2 + exit 1 + fi + echo "TRANSUI_VERSION=$version" >> "$GITEA_ENV" - name: Install dependencies run: | apt-get update @@ -25,7 +37,12 @@ jobs: libgstreamer1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good libsecret-1-dev \ libjson-glib-dev wtype xdotool - name: Configure - run: cmake -S . -B build -DCMAKE_BUILD_TYPE=Release + run: | + version_args=() + if [ -n "${TRANSUI_VERSION:-}" ]; then + version_args+=("-DCPACK_PACKAGE_VERSION=$TRANSUI_VERSION") + fi + cmake -S . -B build -DCMAKE_BUILD_TYPE=Release "${version_args[@]}" - name: Build run: cmake --build build --parallel 2 - name: Package @@ -62,6 +79,18 @@ jobs: - uses: actions/checkout@v4 with: submodules: recursive + - name: Set release version + if: gitea.event_name == 'release' + shell: bash + env: + TRANSUI_RELEASE_TAG: ${{ gitea.event.release.tag_name }} + run: | + version="${TRANSUI_RELEASE_TAG#v}" + if [[ ! "$version" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + echo "Release tag must use vMAJOR.MINOR.PATCH or MAJOR.MINOR.PATCH" >&2 + exit 1 + fi + echo "TRANSUI_VERSION=$version" >> "$GITEA_ENV" - name: Install dependencies run: | apt-get update @@ -70,7 +99,12 @@ jobs: libgstreamer1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good libsecret-1-dev \ libjson-glib-dev wtype xdotool - name: Configure - run: cmake -S . -B build -DCMAKE_BUILD_TYPE=Release + run: | + version_args=() + if [ -n "${TRANSUI_VERSION:-}" ]; then + version_args+=("-DCPACK_PACKAGE_VERSION=$TRANSUI_VERSION") + fi + cmake -S . -B build -DCMAKE_BUILD_TYPE=Release "${version_args[@]}" - name: Build run: cmake --build build --parallel 2 - name: Package