# Copyright 2017 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.

###############################################################################
# To regenerate documentation, run the top-level update_docs.sh script.       #
###############################################################################

load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
load("@io_bazel_stardoc//stardoc:stardoc.bzl", "stardoc")

package(default_visibility = ["//visibility:public"])

licenses(["notice"])  # Apache 2.0

# We define these bzl_library targets here rather than in the //python package
# because they're only used for doc generation. This way, we avoid requiring
# our users to depend on Skylib.

# Requires Bazel 0.29 onward for public visibility of these .bzl files.
bzl_library(
    name = "bazel_python_tools",
    srcs = [
        "@bazel_tools//tools/python:private/defs.bzl",
        "@bazel_tools//tools/python:srcs_version.bzl",
        "@bazel_tools//tools/python:toolchain.bzl",
        "@bazel_tools//tools/python:utils.bzl",
    ],
)

bzl_library(
    name = "bazel_repo_tools",
    srcs = [
        "@bazel_tools//tools:bzl_srcs",
    ],
)

bzl_library(
    name = "defs",
    srcs = [
        "//python:defs.bzl",
        "//python:private/reexports.bzl",
    ],
    deps = [":bazel_python_tools"],
)

bzl_library(
    name = "pip_install_bzl",
    srcs = [
        "//python/pip_install:pip_repository.bzl",
        "//python/pip_install:repositories.bzl",
        "//python/pip_install:requirements.bzl",
    ],
    deps = [
        ":defs",
    ],
)

stardoc(
    name = "core-docs",
    out = "python.md",
    input = "//python:defs.bzl",
    deps = [":defs"],
)

# TODO: Consider merging documentation pages for whl and pip. This would
# require re-exporting their symbols from a common .bzl; see
# https://github.com/bazelbuild/skydoc/issues/208.

stardoc(
    name = "pip-docs",
    out = "pip.md",
    input = "//python:pip.bzl",
    deps = [
        ":bazel_repo_tools",
        ":pip_install_bzl",
        "//third_party/github.com/bazelbuild/bazel-skylib/lib:versions",
    ],
)

stardoc(
    name = "whl-docs",
    out = "whl.md",
    input = "//python:whl.bzl",
)

stardoc(
    name = "packaging-docs",
    out = "packaging.md",
    input = "//python:packaging.bzl",
)
