---
name: Ubuntu

on:
  pull_request:
  push:
    branches:
      - master

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

    steps:

      - name: Install tools and libraries via APT
        run: |
          sudo apt update
          sudo apt install -y \
            build-essential \
            cmake \
            doctest-dev \
            ffmpeg \
            libavcodec-dev \
            libavformat-dev \
            libavutil-dev \
            libncurses-dev \
            libqrcodegen-dev \
            libreadline-dev \
            libswscale-dev \
            libunistring-dev \
            pandoc \
            pkg-config \
            python3-cffi \
            python3-dev \
            python3-setuptools

      - uses: actions/checkout@v2

      - name: cmake
        run: |
          mkdir build && cd build
          cmake .. \
            -DCMAKE_BUILD_TYPE=Release \
            -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
          sudo ldconfig

      - name: python wrappers (old)
        run: |
          python3 -m pip install --upgrade pip
          pip install 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: |
          cd rust
          rustc --version
          cargo build
          cargo t_all
