name: CI

# Run this workflow whenever the build may be affected
on:
  push:
    branches: [ master, develop ]
    paths-ignore:
      - 'doc/**'
  pull_request:
    branches: [ develop ]
    paths-ignore:
      - 'doc/**'

jobs:
  build-firmware:
    runs-on: ubuntu-latest
    container:
      image: infinitime/infinitime-build
    steps:
      # This workaround fixes the error "unsafe repository (REPO is owned by someone else)".
      # See https://github.com/actions/checkout/issues/760 and https://github.com/actions/checkout/issues/766
      # The fix in "actions/checkout@v2" was not sufficient as the build process also uses git (to get the current
      # commit hash, for example).
      - name: Workaround permission issues
        run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
      - name: Checkout source files
        uses: actions/checkout@v2
        with:
          submodules: recursive
      - name: Build
        shell: bash
        env:
          SOURCES_DIR: .
        run: /opt/build.sh all
      # Unzip the package because Upload Artifact will zip up the files
      - name: Unzip DFU package
        run: unzip ./build/output/pinetime-mcuboot-app-dfu-*.zip -d ./build/output/pinetime-mcuboot-app-dfu
      - name: Upload DFU artifacts
        uses: actions/upload-artifact@v3
        with:
          name: InfiniTime DFU ${{ github.head_ref }}
          path: ./build/output/pinetime-mcuboot-app-dfu/*
      - name: Upload MCUBoot image artifacts
        uses: actions/upload-artifact@v3
        with:
          name: InfiniTime MCUBoot image ${{ github.head_ref }}
          path: ./build/output/pinetime-mcuboot-app-image-*.bin

  build-simulator:
    runs-on: ubuntu-latest
    steps:
    - name: Install cmake
      uses: lukka/get-cmake@v3.18.3

    - name: Install SDL2 development package
      run:  |
        sudo apt-get update
        sudo apt-get -y install libsdl2-dev

    - name: Install lv_font_conv
      run:
        npm i -g lv_font_conv@1.5.2

    - name: Checkout source files
      uses: actions/checkout@v2
      with:
        submodules: recursive

    - name: Get InfiniSim repo
      run:  |
        git clone https://github.com/InfiniTimeOrg/InfiniSim.git --depth 1 --branch main
        git -C InfiniSim submodule update --init lv_drivers libpng

    - name: CMake
      run:  |
        cmake -G Ninja -S InfiniSim -B build_lv_sim -DInfiniTime_DIR="${PWD}"

    - name: Build simulator executable
      run:  |
        cmake --build build_lv_sim

    - name: Upload simulator executable
      uses: actions/upload-artifact@v3
      with:
        name: infinisim-${{ github.head_ref }}
        path: build_lv_sim/infinisim
