#  ============LICENSE_START===============================================
#  Copyright (C) 2020-2023 Nordix Foundation. All rights reserved.
#  ========================================================================
#  Licensed under the Apache License, Version 2.0 (the "License");
#  you may not use this file except in compliance with the License.
#  You may obtain a copy of the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.
#  ============LICENSE_END=================================================
#

---
# .readthedocs.yml
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details

version: 2

formats:
  - htmlzip

build:
  os: ubuntu-22.04
  tools:
    python: "3.7"
  jobs:
    pre_build:
      - mkdir --parents _readthedocs/html/
      - mkdir --parents _readthedocs/tmp/doctrees
      - sphinx-build -W -b html --keep-going -n -d
        _readthedocs/tmp/doctrees  ./docs/ _readthedocs/html/
      - sphinx-build -W -b html --keep-going -n -d
        _readthedocs/tmp/doctrees/datafilecollector  ./datafilecollector/docs/
        _readthedocs/html/datafilecollector
      - sphinx-build -W -b html --keep-going -n -d
        _readthedocs/tmp/doctrees/influxlogger  ./influxlogger/docs/
        _readthedocs/html/influxlogger
      - sphinx-build -W -b html --keep-going -n -d
        _readthedocs/tmp/doctrees/pmproducer  ./pmproducer/docs/
        _readthedocs/html/pmproducer
      - sphinx-build -W -b html --keep-going -n -d
        _readthedocs/tmp/doctrees/pm-file-converter  ./pm-file-converter/docs/
        _readthedocs/html/pm-file-converter

python:
  install:
    - requirements: docs/requirements-docs.txt
    - requirements: datafilecollector/docs/requirements-docs.txt
    - requirements: influxlogger/docs/requirements-docs.txt
    - requirements: pmproducer/docs/requirements-docs.txt
    - requirements: pm-file-converter/docs/requirements-docs.txt

sphinx:
  configuration: docs/conf.py
