1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
|
#!/usr/bin/env python
# --------------------------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.
# --------------------------------------------------------------------------------------------
# This script is used to execute pylint within a tox environment. Depending on which package is being executed against,
# a failure may be suppressed.
from subprocess import check_call, CalledProcessError
import argparse
import os
import logging
import sys
from prep_sphinx_env import should_build_docs
from pkg_resources import Requirement
import ast
import os
import textwrap
import io
import shutil
from ci_tools.parsing import ParsedSetup
logging.getLogger().setLevel(logging.INFO)
root_dir = os.path.abspath(os.path.join(os.path.abspath(__file__), "..", "..", ".."))
ci_doc_dir = os.path.join(root_dir, '_docs')
sphinx_conf_dir = os.path.join(root_dir, 'doc/sphinx')
def in_ci():
return os.getenv('TF_BUILD', False)
def move_output_and_zip(target_dir, package_dir, package_name):
if not os.path.exists(ci_doc_dir):
os.mkdir(ci_doc_dir)
individual_zip_location = os.path.join(ci_doc_dir, package_name, package_name)
shutil.make_archive(individual_zip_location, 'zip', target_dir)
def sphinx_build(target_dir, output_dir):
command_array = [
"sphinx-build",
"-b",
"html",
"-A",
"include_index_link=True",
"-c",
sphinx_conf_dir,
target_dir,
output_dir
]
try:
logging.info("Sphinx build command: {}".format(command_array))
check_call(
command_array
)
except CalledProcessError as e:
logging.error(
"sphinx-apidoc failed for path {} exited with error {}".format(
args.working_directory, e.returncode
)
)
exit(1)
if __name__ == "__main__":
parser = argparse.ArgumentParser(
description="Run sphinx-build against target folder. Zips and moves resulting files to a root location as well."
)
parser.add_argument(
"-w",
"--workingdir",
dest="working_directory",
help="The unzipped package directory on disk. Usually {distdir}/unzipped/",
required=True,
)
parser.add_argument(
"-o",
"--outputdir",
dest="output_directory",
help="The output location for the generated site. Usually {distdir}/site",
required=True,
)
parser.add_argument(
"-r",
"--root",
dest="package_root",
help="",
required=True,
)
parser.add_argument(
"--inci",
dest="in_ci",
action="store_true",
default=False
)
args = parser.parse_args()
output_dir = os.path.abspath(args.output_directory)
target_dir = os.path.abspath(args.working_directory)
package_dir = os.path.abspath(args.package_root)
pkg_details = ParsedSetup.from_path(package_dir)
if should_build_docs(pkg_details.name):
sphinx_build(target_dir, output_dir)
if in_ci() or args.in_ci:
move_output_and_zip(output_dir, package_dir, pkg_details.name)
else:
logging.info("Skipping sphinx build for {}".format(pkg_details.name))
|