diff options
Diffstat (limited to 'release/update_manpages.py')
-rw-r--r-- | release/update_manpages.py | 35 |
1 files changed, 31 insertions, 4 deletions
diff --git a/release/update_manpages.py b/release/update_manpages.py index 489de357..9ada83ff 100644 --- a/release/update_manpages.py +++ b/release/update_manpages.py | |||
@@ -27,9 +27,11 @@ import shutil | |||
27 | import subprocess | 27 | import subprocess |
28 | import sys | 28 | import sys |
29 | import tempfile | 29 | import tempfile |
30 | from typing import List | ||
30 | 31 | ||
31 | 32 | ||
32 | TOPDIR = Path(__file__).resolve().parent.parent | 33 | THIS_FILE = Path(__file__).resolve() |
34 | TOPDIR = THIS_FILE.parent.parent | ||
33 | MANDIR = TOPDIR.joinpath("man") | 35 | MANDIR = TOPDIR.joinpath("man") |
34 | 36 | ||
35 | # Load repo local modules. | 37 | # Load repo local modules. |
@@ -42,9 +44,23 @@ def worker(cmd, **kwargs): | |||
42 | subprocess.run(cmd, **kwargs) | 44 | subprocess.run(cmd, **kwargs) |
43 | 45 | ||
44 | 46 | ||
45 | def main(argv): | 47 | def get_parser() -> argparse.ArgumentParser: |
48 | """Get argument parser.""" | ||
46 | parser = argparse.ArgumentParser(description=__doc__) | 49 | parser = argparse.ArgumentParser(description=__doc__) |
47 | parser.parse_args(argv) | 50 | parser.add_argument( |
51 | "-n", | ||
52 | "--check", | ||
53 | "--dry-run", | ||
54 | action="store_const", | ||
55 | const=True, | ||
56 | help="Check if changes are necessary; don't actually change files", | ||
57 | ) | ||
58 | return parser | ||
59 | |||
60 | |||
61 | def main(argv: List[str]) -> int: | ||
62 | parser = get_parser() | ||
63 | opts = parser.parse_args(argv) | ||
48 | 64 | ||
49 | if not shutil.which("help2man"): | 65 | if not shutil.which("help2man"): |
50 | sys.exit("Please install help2man to continue.") | 66 | sys.exit("Please install help2man to continue.") |
@@ -117,6 +133,7 @@ def main(argv): | |||
117 | functools.partial(worker, cwd=tempdir, check=True), cmdlist | 133 | functools.partial(worker, cwd=tempdir, check=True), cmdlist |
118 | ) | 134 | ) |
119 | 135 | ||
136 | ret = 0 | ||
120 | for tmp_path in MANDIR.glob("*.1.tmp"): | 137 | for tmp_path in MANDIR.glob("*.1.tmp"): |
121 | path = tmp_path.parent / tmp_path.stem | 138 | path = tmp_path.parent / tmp_path.stem |
122 | old_data = path.read_text() if path.exists() else "" | 139 | old_data = path.read_text() if path.exists() else "" |
@@ -133,7 +150,17 @@ def main(argv): | |||
133 | ) | 150 | ) |
134 | new_data = re.sub(r'^(\.TH REPO "1" ")([^"]+)', r"\1", data, flags=re.M) | 151 | new_data = re.sub(r'^(\.TH REPO "1" ")([^"]+)', r"\1", data, flags=re.M) |
135 | if old_data != new_data: | 152 | if old_data != new_data: |
136 | path.write_text(data) | 153 | if opts.check: |
154 | ret = 1 | ||
155 | print( | ||
156 | f"{THIS_FILE.name}: {path.name}: " | ||
157 | "man page needs regenerating", | ||
158 | file=sys.stderr, | ||
159 | ) | ||
160 | else: | ||
161 | path.write_text(data) | ||
162 | |||
163 | return ret | ||
137 | 164 | ||
138 | 165 | ||
139 | def replace_regex(data): | 166 | def replace_regex(data): |