name: build
on: [push, pull_request]
jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [windows-latest, macos-latest, ubuntu-latest]
        build_type: [RelWithDebInfo, Debug]
        enable_ui: [off]
        include:
          - os: ubuntu-latest
            build_type: Debug
            enable_ui: on
    steps:
    - uses: actions/checkout@v2
      with:
        submodules: 'recursive'
    - name: ccache
      uses: hendrikmuhs/ccache-action@v1
      if: runner.os == 'Linux'
      with:
        key: ${{ matrix.os }}-${{ matrix.enable_ui }}
    - uses: seanmiddleditch/gha-setup-ninja@master
    - uses: ilammy/msvc-dev-cmd@v1
      if: runner.os == 'Windows'
    - name: Install Dependencies
      shell: bash
      run: |
        if [[ "${{ runner.os }}" == "Linux" ]] ; then
          sudo apt-get update -qq
          sudo apt-get install -y \
            libx11-dev libxcursor-dev libxi-dev
        fi
    - name: Generating Makefiles
      shell: bash
      run: |
        if [[ "${{ runner.os }}" == "Windows" ]] ; then
          export enable_ccache=off
        else
          export enable_ccache=on
        fi
        cmake -S . -B build -G Ninja \
          -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \
          -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9 \
          -DENABLE_TESTS=ON \
          -DENABLE_UI=${{ matrix.enable_ui }} \
          -DENABLE_CCACHE=$enable_ccache
    - name: Compiling
      shell: bash
      run: |
        cd build && ninja
    - name: Running C++ Tests
      shell: bash
      run: |
        if [[ "${{ runner.os }}" == "Linux" ]] ; then
          export XVFB=xvfb-run
        fi
        cd build && $XVFB ctest --output-on-failure
    - name: Running CLI Tests
      shell: bash
      run: |
        if [[ "${{ runner.os }}" == "Linux" ]] ; then
          export XVFB=xvfb-run
        fi
        if [[ "${{ github.base_ref }}" == "beta" ]] || [[ "${{ github.ref }}" == "refs/heads/beta" ]] ; then
          export TESTS_BRANCH=beta
        else
          export TESTS_BRANCH=main
        fi
        cd build
        export ASEPRITE=$PWD/bin/aseprite
        git clone --branch $TESTS_BRANCH --recursive https://github.com/aseprite/tests.git
        cd tests
        $XVFB bash run-tests.sh
