#  ============LICENSE_START===============================================
#  Copyright (C) 2020-2023 Nordix Foundation. All rights reserved.
#  Copyright (C) 2024 OpenInfra Foundation Europe. 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
# Required

version: 2
build:
  os: "ubuntu-20.04"
  tools:
    python: "3.8"
  jobs:
    post_build:
      - mkdir -p ${READTHEDOCS_OUTPUT}html/openapi
      - cp -v docs/offeredapis/openapitoolgen/offeredapis/pms-api/* ${READTHEDOCS_OUTPUT}html/openapi

python:
  install:
  - requirements: docs/requirements-docs.txt

sphinx:
  configuration: docs/conf.py
