kinjo 0.3.8

Kinjo: mDNS TUI and commands launch for local network services
Documentation
name: Build macOS release archives

on:
  workflow_call:
    inputs:
      version:
        required: true
        type: string
      ref:
        description: "Exact release commit to check out and package."
        required: true
        type: string

permissions:
  contents: read

env:
  CARGO_TERM_COLOR: always

jobs:
  macos:
    name: macOS package on ${{ matrix.arch }}
    timeout-minutes: 35
    strategy:
      fail-fast: false
      matrix:
        include:
          - arch: aarch64
            os: macos-15
            target: aarch64-apple-darwin
            file-arch: arm64
          - arch: x86_64
            os: macos-15-intel
            target: x86_64-apple-darwin
            file-arch: x86_64

    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
        with:
          ref: ${{ inputs.ref }}
          persist-credentials: false

      - name: Check candidate identity
        env:
          VERSION: ${{ inputs.version }}
        run: scripts/release/check-version.sh manifest "$VERSION"

      - uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1

      - name: Build, run, and package the native target
        env:
          VERSION: ${{ inputs.version }}
          TARGET: ${{ matrix.target }}
        run: |
          cargo build --release --locked --verbose --target "$TARGET"
          binary="target/${TARGET}/release/kinjo"
          "$binary" --version | grep -F "$VERSION"
          file "$binary" | grep -F "${{ matrix.file-arch }}"

          name="kinjo-${VERSION}-${TARGET}"
          mkdir -p "$name/commands"
          cp "$binary" "$name/"
          cp README.md LICENSE "$name/"
          cp actions/*.toml "$name/commands/"
          timestamp="$(TZ=UTC git show -s --format=%cd --date=format-local:%Y%m%d%H%M.%S HEAD)"
          find "$name" -exec touch -h -t "$timestamp" {} +
          COPYFILE_DISABLE=1 tar -cf "${name}.tar" "$name"
          gzip -n "${name}.tar"
          tar -tzf "${name}.tar.gz" > archive-contents.txt
          grep -Fx "${name}/kinjo" archive-contents.txt
          grep -Fx "${name}/README.md" archive-contents.txt
          grep -Fx "${name}/LICENSE" archive-contents.txt
          grep -Eq "^${name}/commands/[^/]+\.toml$" archive-contents.txt
          mkdir smoke
          tar -xzf "${name}.tar.gz" -C smoke
          test -x "smoke/${name}/kinjo"
          "smoke/${name}/kinjo" --version | grep -F "$VERSION"

      - name: Upload staged macOS archive
        uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
        with:
          name: release-macos-${{ matrix.arch }}-${{ inputs.version }}
          path: kinjo-${{ inputs.version }}-${{ matrix.target }}.tar.gz
          if-no-files-found: error
          retention-days: 7