name: MacOS Build and Test

on:
  push:
    paths-ignore:
      - 'doc/**'
      - 'docker/**'
      - 'traces/**'
      - '.vscode/**'
  pull_request:
    paths-ignore:
      - 'doc/**'
      - 'docker/**'
      - 'traces/**'
      - '.vscode/**'

jobs:
  macos-make:
    runs-on: macos-latest

    steps:
      - uses: actions/checkout@v3

      - name: Set Git http.postBuffer to something high
        run: git config --global http.postBuffer 524288000

      - name: Handle homebrew quirks
        run: rm -rf /usr/local/bin/2to3

      - name: Update brew repos
        run: brew update
        continue-on-error: true

      - name: Tap RfidResearchGroup/proxmark3
        run: brew tap RfidResearchGroup/proxmark3

      - name: Install dependencies
        run: brew install readline coreutils qt5 RfidResearchGroup/proxmark3/arm-none-eabi-gcc openssl
        continue-on-error: true

      - name: Install Python dependencies
        run: |
          python3 -m pip install --upgrade pip
          python3 -m pip install setuptools ansicolors sslcrypto
          if [ -f requirements.txt ]; then python3 -m pip install -r requirements.txt; fi

      - name: make clean
        run: make clean

      - name: Build
        env:
          V: 1
        run: make -j$((`sysctl -n hw.ncpu` + 1))

      - name: Test
        run: make check

  macos-make-btaddon:
    runs-on: macos-latest

    steps:
      - uses: actions/checkout@v3

      - name: Set Git http.postBuffer to something high
        run: git config --global http.postBuffer 524288000

      - name: Handle homebrew quirks
        run: rm -rf /usr/local/bin/2to3

      - name: Update brew repos
        run: brew update
        continue-on-error: true

      - name: Tap RfidResearchGroup/proxmark3
        run: brew tap RfidResearchGroup/proxmark3

      - name: Install dependencies
        run: brew install readline coreutils qt5 RfidResearchGroup/proxmark3/arm-none-eabi-gcc openssl
        continue-on-error: true

      - name: Install Python dependencies
        run: |
          python3 -m pip install --upgrade pip
          python3 -m pip install setuptools ansicolors sslcrypto
          if [ -f requirements.txt ]; then python3 -m pip install -r requirements.txt; fi

      - name: make clean
        run: make clean

      - name: Build
        env:
          V: 1
          PLATFORM_EXTRAS: BTADDON
        run: make -j$((`sysctl -n hw.ncpu` + 1))

      - name: Test
        run: make check

  macos-cmake:
    runs-on: macos-latest

    steps:
      - uses: actions/checkout@v3

      - name: Set Git http.postBuffer to something high
        run: git config --global http.postBuffer 524288000

      - name: Handle homebrew quirks
        run: rm -rf /usr/local/bin/2to3

      - name: Update brew repos
        run: brew update
        continue-on-error: true

      - name: Tap RfidResearchGroup/proxmark3
        run: brew tap RfidResearchGroup/proxmark3

      - name: Install dependencies
        run: brew install readline coreutils qt5 RfidResearchGroup/proxmark3/arm-none-eabi-gcc openssl
        continue-on-error: true

      - name: Install Python dependencies
        run: |
          python3 -m pip install --upgrade pip
          python3 -m pip install setuptools ansicolors sslcrypto
          if [ -f requirements.txt ]; then python3 -m pip install -r requirements.txt; fi

      - name: Prepare Build Folders
        run: |
          mkdir -p client/build
          ln -s ../cmdscripts client/build/
          ln -s ../luascripts client/build/
          ln -s ../pyscripts client/build/
          ln -s ../lualibs client/build/

      - name: Initiate cmake environment
        run: cmake ..
        working-directory: client/build/

      - name: Build
        env:
          VERBOSE: 1
        run: make -j$((`sysctl -n hw.ncpu` + 1))
        working-directory: client/build/

      - name: Test
        env:
          CHECKARGS: "--clientbin ./client/build/proxmark3"
        run: make client/check
