byteblitz 1.0.0

A tool to examine the binary contents of files
Documentation
name: Release

permissions:
  contents: write

on:
  push:
    tags:
      - v[0-9]+.*

jobs:
  check-version:
    runs-on: ubuntu-latest
    outputs:
      match: ${{ steps.compare.outputs.match }}
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Extract Cargo.toml Version
        id: cargo_version
        run: echo "::set-output name=version::$(grep 'version =' Cargo.toml | head -n 1 | cut -d '"' -f 2)"

      - name: Extract Git Tag
        id: git_tag
        run: echo "::set-output name=tag::${GITHUB_REF#refs/tags/}"

      - name: Compare Versions
        id: compare
        run: |
          if [ "${{ steps.cargo_version.outputs.version }}" != "${{ steps.git_tag.outputs.tag }}" ]; then
            echo "Version mismatch: Cargo.toml version does not match the Git tag."
            exit 1
          fi
          echo "::set-output name=match::true"

  create-release:
    needs: check-version
    if: ${{ needs.check-version.outputs.match == 'true' }}
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: taiki-e/create-gh-release-action@v1
        with:
          # (optional) Path to changelog.
          changelog: CHANGELOG.md
          # (required) GitHub token for creating GitHub Releases.
          token: ${{ secrets.GITHUB_TOKEN }}

  upload-assets:
    needs: create-release
    strategy:
      matrix:
        os:
          - ubuntu-latest
          - macos-latest
          - windows-latest
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v4
      - uses: taiki-e/upload-rust-binary-action@v1
        with:
          # (required) Comma-separated list of binary names (non-extension portion of filename) to build and upload.
          # Note that glob pattern is not supported yet.
          bin: byteblitz
          # (optional) On which platform to distribute the `.tar.gz` file.
          # [default value: unix]
          # [possible values: all, unix, windows, none]
          tar: unix
          # (optional) On which platform to distribute the `.zip` file.
          # [default value: windows]
          # [possible values: all, unix, windows, none]
          zip: windows
          # (required) GitHub token for uploading assets to GitHub Releases.
          token: ${{ secrets.GITHUB_TOKEN }}