vane 0.9.2

A flow-based reverse proxy with multi-layer routing and programmable pipelines.
name: Build macOS

on:
  workflow_call:
    inputs:
      ref:
        required: true
        type: string
        description: 'Git ref to checkout (tag or branch)'
      skip_release:
        required: false
        type: boolean
        default: false
        description: 'Skip packaging and uploading artifacts'

jobs:
  build:
    runs-on: macos-15
    steps:
      - name: Checkout
        uses: actions/checkout@v6
        with:
          ref: ${{ inputs.ref }}

      - name: Get package info
        id: pkg
        run: |
          # Try to get bin name from [[bin]], fallback to [package] name
          BIN_NAME=$(grep -A1 '^\[\[bin\]\]' Cargo.toml | grep '^name' | head -1 | sed 's/.*= *"\([^"]*\)".*/\1/' || true)
          if [ -z "$BIN_NAME" ]; then
            BIN_NAME=$(grep '^name' Cargo.toml | head -1 | sed 's/.*= *"\([^"]*\)".*/\1/')
          fi
          VERSION="${{ inputs.ref }}"
          VERSION="${VERSION#v}"
          echo "bin_name=$BIN_NAME" >> $GITHUB_OUTPUT
          echo "version=$VERSION" >> $GITHUB_OUTPUT

      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@stable
        with:
          targets: aarch64-apple-darwin

      - name: Build
        run: cargo build --profile minimum --target aarch64-apple-darwin

      - name: Package tar.gz
        if: ${{ !inputs.skip_release }}
        run: |
          mkdir -p dist
          cp target/aarch64-apple-darwin/minimum/${{ steps.pkg.outputs.bin_name }} dist/
          cp LICENSE dist/
          cd dist
          tar -czvf ../${{ steps.pkg.outputs.bin_name }}-v${{ steps.pkg.outputs.version }}-macos-aarch64.tar.gz *

      - name: Package zip
        if: ${{ !inputs.skip_release }}
        run: |
          cd dist
          zip -r ../${{ steps.pkg.outputs.bin_name }}-v${{ steps.pkg.outputs.version }}-macos-aarch64.zip *

      - name: Upload tar.gz artifact
        if: ${{ !inputs.skip_release }}
        uses: actions/upload-artifact@v6
        with:
          name: ${{ steps.pkg.outputs.bin_name }}-macos-aarch64-tar
          path: ${{ steps.pkg.outputs.bin_name }}-v${{ steps.pkg.outputs.version }}-macos-aarch64.tar.gz
          retention-days: 1

      - name: Upload zip artifact
        if: ${{ !inputs.skip_release }}
        uses: actions/upload-artifact@v6
        with:
          name: ${{ steps.pkg.outputs.bin_name }}-macos-aarch64-zip
          path: ${{ steps.pkg.outputs.bin_name }}-v${{ steps.pkg.outputs.version }}-macos-aarch64.zip
          retention-days: 1