diff --git a/.github/workflows/build_snap.yml b/.github/workflows/build_snap.yml index 62562a42..cf6c7c08 100644 --- a/.github/workflows/build_snap.yml +++ b/.github/workflows/build_snap.yml @@ -32,6 +32,35 @@ jobs: - name: Show Snapcraft version run: snapcraft --version + - name: Set Snap version from tag + if: github.event_name == 'release' + run: | + # Extract version from GITHUB_REF (handles both v0.96.6 and 0.96.6 tags) + VERSION="${GITHUB_REF#refs/tags/}" + VERSION="${VERSION#v}" + VERSION="${VERSION%%-*}" + VERSION="${VERSION//[[:space:]]/}" + + if [ -z "$VERSION" ]; then + echo "ERROR: Version is empty after parsing GITHUB_REF: $GITHUB_REF" >&2 + exit 1 + fi + + if [ ${#VERSION} -gt 32 ]; then + echo "Snap version too long: $VERSION" >&2 + exit 1 + fi + + # Verify snapcraft.yaml has a version line before modifying + if ! grep -q '^version:' snap/snapcraft.yaml; then + echo "ERROR: No version line found in snap/snapcraft.yaml" >&2 + exit 1 + fi + + echo "Setting snap version to: $VERSION" + sed -i "s/^version: .*/version: '${VERSION}'/" snap/snapcraft.yaml + grep -m1 '^version:' snap/snapcraft.yaml + - name: Build snap run: sudo snapcraft --destructive-mode