shithub: m8c

ref: 2142ef34fad15e2ee446219b4396c7198cc7183f
dir: /.github/workflows/update-package-versions.yml/

View raw version
name: Update Version and Hash in flake.nix/RPM spec 

on:
  push:
    tags:
      - v1.*
  workflow_dispatch:

jobs:
  update-version:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
          ref: ${{ github.event.push.head.ref }}

      - name: Set up Nix
        uses: cachix/install-nix-action@v22
        with:
          nix_path: nixpkgs=channel:nixos-unstable

      - name: Find newest annotated tag
        id: newest-tag
        run: |
          latest_annotated_tag=$(git describe --tags $(git rev-list --tags --max-count=1))
          echo "Newest annotated tag: $latest_annotated_tag"
          echo "latest_annotated_tag=$latest_annotated_tag" >> $GITHUB_OUTPUT

      - name: Check if tag is valid version
        id: valid-tag
        run: |
          latest_annotated_tag="${{ steps.newest-tag.outputs.latest_annotated_tag }}"
          echo "Passed value: $latest_annotated_tag"
          if [[ $latest_annotated_tag =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
            echo "Valid tag format"
            echo "valid=true" >> $GITHUB_OUTPUT
          else
            echo "Invalid tag format"
            echo "valid=false" >> $GITHUB_OUTPUT
          fi

      - name: Update version in flake.nix and RPM spec
        if: steps.valid-tag.outputs.valid
        run: |
          latest_annotated_tag="${{ steps.newest-tag.outputs.latest_annotated_tag }}"
          latest_annotated_tag_without_v="${latest_annotated_tag#v}"  # Remove 'v' prefix
          sed -i "s/version = \".*\";/version = \"$latest_annotated_tag_without_v\";/" flake.nix
          sed -i "s/Version:.*/Version:        $latest_annotated_tag_without_v/" package/rpm/m8c.spec
          new_hash=$(nix-prefetch-url --unpack --type sha256 "https://github.com/laamaa/m8c/archive/v$latest_annotated_tag_without_v.tar.gz")  # Use updated variable name
          sed -i "s/hash = \".*\";/hash = \"sha256:$new_hash\";/" flake.nix
          git config user.email "github-actions@github.com"
          git config user.name "GitHub Actions"
          git commit -am "Update version and hash in flake.nix, update RPM spec version to $latest_annotated_tag_without_v"
          git push origin HEAD:main