name: Publish FreeBSD

on:
  push:
    tags:
      - "v*.*.*"

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }}
  cancel-in-progress: true

jobs:
  Publish_FreeBSD:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        toolchain: ["stable"] # ["nightly", "beta", "stable"] #
    steps:
      - uses: actions/checkout@v6
      - name: Build in FreeBSD
        id: test
        uses: vmactions/freebsd-vm@v1
        with:
          usesh: true
          sync: rsync
          copyback: true
          prepare: |
            pkg install -y curl pkgconf glib git
            curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf > install.sh
            chmod +x install.sh
            ./install.sh -y --default-toolchain ${{ matrix.toolchain }}
          run: |
            . "$HOME/.cargo/env"
            set -ex

            # Add feature "nightly" if toolchain is nightly
            if [ "${{ matrix.toolchain }}" = "nightly" ]; then
                ARGS="$ARGS --features nightly"
            fi

            RUST_BACKTRACE=1 cargo +${{ matrix.toolchain }} fmt --all -- --check
            RUST_BACKTRACE=1 cargo +${{ matrix.toolchain }} clippy --all-features --release -- -D warnings
            RUST_BACKTRACE=1 cargo +${{ matrix.toolchain }} build --all-features --release

      - name: Archive
        run: |
          mkdir -p pubdir
          zip -j pubdir/overtls-x86_64-unknown-freebsd.zip ./target/release/overtls-bin ./config.json

      - name: Publish
        uses: softprops/action-gh-release@v3
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          files: pubdir/*
          # name: Automated build of ${{ github.sha }}
          # tag_name: r${{ github.sha }}
          # draft: false
          # prerelease: true
