---
name: macOS

on:
  pull_request:
  push:
    branches:
      - master

jobs:
  tests:
    env:
      COLORTERM: truecolor
      NPROC: 2
      TERM: xterm
    name: 🍎 build, test, & install
    runs-on: macos-latest

    steps:

      - name: Install tools and libraries via Homebrew
        run: |
          brew install \
            coreutils \
            doctest \
            ffmpeg \
            libunistring \
            ncurses \
            pandoc \
            readline

      - uses: actions/checkout@v2

      - name: Build libqrcodegen
        run: |
          mkdir "${HOME}/repos" && cd "${HOME}/repos"
          git clone https://github.com/nayuki/QR-Code-generator.git
          cd QR-Code-generator/c
          AR=/usr/local/opt/llvm/bin/llvm-ar
          make AR="${AR}"
          mkdir -p "${HOME}"/opt/qrcodegen/{include,lib}
          cd "${HOME}/opt/qrcodegen/include" \
            && ln -s "${HOME}/repos/QR-Code-generator/c" ./qrcodegen
          cd "${HOME}/opt/qrcodegen/lib" \
            && ln -s "${HOME}/repos/QR-Code-generator/c/libqrcodegen.a" ./libqrcodegen.a
          cd /usr/local/opt && ln -s "${HOME}/opt/qrcodegen" ./qrcodegen

      - name: cmake
        run: |
          export PKG_CONFIG_PATH="/usr/local/opt/ncurses/lib/pkgconfig:/usr/local/opt/readline/lib/pkgconfig"
          mkdir build && cd build
          cmake .. \
            -DCMAKE_BUILD_TYPE=Release \
            -DCMAKE_C_FLAGS="-I/usr/local/opt/qrcodegen/include -L/usr/local/opt/qrcodegen/lib" \
            -DUSE_QRCODEGEN=on

      - name: make
        run: |
          cd build
          make -j${NPROC}

      - name: ctest
        run: |
          cd build
          ctest --output-on-failure

      - name: make install
        run: |
          cd build
          sudo make install

      - name: python wrappers (old)
        run: |
          python3 -m pip install --upgrade pip
          pip install cffi pypandoc
          cd cffi
          python3 setup.py sdist build
          sudo python3 setup.py install
          notcurses-pydemo > /dev/null
          ncdirect-pydemo > /dev/null

      - name: python wrappers (new)
        run: |
         cd python
         python3 setup.py build
         sudo python3 setup.py install
         python3 examples/000-print-version.py

      - name: rust wrappers
        run: |
          export PKG_CONFIG_PATH="/usr/local/libdata/pkgconfig"
          cd rust
          rustc --version
          cargo build
          cargo t_all
