name: Benchmark
on:
  push:
    branches: master
jobs:
  benchmark_with_bencher:
    name: Benchmark with Bencher
    runs-on: ubuntu-22.04
    env:
      BENCHER_PROJECT: mpeg2ts-reader
      BENCHER_API_TOKEN: ${{ secrets.BENCHER_API_TOKEN }}
    steps:
      - uses: actions/checkout@v4
        with:
          lfs: true

      - name: Install toolchain
        uses: dtolnay/rust-toolchain@1.79.0

      - uses: bencherdev/bencher@main
      - uses: cargo-bins/cargo-binstall@main

      - run: sudo apt update && sudo apt install valgrind

      - name: Install iai-callgrind-runner
        run: |
          version=$(cargo metadata --format-version=1 |\
            jq '.packages[] | select(.name == "iai-callgrind").version' |\
            tr -d '"'
          )
          cargo binstall iai-callgrind-runner --no-confirm --version $version

      - run: |
          IAI_CALLGRIND_COLOR=never cargo bench --bench ci_bench > perf.txt
      - run: |
          bencher run \
          --branch "$GITHUB_REF_NAME" \
          --err \
          --adapter rust_iai_callgrind \
          --hash "$GITHUB_SHA" \
          --file "perf.txt"
