1
0
mirror of https://github.com/pgbackrest/pgbackrest.git synced 2026-10-23 21:28:56 +03:00
Files
pgbackrest/doc/doc.py
David Steele 3f590f7012 Fix lines that exceed 132 characters.
Most of these are prose in a python docstring or comment wrapped a few characters wide, which black does not reflow, and macro continuation backslashes left stranded past the margin. The rest are long calls broken after the first parenthesis, section separator comments with too many dashes, and long expectation strings split along what they hold. A few long shell commands in the workflows are wrapped with continuations.

hrnTestResultDiff() had a continuation backslash left over from when it was a macro, which spliced the closing brace onto the line above it. It is removed.

The linter that enforces the limit follows, so this commit is only the reformatting and can be ignored by blame.
2026-08-07 12:35:14 +07:00

72 lines
2.7 KiB
Python
Executable File

#!/usr/bin/env python3
"""pgBackRest Documentation Builder.
Builds the documentation and renders it. The reference documents, the user guide, the release notes, and the manual page all come
from the same declarations the binary is generated from, so the documentation describes what the code does.
Exit status: 0 = success, greater = error."""
####################################################################################################################################
import os
import signal
import sys
# Do not cache bytecode. The tool runs from the source tree, where a __pycache__ would show up as an unexpected binary file in the
# linter and in the distribution. This must be set before the library modules are imported below.
sys.dont_write_bytecode = True
# Each tool keeps its library beside itself and may use the libraries below it in the hierarchy. Insert them first, lowest last, so
# the doc modules are found before anything else on the path.
for lib in ("build", "doc"):
sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), lib, "lib"))
from command.doc import cfg_load, cmd_doc # noqa: E402
from common.error import EXIT_ERROR, EXIT_TERM, ToolError, error_trace # noqa: E402
from common.log import * # noqa: E402
####################################################################################################################################
def main():
"""Build the documentation."""
# Die silently on SIGPIPE as C programs do, rather than raising when output is piped to a command that exits early
signal.signal(signal.SIGPIPE, signal.SIG_DFL)
path_repo = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# Load the configuration. Logging is not initialized until this succeeds so print any error directly.
try:
config = cfg_load(sys.argv[1:], path_repo)
except ToolError as error:
print(error)
return EXIT_ERROR
log_init(config.log_level, config.log_timestamp)
log(INFO, "build documentation")
try:
cmd_doc(config)
except KeyboardInterrupt:
# A ctrl-c is what was asked for, so report it the way the C reports a signal rather than as a stack trace
log(ERROR, "terminated on signal SIGINT")
return EXIT_TERM
except ToolError as error:
log(ERROR, error)
return error.status
except Exception as error:
# An unexpected exception is a bug here rather than a problem with the documentation, so show the stack trace
log(ERROR, error_trace(error, config.log_level >= DEBUG))
return EXIT_ERROR
log(INFO, "build documentation end: completed successfully")
return 0
if __name__ == "__main__":
sys.exit(main())