hotdata 0.1.2

Powerful data platform API for datasets, queries, and analytics.
Documentation
name: GitHub Release

on:
  push:
    tags:
      - 'v[0-9]*'
  workflow_dispatch:
    inputs:
      tag:
        description: 'Existing tag to create or update a GitHub Release for (e.g. v0.2.2)'
        required: true
        type: string

permissions:
  contents: write

jobs:
  release:
    name: Create GitHub Release
    runs-on: ubuntu-latest
    env:
      RELEASE_TAG: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.tag || github.ref_name }}
    steps:
      - name: Validate release tag format
        if: github.event_name == 'workflow_dispatch'
        env:
          INPUT_TAG: ${{ github.event.inputs.tag }}
        run: |
          set -euo pipefail
          if [[ ! "$INPUT_TAG" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
            echo "tag must look like vX.Y.Z, got: $INPUT_TAG" >&2
            exit 1
          fi

      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
        with:
          ref: ${{ env.RELEASE_TAG }}
          fetch-depth: 0

      - uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable
        with:
          toolchain: stable

      - name: Read package metadata
        id: meta
        run: |
          set -euo pipefail
          pkg_name=$(cargo metadata --no-deps --format-version 1 \
            | jq -r '.packages[] | select(.name=="hotdata") | .name')
          pkg_version="${RELEASE_TAG#v}"
          echo "name=${pkg_name}" >> "$GITHUB_OUTPUT"
          echo "version=${pkg_version}" >> "$GITHUB_OUTPUT"

      - name: Extract changelog notes
        id: notes
        run: |
          set -euo pipefail
          version="${RELEASE_TAG#v}"
          if [[ -f CHANGELOG.md ]]; then
            body="$(python3 scripts/extract-changelog.py "$version")"
          else
            body="Release ${version}."
          fi
          delimiter="EOF_${RANDOM}_${RANDOM}"
          {
            echo "body<<${delimiter}"
            echo "$body"
            echo "${delimiter}"
          } >> "$GITHUB_OUTPUT"

      - name: Create GitHub Release
        uses: softprops/action-gh-release@b4309332981a82ec1c5618f44dd2e27cc8bfbfda # v3.0.0
        with:
          tag_name: ${{ env.RELEASE_TAG }}
          name: ${{ steps.meta.outputs.name }} ${{ steps.meta.outputs.version }}
          body: ${{ steps.notes.outputs.body }}
          generate_release_notes: false
          make_latest: true