name: Build

on: [pull_request, push]

jobs:
  build:
    strategy:
      fail-fast: false
      matrix:
        arduino-platform: ['metro_m0', 'hallowing', 'circuitplayground_m0',
                           'metro_m4', 'pybadge_m4', 'pygamer_m4', 'hallowing_m4', 'pyportal_m4', 'pyportal_m4_titano']

    runs-on: ubuntu-latest
    
    steps:
    - name: Setup Python
      uses: actions/setup-python@v1
      with:
        python-version: '3.x'
        
    - name: Checkout code
      uses: actions/checkout@v2

    - name: Checkout submodules
      shell: bash
      run: |
        auth_header="$(git config --local --get http.https://github.com/.extraheader)"
        git submodule sync --recursive
        git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive      
        
    - name: Install Arduino CLI and Tools
      run: |
        # make all our directories we need for files and libraries
        mkdir $HOME/.arduino15
        mkdir $HOME/.arduino15/packages
        mkdir $HOME/Arduino
        mkdir $HOME/Arduino/libraries
        curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | sh
        echo "$GITHUB_WORKSPACE/bin" >> $GITHUB_PATH
        
    - name: Install BSP and Libraries
      env:
        BSP_URL: https://adafruit.github.io/arduino-board-index/package_adafruit_index.json
        BSP_PATH: .arduino15/packages/adafruit/hardware/samd
        LIB_DEPS: FlashStorage SD
      run: |
        arduino-cli config init
        arduino-cli core update-index
        arduino-cli core update-index --additional-urls $BSP_URL        
        arduino-cli core install arduino:samd --additional-urls $BSP_URL
        arduino-cli core install adafruit:samd --additional-urls $BSP_URL
        # Replace release BSP with our code
        BSP_VERSION=`eval ls $HOME/$BSP_PATH`
        rm -r $HOME/$BSP_PATH/*
        ln -s $GITHUB_WORKSPACE $HOME/$BSP_PATH/$BSP_VERSION
        arduino-cli lib install $LIB_DEPS

    - name: Build examples
      run: python3 extras/build_all.py ${{ matrix.arduino-platform }}

    # How to mark this as allowed-to-fail?
    - name: Build examples (-Wall)
      run: python3 extras/build_all.py --all_warnings --warnings_do_not_cause_job_failure
