wiretrail 0.3.0

Fast, deterministic, agent-friendly HAR analyzer CLI. heaptrail for network captures.
Documentation
name: release binaries

on:
  release:
    types: [created]

# Required so taiki-e/upload-rust-binary-action can attach assets to the
# release. New repositories default GITHUB_TOKEN to read-only.
permissions:
  contents: write

jobs:
  upload-bins:
    name: "Upload release binaries"
    strategy:
      # One target failing should not cancel the others.
      fail-fast: false
      matrix:
        include:
          - target: x86_64-unknown-linux-gnu
            os: ubuntu-latest
          - target: aarch64-unknown-linux-gnu
            os: ubuntu-latest
          - target: x86_64-pc-windows-msvc
            os: windows-latest
          - target: aarch64-pc-windows-msvc
            os: windows-latest
          - target: x86_64-apple-darwin
            os: macos-latest
          - target: aarch64-apple-darwin
            os: macos-latest
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v4
      - name: Install stable
        uses: dtolnay/rust-toolchain@stable
      - uses: taiki-e/upload-rust-binary-action@v1
        with:
          target: ${{ matrix.target }}
          bin: wiretrail
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

  publish-crate:
    name: "Publish on crates.io"
    runs-on: ubuntu-latest
    steps:
      - name: Checkout the repository
        uses: actions/checkout@v4
      - name: Install stable
        uses: dtolnay/rust-toolchain@stable
      - name: Publish (skip if already on crates.io)
        # cargo publish reads CARGO_REGISTRY_TOKEN from the environment
        # automatically; no --token flag needed. Skips the publish call
        # if this exact version is already on crates.io (idempotent —
        # safe to re-run a release for binary-only uploads).
        env:
          CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
        run: |
          set -euo pipefail
          NAME=$(awk -F\" '/^name *=/ {print $2; exit}' Cargo.toml)
          VERSION=$(awk -F\" '/^version *=/ {print $2; exit}' Cargo.toml)
          echo "Checking if $NAME $VERSION is already on crates.io..."
          if curl -sfL "https://crates.io/api/v1/crates/$NAME/$VERSION" \
              -H 'User-Agent: wiretrail-release-workflow' \
              -o /dev/null; then
            echo "$NAME $VERSION already published — skipping cargo publish."
          else
            cargo publish
          fi