mirror of https://github.com/explosion/spaCy.git
Add comment markers to only replace auto-generated docs
This commit is contained in:
parent
f10989e8c4
commit
1c958a76c1
|
@ -19,6 +19,10 @@ inputs have changed."""
|
||||||
INTRO_ASSETS = f"""The following assets are defined by the project. They can
|
INTRO_ASSETS = f"""The following assets are defined by the project. They can
|
||||||
be fetched by running [`spacy project assets`]({DOCS_URL}/api/cli#project-assets)
|
be fetched by running [`spacy project assets`]({DOCS_URL}/api/cli#project-assets)
|
||||||
in the project directory."""
|
in the project directory."""
|
||||||
|
# These markers are added to the Markdown and can be used to update the file in
|
||||||
|
# place if it already exists. Only the auto-generated part will be replaced.
|
||||||
|
MARKER_START = "<!-- AUTO-GENERATED DOCS START (do not remove) -->"
|
||||||
|
MARKER_END = "<!-- AUTO-GENERATED DOCS END (do not remove) -->"
|
||||||
|
|
||||||
|
|
||||||
@project_cli.command("document")
|
@project_cli.command("document")
|
||||||
|
@ -29,7 +33,12 @@ def project_document_cli(
|
||||||
no_emoji: bool = Opt(False, "--no-emoji", "-NE", help="Don't use emoji")
|
no_emoji: bool = Opt(False, "--no-emoji", "-NE", help="Don't use emoji")
|
||||||
# fmt: on
|
# fmt: on
|
||||||
):
|
):
|
||||||
"""Auto-generate a README.md for a project."""
|
"""
|
||||||
|
Auto-generate a README.md for a project. If the content is saved to a file,
|
||||||
|
hidden markers are added so you can add custom content before or after the
|
||||||
|
auto-generated section and only the auto-generated docs will be replaced
|
||||||
|
when you re-run the command.
|
||||||
|
"""
|
||||||
project_document(project_dir, output_file, no_emoji=no_emoji)
|
project_document(project_dir, output_file, no_emoji=no_emoji)
|
||||||
|
|
||||||
|
|
||||||
|
@ -39,6 +48,8 @@ def project_document(
|
||||||
is_stdout = str(output_file) == "-"
|
is_stdout = str(output_file) == "-"
|
||||||
config = load_project_config(project_dir)
|
config = load_project_config(project_dir)
|
||||||
md = MarkdownRenderer(no_emoji=no_emoji)
|
md = MarkdownRenderer(no_emoji=no_emoji)
|
||||||
|
if not is_stdout:
|
||||||
|
md.add(MARKER_START)
|
||||||
title = config.get("title")
|
title = config.get("title")
|
||||||
description = config.get("description")
|
description = config.get("description")
|
||||||
md.add(md.title(1, f"spaCy Project{f': {title}' if title else ''}", "🪐"))
|
md.add(md.title(1, f"spaCy Project{f': {title}' if title else ''}", "🪐"))
|
||||||
|
@ -70,12 +81,25 @@ def project_document(
|
||||||
md.add(md.title(3, "Assets", "🗂"))
|
md.add(md.title(3, "Assets", "🗂"))
|
||||||
md.add(INTRO_ASSETS)
|
md.add(INTRO_ASSETS)
|
||||||
md.add(md.table(data, ["File", "Source", "Description"]))
|
md.add(md.table(data, ["File", "Source", "Description"]))
|
||||||
|
if not is_stdout:
|
||||||
|
md.add(MARKER_END)
|
||||||
# Output result
|
# Output result
|
||||||
if is_stdout:
|
if is_stdout:
|
||||||
print(md.text)
|
print(md.text)
|
||||||
else:
|
else:
|
||||||
|
content = md.text
|
||||||
|
if output_file.exists():
|
||||||
|
with output_file.open("r", encoding="utf8") as f:
|
||||||
|
existing = f.read()
|
||||||
|
if MARKER_START in existing and MARKER_END in existing:
|
||||||
|
msg.info("Found existing file: only replacing auto-generated docs")
|
||||||
|
before = existing.split(MARKER_START)[0]
|
||||||
|
after = existing.split(MARKER_END)[1]
|
||||||
|
content = f"{before}{content}{after}"
|
||||||
|
else:
|
||||||
|
msg.info("Replacing existing file")
|
||||||
with output_file.open("w") as f:
|
with output_file.open("w") as f:
|
||||||
f.write(md.text)
|
f.write(content)
|
||||||
msg.good("Saved project documentation", output_file)
|
msg.good("Saved project documentation", output_file)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue