From b8dac90c2ab331e8788d274ec0417151fa001146 Mon Sep 17 00:00:00 2001 From: vicrodh <103399283+vicrodh@users.noreply.github.com> Date: Mon, 12 Jan 2026 10:16:06 -0600 Subject: [PATCH] chore(release): sync version from tag --- .github/workflows/release-flatpak.yml | 53 +++++++++++++++++++++++++++ .github/workflows/release-linux.yml | 48 ++++++++++++++++++++++++ 2 files changed, 101 insertions(+) diff --git a/.github/workflows/release-flatpak.yml b/.github/workflows/release-flatpak.yml index c5378584c..a1efde53f 100644 --- a/.github/workflows/release-flatpak.yml +++ b/.github/workflows/release-flatpak.yml @@ -2,6 +2,11 @@ name: release-flatpak on: workflow_dispatch: + inputs: + tag: + description: "Optional release tag to build (e.g. v0.1.0)" + required: false + type: string push: tags: - "v*" @@ -15,6 +20,54 @@ jobs: - name: Checkout uses: actions/checkout@v4 + - name: Resolve release version + id: release + run: | + VERSION="" + if [[ "${GITHUB_REF}" == refs/tags/v* ]]; then + VERSION="${GITHUB_REF#refs/tags/v}" + elif [[ -n "${{ inputs.tag }}" ]]; then + VERSION="${{ inputs.tag }}" + VERSION="${VERSION#v}" + fi + echo "version=$VERSION" >> "$GITHUB_OUTPUT" + + - name: Sync version to build metadata + if: steps.release.outputs.version != '' + env: + QBZ_VERSION: ${{ steps.release.outputs.version }} + run: | + python - <<'PY' + import json + import os + import pathlib + import re + + version = os.environ["QBZ_VERSION"] + + def update_json(path, updater): + p = pathlib.Path(path) + data = json.loads(p.read_text(encoding="utf-8")) + updater(data) + p.write_text(json.dumps(data, indent=2) + "\n", encoding="utf-8") + + update_json("package.json", lambda d: d.__setitem__("version", version)) + + def update_lock(d): + d["version"] = version + packages = d.get("packages") + if isinstance(packages, dict) and "" in packages: + packages[""]["version"] = version + update_json("package-lock.json", update_lock) + + update_json("src-tauri/tauri.conf.json", lambda d: d.__setitem__("version", version)) + + cargo_path = pathlib.Path("src-tauri/Cargo.toml") + cargo_text = cargo_path.read_text(encoding="utf-8") + cargo_text = re.sub(r'(?m)^version = \"[^\"]+\"', f'version = \"{version}\"', cargo_text, count=1) + cargo_path.write_text(cargo_text, encoding="utf-8") + PY + - name: Install flatpak tooling run: | sudo apt-get update diff --git a/.github/workflows/release-linux.yml b/.github/workflows/release-linux.yml index 4bde7b575..08fd02adb 100644 --- a/.github/workflows/release-linux.yml +++ b/.github/workflows/release-linux.yml @@ -26,6 +26,54 @@ jobs: node-version: 20 cache: npm + - name: Resolve release version + id: release + run: | + VERSION="" + if [[ "${GITHUB_REF}" == refs/tags/v* ]]; then + VERSION="${GITHUB_REF#refs/tags/v}" + elif [[ -n "${{ inputs.tag }}" ]]; then + VERSION="${{ inputs.tag }}" + VERSION="${VERSION#v}" + fi + echo "version=$VERSION" >> "$GITHUB_OUTPUT" + + - name: Sync version to build metadata + if: steps.release.outputs.version != '' + env: + QBZ_VERSION: ${{ steps.release.outputs.version }} + run: | + python - <<'PY' + import json + import os + import pathlib + import re + + version = os.environ["QBZ_VERSION"] + + def update_json(path, updater): + p = pathlib.Path(path) + data = json.loads(p.read_text(encoding="utf-8")) + updater(data) + p.write_text(json.dumps(data, indent=2) + "\n", encoding="utf-8") + + update_json("package.json", lambda d: d.__setitem__("version", version)) + + def update_lock(d): + d["version"] = version + packages = d.get("packages") + if isinstance(packages, dict) and "" in packages: + packages[""]["version"] = version + update_json("package-lock.json", update_lock) + + update_json("src-tauri/tauri.conf.json", lambda d: d.__setitem__("version", version)) + + cargo_path = pathlib.Path("src-tauri/Cargo.toml") + cargo_text = cargo_path.read_text(encoding="utf-8") + cargo_text = re.sub(r'(?m)^version = \"[^\"]+\"', f'version = \"{version}\"', cargo_text, count=1) + cargo_path.write_text(cargo_text, encoding="utf-8") + PY + - name: Setup Rust uses: dtolnay/rust-toolchain@stable