You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by ka...@apache.org on 2021/01/02 01:17:24 UTC
[airflow] branch master updated: Add verbose flag to
./build_docs.py (#13403)
This is an automated email from the ASF dual-hosted git repository.
kamilbregula pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/master by this push:
new c674f81 Add verbose flag to ./build_docs.py (#13403)
c674f81 is described below
commit c674f81cb7ff3453dd2ce693dc047688581c4edd
Author: Kamil BreguĊa <mi...@users.noreply.github.com>
AuthorDate: Sat Jan 2 02:17:14 2021 +0100
Add verbose flag to ./build_docs.py (#13403)
---
docs/build_docs.py | 18 ++++++++++++++++--
docs/exts/docs_build/docs_builder.py | 26 ++++++++++++++++++++------
2 files changed, 36 insertions(+), 8 deletions(-)
diff --git a/docs/build_docs.py b/docs/build_docs.py
index de35858..120a90e 100755
--- a/docs/build_docs.py
+++ b/docs/build_docs.py
@@ -115,19 +115,31 @@ def _get_parser():
action='store_true',
help='Builds documentation for official release i.e. all links point to stable version',
)
+ parser.add_argument(
+ "-v",
+ "--verbose",
+ dest='verbose',
+ action='store_true',
+ help=(
+ 'Increases the verbosity of the script i.e. always displays a full log of '
+ 'the build process, not just when it encounters errors'
+ ),
+ )
return parser
def build_docs_for_packages(
- current_packages: List[str], docs_only: bool, spellcheck_only: bool, for_production: bool
+ current_packages: List[str], docs_only: bool, spellcheck_only: bool, for_production: bool, verbose: bool
) -> Tuple[Dict[str, List[DocBuildError]], Dict[str, List[SpellingError]]]:
"""Builds documentation for single package and returns errors"""
all_build_errors: Dict[str, List[DocBuildError]] = defaultdict(list)
all_spelling_errors: Dict[str, List[SpellingError]] = defaultdict(list)
for package_no, package_name in enumerate(current_packages, start=1):
print("#" * 20, f"[{package_no}/{len(current_packages)}] {package_name}", "#" * 20)
- builder = AirflowDocsBuilder(package_name=package_name, for_production=for_production)
+ builder = AirflowDocsBuilder(
+ package_name=package_name, for_production=for_production, verbose=verbose
+ )
builder.clean_files()
if not docs_only:
with with_group(f"Check spelling: {package_name}"):
@@ -215,6 +227,7 @@ def main():
docs_only=docs_only,
spellcheck_only=spellcheck_only,
for_production=for_production,
+ verbose=args.verbose,
)
if package_build_errors:
all_build_errors.update(package_build_errors)
@@ -237,6 +250,7 @@ def main():
docs_only=docs_only,
spellcheck_only=spellcheck_only,
for_production=for_production,
+ verbose=args.verbose,
)
if package_build_errors:
all_build_errors.update(package_build_errors)
diff --git a/docs/exts/docs_build/docs_builder.py b/docs/exts/docs_build/docs_builder.py
index 29b9136..55db419 100644
--- a/docs/exts/docs_build/docs_builder.py
+++ b/docs/exts/docs_build/docs_builder.py
@@ -43,9 +43,10 @@ PROCESS_TIMEOUT = 4 * 60
class AirflowDocsBuilder:
"""Documentation builder for Airflow."""
- def __init__(self, package_name: str, for_production: bool):
+ def __init__(self, package_name: str, for_production: bool, verbose: bool):
self.package_name = package_name
self.for_production = for_production
+ self.verbose = verbose
@property
def _doctree_dir(self) -> str:
@@ -118,13 +119,19 @@ class AirflowDocsBuilder:
tmp_dir,
]
print("Executing cmd: ", " ".join([shlex.quote(c) for c in build_cmd]))
- print("The output is hidden until an error occurs.")
+ if not self.verbose:
+ print("The output is hidden until an error occurs.")
env = os.environ.copy()
env['AIRFLOW_PACKAGE_NAME'] = self.package_name
if self.for_production:
env['AIRFLOW_FOR_PRODUCTION'] = 'true'
completed_proc = run( # pylint: disable=subprocess-run-check
- build_cmd, cwd=self._src_dir, env=env, stdout=output, stderr=output, timeout=PROCESS_TIMEOUT
+ build_cmd,
+ cwd=self._src_dir,
+ env=env,
+ stdout=output if not self.verbose else None,
+ stderr=output if not self.verbose else None,
+ timeout=PROCESS_TIMEOUT,
)
if completed_proc.returncode != 0:
output.seek(0)
@@ -170,7 +177,8 @@ class AirflowDocsBuilder:
self._build_dir, # path to output directory
]
print("Executing cmd: ", " ".join([shlex.quote(c) for c in build_cmd]))
- print("The output is hidden until an error occurs.")
+ if not self.verbose:
+ print("The output is hidden until an error occurs.")
env = os.environ.copy()
env['AIRFLOW_PACKAGE_NAME'] = self.package_name
@@ -178,10 +186,16 @@ class AirflowDocsBuilder:
env['AIRFLOW_FOR_PRODUCTION'] = 'true'
completed_proc = run( # pylint: disable=subprocess-run-check
- build_cmd, cwd=self._src_dir, env=env, stdout=output, stderr=output, timeout=PROCESS_TIMEOUT
+ build_cmd,
+ cwd=self._src_dir,
+ env=env,
+ stdout=output if not self.verbose else None,
+ stderr=output if not self.verbose else None,
+ timeout=PROCESS_TIMEOUT,
)
if completed_proc.returncode != 0:
- print(completed_proc.stdout.decode())
+ output.seek(0)
+ print(output.read().decode())
build_errors.append(
DocBuildError(
file_path=None,