name: Ubuntu Build and Test

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


jobs:
  ubuntu-make:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - uses: actions/setup-python@v5
        with:
          python-version: '3.12'

      - name: Update apt repos
        run: sudo apt-get update

      - name: Install dependencies
        run: sudo apt-get install -yqq make autoconf build-essential ca-certificates pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev python3 python3-dev libpython3-all-dev liblua5.4-dev liblua5.4-0 lua5.4 sed libssl-dev libgd-dev

      - name: Install Python dependencies
        run: pip install -r tools/requirements.txt

      - name: make clean
        run: make clean

      - name: Build
        env:
          V: 1
        run: make -j$((`nproc` + 1))

      - name: Test
        run: make check

  ubuntu-make-btaddon:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - uses: actions/setup-python@v5
        with:
          python-version: '3.12'

      - name: Update apt repos
        run: sudo apt-get update

      - name: Install dependencies
        run: sudo apt-get install -yqq make autoconf build-essential ca-certificates pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev python3 python3-dev libpython3-all-dev liblua5.4-dev liblua5.4-0 lua5.4 sed libssl-dev libgd-dev

      - name: Install Python dependencies
        run: pip install -r tools/requirements.txt

      - name: make clean
        run: make clean

      - name: Build
        env:
          V: 1
          PLATFORM_EXTRAS: BTADDON
        run: make -j$((`nproc` + 1))

      - name: Test
        run: make check

  ubuntu-cmake:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - uses: actions/setup-python@v5
        with:
          python-version: '3.12'

      - name: Update apt repos
        run: sudo apt-get update

      - name: Install dependencies
        run: sudo apt-get install -yqq make autoconf build-essential ca-certificates pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev python3 python3-dev libpython3-all-dev liblua5.4-dev liblua5.4-0 lua5.4 sed libssl-dev libgd-dev

      - name: Install Python dependencies
        run: pip install -r tools/requirements.txt

      - 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$((`nproc` + 1))
        working-directory: client/build/

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