From 521655d51d68bad3068d4207caf7f9206c6c5daf Mon Sep 17 00:00:00 2001 From: Tomas Zigo <50632337+tmszi@users.noreply.github.com> Date: Fri, 9 Sep 2022 12:08:22 +0200 Subject: [PATCH] man: allow register all addons keywords in main Keywords Index (#2529) --- man/build_keywords.py | 59 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 52 insertions(+), 7 deletions(-) diff --git a/man/build_keywords.py b/man/build_keywords.py index 98926df9643..84fa88f5fcc 100644 --- a/man/build_keywords.py +++ b/man/build_keywords.py @@ -1,7 +1,22 @@ #!/usr/bin/env python3 -# generates keywords.html -# (c) 2013 by the GRASS Development Team, Luca Delucchi +""" +Generates keywords.html file for core and optionally for addons modules. + +Usage: + +Generate core modules keywords HTML page + +python man/build_keywords.py + +Generate core modules and optionally inject addons keywords HTML page + +python man/build_keywords.py + + +@author Luca Delucchi +@author Tomas Zigo - inject addons modules keywords +""" import os import sys @@ -22,18 +37,45 @@ ] path = sys.argv[1] +addons_path = None +if len(sys.argv) >= 3: + addons_path = sys.argv[2] + year = os.getenv("VERSION_DATE") keywords = {} -htmlfiles = glob.glob1(path, "*.html") +htmlfiles = glob.glob(os.path.join(path, "*.html")) +if addons_path: + addons_man_files = glob.glob(os.path.join(addons_path, "*.html")) + htmlfiles.extend(addons_man_files) char_list = {} -for fname in htmlfiles: - fil = open(os.path.join(path, fname)) + +def get_module_man_html_file_path(module): + """Get module manual HTML file path + + :param str module: module manual HTML file name e.g. v.surf.rst.html + + :return str module_path: core/addon module manual HTML file path + """ + if addons_path and module in ",".join(addons_man_files): + module_path = os.path.join(addons_path, module) + module_path = module_path.replace( + os.path.commonpath([path, module_path]), + ".", + ) + else: + module_path = os.path.join(path, module) + return module_path + + +for html_file in htmlfiles: + fname = os.path.basename(html_file) + with open(html_file) as f: + lines = f.readlines() # TODO maybe move to Python re (regex) - lines = fil.readlines() # remove empty lines lines = [x for x in lines if x != "\n"] try: @@ -95,7 +137,10 @@ key, ) for value in sorted(keywords[key]): - keyword_line += ' %s,' % (value, value.replace(".html", "")) + keyword_line += ( + f' ' + f'{value.replace(".html", "")},' + ) keyword_line = keyword_line.rstrip(",") keyword_line += "\n" keywordsfile.write(keyword_line)