skeg-cli 0.1.1

Command-line tool for skeg (index build, inspect, repair)
Documentation
name: Release
on:
  push:
    tags: ['v*']

# Required by softprops/action-gh-release to create the GitHub Release.
permissions:
  contents: write

jobs:
  publish-crate:
    uses: skegdb/.github/.github/workflows/release-cargo.yml@main
    secrets:
      CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}

  build-binaries:
    strategy:
      fail-fast: false
      matrix:
        # aarch64 only. skeg-cli links skeg-vector which carries the
        # NEON SIMD kernels; x86_64 would compile via scalar fallback.
        include:
          - target: aarch64-apple-darwin
            runner: macos-latest
          - target: aarch64-unknown-linux-gnu
            runner: ubuntu-latest
    runs-on: ${{ matrix.runner }}
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
        with:
          targets: ${{ matrix.target }}
      - uses: Swatinem/rust-cache@v2
      - run: |
          if [ "${{ matrix.target }}" = "aarch64-unknown-linux-gnu" ]; then
            sudo apt-get update && sudo apt-get install -y gcc-aarch64-linux-gnu
            export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc
          fi
          cargo build --release --target ${{ matrix.target }} --bin skeg-cli --locked
      - run: |
          cd target/${{ matrix.target }}/release
          NAME="skeg-cli-${{ github.ref_name }}-${{ matrix.target }}"
          tar -czf "${NAME}.tar.gz" skeg-cli
          shasum -a 256 "${NAME}.tar.gz" > "${NAME}.tar.gz.sha256"
      - uses: softprops/action-gh-release@v2
        with:
          files: |
            target/${{ matrix.target }}/release/skeg-cli-*.tar.gz
            target/${{ matrix.target }}/release/skeg-cli-*.tar.gz.sha256

  # Two bump jobs, one per platform. Each runs on its own OS so that the
  # Ruby `if OS.mac? ... elsif OS.linux?` block in Formula/skeg-cli.rb
  # is evaluated to the matching branch, and
  # mislav/bump-homebrew-formula-action rewrites only that branch's
  # url/sha256. The linux job needs the mac one (via needs:) to
  # serialise pushes to the tap.

  bump-homebrew-mac:
    needs: build-binaries
    runs-on: macos-latest
    steps:
      - name: fetch sha256 of darwin tarball
        id: sha
        run: |
          curl -sLo /tmp/skeg-cli.sha "https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/skeg-cli-${{ github.ref_name }}-aarch64-apple-darwin.tar.gz.sha256"
          echo "value=$(awk '{print $1}' /tmp/skeg-cli.sha)" >> "$GITHUB_OUTPUT"
      - uses: mislav/bump-homebrew-formula-action@v4
        with:
          formula-name: skeg-cli
          formula-path: Formula/skeg-cli.rb
          homebrew-tap: skegdb/homebrew-tap
          tag-name: ${{ github.ref_name }}
          download-url: https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/skeg-cli-${{ github.ref_name }}-aarch64-apple-darwin.tar.gz
          download-sha256: ${{ steps.sha.outputs.value }}
          create-pullrequest: false
          create-branch: false
          commit-message: |
            skeg-cli {{version}}: bump aarch64-apple-darwin sha256
        env:
          COMMITTER_TOKEN: ${{ secrets.HOMEBREW_GITHUB_API_TOKEN }}

  bump-homebrew-linux:
    needs: bump-homebrew-mac
    runs-on: ubuntu-latest
    steps:
      - name: fetch sha256 of linux tarball
        id: sha
        run: |
          curl -sLo /tmp/skeg-cli.sha "https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/skeg-cli-${{ github.ref_name }}-aarch64-unknown-linux-gnu.tar.gz.sha256"
          echo "value=$(awk '{print $1}' /tmp/skeg-cli.sha)" >> "$GITHUB_OUTPUT"
      - uses: mislav/bump-homebrew-formula-action@v4
        with:
          formula-name: skeg-cli
          formula-path: Formula/skeg-cli.rb
          homebrew-tap: skegdb/homebrew-tap
          tag-name: ${{ github.ref_name }}
          download-url: https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/skeg-cli-${{ github.ref_name }}-aarch64-unknown-linux-gnu.tar.gz
          download-sha256: ${{ steps.sha.outputs.value }}
          create-pullrequest: false
          create-branch: false
          commit-message: |
            skeg-cli {{version}}: bump aarch64-unknown-linux-gnu sha256
        env:
          COMMITTER_TOKEN: ${{ secrets.HOMEBREW_GITHUB_API_TOKEN }}