whatcable 0.4.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

    steps:
      - uses: actions/checkout@v5

      - name: Install dependencies
        run: |
          sudo apt-get update
          sudo apt-get install -y libudev-dev pkg-config

      - uses: dtolnay/rust-toolchain@stable

      - name: Build
        run: cargo build --release --locked

      - name: Test
        run: cargo test --release --locked

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

      - name: Upload artifacts
        uses: actions/upload-artifact@v5
        with:
          name: release-assets
          path: |
            target/whatcable-*.tar.gz

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

    steps:
      - uses: actions/checkout@v5

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

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

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

            ### Quick install

            ```bash
            tar xzf whatcable-${{ github.ref_name }}-x86_64-linux.tar.gz
            sudo mv whatcable /usr/local/bin/
            ```

            Or via Cargo:

            ```bash
            cargo install whatcable
            ```
          files: |
            assets/**/*.tar.gz