# Copyright 2023 The Bazel Authors. 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.

load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
load("@bazel_skylib//rules:common_settings.bzl", "bool_flag")
load("//sphinxdocs/private:sphinx.bzl", "repeated_string_list_flag")

package(
    default_visibility = ["//:__subpackages__"],
)

# Additional -D values to add to every Sphinx build.
# This is usually used to override the version when building
repeated_string_list_flag(
    name = "extra_defines",
    build_setting_default = [],
)

repeated_string_list_flag(
    name = "extra_env",
    build_setting_default = [],
)

# Whether to add the `-q` arg to Sphinx invocations, which determines if
# stdout has any output or not (logging INFO messages and progress messages).
# If true, add `-q`. If false, don't add `-q`. This is mostly useful for
# debugging invocations or developing extensions.
bool_flag(
    name = "quiet",
    build_setting_default = True,
)

bzl_library(
    name = "sphinx_bzl",
    srcs = ["sphinx.bzl"],
    deps = ["//sphinxdocs/private:sphinx_bzl"],
)

bzl_library(
    name = "sphinx_stardoc_bzl",
    srcs = ["sphinx_stardoc.bzl"],
    deps = ["//sphinxdocs/private:sphinx_stardoc_bzl"],
)

bzl_library(
    name = "readthedocs_bzl",
    srcs = ["readthedocs.bzl"],
    deps = ["//sphinxdocs/private:readthedocs_bzl"],
)
