#  ============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.11"
  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
