# https://dev.azure.com/home-assistant

trigger:
  branches:
    include:
    - dev
    - rc
  paths:
    include:
    - requirements_all.txt
pr: none
schedules:
- cron: '0 */4 * * *'
  displayName: 'daily builds'
  branches:
    include:
    - dev
variables:
  - name: versionWheels
    value: '1.13.0-3.8-alpine3.12'
resources:
  repositories:
    - repository: azure
      type: github
      name: 'home-assistant/ci-azure'
      endpoint: 'home-assistant'

jobs:
- template: templates/azp-job-wheels.yaml@azure
  parameters:
    builderVersion: '$(versionWheels)'
    builderApk: 'build-base;cmake;git;linux-headers;bluez-dev;libffi-dev;openssl-dev;glib-dev;eudev-dev;libxml2-dev;libxslt-dev'
    builderPip: 'Cython;numpy'
    skipBinary: 'aiohttp'
    wheelsRequirement: 'requirements.txt'
    wheelsRequirementDiff: 'requirements_diff.txt'
    wheelsConstraint: 'homeassistant/package_constraints.txt'
    jobName: 'Wheels_Core'
    preBuild:
    - script: |
        if [[ "$(Build.Reason)" =~ (Schedule|Manual) ]]; then
          exit 0
        else
          curl -s -o requirements_diff.txt https://raw.githubusercontent.com/home-assistant/core/master/requirements.txt
        fi
      displayName: 'Prepare requirements files for Home Assistant Core wheels'
- template: templates/azp-job-wheels.yaml@azure
  parameters:
    builderVersion: '$(versionWheels)'
    builderApk: 'build-base;cmake;git;linux-headers;libexecinfo-dev;bluez-dev;libffi-dev;openssl-dev;glib-dev;eudev-dev;libxml2-dev;libxslt-dev;libpng-dev;libjpeg-turbo-dev;tiff-dev;autoconf;automake;cups-dev;gmp-dev;mpfr-dev;mpc1-dev;ffmpeg-dev;gammu-dev'
    builderPip: 'Cython;numpy;scikit-build'
    builderEnvFile: true
    skipBinary: 'aiohttp'
    wheelsRequirement: 'requirements_wheels.txt'
    wheelsRequirementDiff: 'requirements_diff.txt'
    wheelsConstraint: 'homeassistant/package_constraints.txt'
    jobName: 'Wheels_Integrations'
    preBuild:
    - script: |
        cp requirements_all.txt requirements_wheels.txt
        if [[ "$(Build.Reason)" =~ (Schedule|Manual) ]]; then
          touch requirements_diff.txt
        else
          curl -s -o requirements_diff.txt https://raw.githubusercontent.com/home-assistant/core/master/requirements_all.txt
        fi

        requirement_files="requirements_wheels.txt requirements_diff.txt"
        for requirement_file in ${requirement_files}; do
          sed -i "s|# pybluez|pybluez|g" ${requirement_file}
          sed -i "s|# bluepy|bluepy|g" ${requirement_file}
          sed -i "s|# beacontools|beacontools|g" ${requirement_file}
          sed -i "s|# RPi.GPIO|RPi.GPIO|g" ${requirement_file}
          sed -i "s|# raspihats|raspihats|g" ${requirement_file}
          sed -i "s|# rpi-rf|rpi-rf|g" ${requirement_file}
          sed -i "s|# blinkt|blinkt|g" ${requirement_file}
          sed -i "s|# fritzconnection|fritzconnection|g" ${requirement_file}
          sed -i "s|# pyuserinput|pyuserinput|g" ${requirement_file}
          sed -i "s|# evdev|evdev|g" ${requirement_file}
          sed -i "s|# smbus-cffi|smbus-cffi|g" ${requirement_file}
          sed -i "s|# i2csense|i2csense|g" ${requirement_file}
          sed -i "s|# python-eq3bt|python-eq3bt|g" ${requirement_file}
          sed -i "s|# pycups|pycups|g" ${requirement_file}
          sed -i "s|# homekit|homekit|g" ${requirement_file}
          sed -i "s|# decora_wifi|decora_wifi|g" ${requirement_file}
          sed -i "s|# decora|decora|g" ${requirement_file}
          sed -i "s|# avion|avion|g" ${requirement_file}
          sed -i "s|# PySwitchbot|PySwitchbot|g" ${requirement_file}
          sed -i "s|# pySwitchmate|pySwitchmate|g" ${requirement_file}
          sed -i "s|# face_recognition|face_recognition|g" ${requirement_file}
          sed -i "s|# py_noaa|py_noaa|g" ${requirement_file}
          sed -i "s|# bme680|bme680|g" ${requirement_file}
          sed -i "s|# python-gammu|python-gammu|g" ${requirement_file}
        done

        # Write env for build settings
        (
          echo "GRPC_BUILD_WITH_BORING_SSL_ASM="
          echo "GRPC_PYTHON_BUILD_SYSTEM_OPENSSL=1"
        ) > .env_file
      displayName: 'Prepare requirements files for Home Assistant wheels'
