From eb5987e9dd40ce1e27c9c07e41d09571f1bd876e Mon Sep 17 00:00:00 2001 From: Steven Arcangeli Date: Fri, 25 Aug 2023 11:15:12 -0700 Subject: feat: first working version --- .github/generate.py | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100755 .github/generate.py (limited to '.github/generate.py') diff --git a/.github/generate.py b/.github/generate.py new file mode 100755 index 0000000..3f4fa27 --- /dev/null +++ b/.github/generate.py @@ -0,0 +1,91 @@ +import os +import os.path +import re +from typing import List + +from nvim_doc_tools import ( + Vimdoc, + VimdocSection, + generate_md_toc, + parse_functions, + read_nvim_json, + render_md_api, + render_vimdoc_api, + replace_section, +) + +HERE = os.path.dirname(__file__) +ROOT = os.path.abspath(os.path.join(HERE, os.path.pardir)) +README = os.path.join(ROOT, "README.md") +DOC = os.path.join(ROOT, "doc") +VIMDOC = os.path.join(DOC, "conform.txt") + + +def update_formatter_list(): + formatters = sorted( + [ + os.path.splitext(file)[0] + for file in os.listdir(os.path.join(ROOT, "lua", "conform", "formatters")) + ] + ) + formatter_lines = ["\n"] + for formatter in formatters: + meta = read_nvim_json(f'require("conform.formatters.{formatter}").meta') + formatter_lines.append( + f"- [{formatter}]({meta['url']}) - {meta['description']}\n" + ) + replace_section( + README, + r"^$", + r"^$", + formatter_lines, + ) + + +def add_md_link_path(path: str, lines: List[str]) -> List[str]: + ret = [] + for line in lines: + ret.append(re.sub(r"(\(#)", "(" + path + "#", line)) + return ret + + +def update_md_api(): + funcs = parse_functions(os.path.join(ROOT, "lua", "conform", "init.lua")) + lines = ["\n"] + render_md_api(funcs, 3)[:-1] # trim last newline + replace_section( + README, + r"^$", + r"^$", + lines, + ) + + +def update_readme_toc(): + toc = ["\n"] + generate_md_toc(README) + ["\n"] + replace_section( + README, + r"^$", + r"^$", + toc, + ) + + +def generate_vimdoc(): + doc = Vimdoc("conform.txt", "conform") + funcs = parse_functions(os.path.join(ROOT, "lua", "conform", "init.lua")) + doc.sections.extend( + [ + VimdocSection("API", "conform-api", render_vimdoc_api("conform", funcs)), + ] + ) + + with open(VIMDOC, "w", encoding="utf-8") as ofile: + ofile.writelines(doc.render()) + + +def main() -> None: + """Update the README""" + update_formatter_list() + update_md_api() + update_readme_toc() + generate_vimdoc() -- cgit v1.2.3-70-g09d2