name: Build

on:
  push:
    branches:
      - master

jobs:
  test:
    runs-on: [ self-hosted, macOS, ARM64 ]
    steps:
      - uses: actions/checkout@v3
      - name: Test
        run: make test

  build:
    name: Build ${{ matrix.os }} ${{ matrix.arch }}
    needs: test
    strategy:
      matrix:
        include:
          - os: macOS
            arch: ARM64
            runner: [ self-hosted, macOS, ARM64 ]
            asset_path: ./release/wox-mac-arm64.dmg
            asset_name: wox-mac-arm64.dmg
            content_type: application/x-elf
            needs_keychain: true
          - os: macOS
            arch: AMD64
            runner: [ self-hosted, macOS, X64 ]
            asset_path: ./release/wox-mac-amd64.dmg
            asset_name: wox-mac-amd64.dmg
            content_type: application/x-elf
            needs_keychain: true
          - os: Windows
            arch: AMD64
            runner: [ self-hosted, Windows ]
            asset_path: ./release/wox-windows-amd64.exe
            asset_name: wox-windows-amd64.exe
            content_type: application/x-msdownload
          - os: Linux
            arch: AMD64
            runner: [ self-hosted, Linux ]
            asset_path: ./release/wox-linux-amd64
            asset_name: wox-linux-amd64
            content_type: application/x-msdownload
    runs-on: ${{ matrix.runner }}
    steps:
      - uses: actions/checkout@v3
      - name: Build
        run: make build
        env:
          KEYCHAINPWD: ${{ matrix.needs_keychain && secrets.KEYCHAINPWD || '' }}
      - name: Upload artifact
        uses: actions/upload-artifact@v4
        with:
          name: ${{ matrix.asset_name }}
          path: ${{ matrix.asset_path }}
          retention-days: 3
      # - name: Deploy nightly release
      #   uses: WebFreak001/deploy-nightly@v3.0.0
      #   with:
      #     upload_url: https://uploads.github.com/repos/Wox-launcher/Wox/releases/127182165/assets{?name,label}
      #     release_id: 127182165
      #     asset_path: ${{ matrix.asset_path }}
      #     asset_name: ${{ matrix.asset_name }}
      #     asset_content_type: ${{ matrix.content_type }}
      #     max_releases: 1
