whatcable 0.2.0

Tells you what each USB cable/device on Linux can actually do. Rust port of WhatCable.
Documentation
name: Release

on:
  push:
    tags:
      - 'v*'

permissions:
  contents: write

jobs:
  build:
    runs-on: ubuntu-latest
    container:
      image: fedora:43

    steps:
      - uses: actions/checkout@v4

      - name: Install dependencies
        run: |
          dnf install -y gcc-c++ cmake pkgconf-pkg-config \
            systemd-devel tar gzip

      - name: Configure
        run: cmake -B build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release

      - name: Build
        run: cmake --build build --parallel

      - name: Package CLI binary
        run: |
          mkdir -p build/dist
          cp build/src/cli/whatcable-linux build/dist/
          cd build/dist
          tar czf ../whatcable-linux-cli-${GITHUB_REF_NAME}-x86_64.tar.gz whatcable-linux

      - name: Upload artifacts
        uses: actions/upload-artifact@v4
        with:
          name: release-assets
          path: |
            build/whatcable-linux-cli-*.tar.gz

  release:
    needs: build
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - name: Download artifacts
        uses: actions/download-artifact@v4
        with:
          name: release-assets
          path: assets

      - name: Create GitHub Release
        uses: softprops/action-gh-release@v2
        with:
          body: |
            ## Release Assets

            | File | Description |
            |------|-------------|
            | `whatcable-linux-cli-${{ github.ref_name }}-x86_64.tar.gz` | CLI binary. Extract and run `./whatcable-linux`. |

            ### Quick install

            ```bash
            tar xzf whatcable-linux-cli-${{ github.ref_name }}-x86_64.tar.gz
            sudo mv whatcable-linux /usr/local/bin/
            ```
          files: |
            assets/**/*.tar.gz