name: build

on: [push]

env:
  UPLOAD_USER_FIRMWARE: false

jobs:
  build:
    runs-on: ubuntu-18.04
    steps:
    - uses: actions/checkout@v2
      with:
        submodules: recursive

    - name: before_install
      run: |
        sudo apt update
        sudo apt install -y gcc git wget make libncurses-dev flex bison python python-setuptools python-serial ninja-build
        wget https://dl.espressif.com/dl/xtensa-lx106-elf-linux64-1.22.0-100-ge567ec7-5.2.0.tar.gz

    - name: install
      run: |
        tar -xzf ./xtensa-lx106-elf-linux64-1.22.0-100-ge567ec7-5.2.0.tar.gz
        python -m pip install --user -r ./ESP8266_RTOS_SDK/requirements.txt

    - name: script
      id: script
      run: |
        export IDF_PATH=$PWD/ESP8266_RTOS_SDK
        export PATH="$PATH:$PWD/xtensa-lx106-elf/bin"
        echo "FIRMWARE=$PWD/build" >> $GITHUB_ENV
        python ./idf.py fullclean
        python ./idf.py build
        echo "::set-output name=status::success"

    - name: Generate release tag
      id: tag
      if: env.UPLOAD_USER_FIRMWARE == 'true' && steps.script.outputs.status == 'success' && !cancelled()
      run: |
        echo "::set-output name=release_tag::UserBuild_$(date +"%Y.%m.%d_%H-%M")"
        echo "::set-output name=status::success"

    - name: Merge bin files
      if: steps.tag.outputs.status == 'success' && !cancelled()
      run: |
        git clone https://github.com/espressif/esptool.git
        ./esptool/esptool.py --chip esp8266 merge_bin  -o build/esp8266_dap_full.bin 0x0 build/bootloader/bootloader.bin 0x8000 build/partition_table/partition-table.bin 0x10000 build/esp8266_dap.bin
        mv build/esp8266_dap.bin build/esp8266_dap_app.bin

    - name: Release user firmware
      uses: softprops/action-gh-release@v1
      if: steps.tag.outputs.status == 'success' && !cancelled()
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      with:
        tag_name: ${{ steps.tag.outputs.release_tag }}
        files: |
          ${{ env.FIRMWARE }}/esp8266_dap_full.bin
          ${{ env.FIRMWARE }}/esp8266_dap_app.bin
          ${{ env.FIRMWARE }}/bootloader/bootloader.bin
          ${{ env.FIRMWARE }}/partition_table/partition-table.bin