#!/usr/bin/env python3
"""Build README for GitHub and crates.io.
This script uses Hurl doc to generate README suitable for GitHub and crates.io
The README are displayed on GitHub and crates.io. It's generated by concatenating
- home.md
- samples.md
- manual.md
- installation.md
Examples:
$ python3 bin/docs/build_readme.py github > README.md
$ python3 bin/docs/build_readme.py crates > packages/hurl/README.md
"""
import os
import re
import sys
from pathlib import Path
from markdown import MarkdownDoc, parse_markdown
def build_home_md(text: str) -> MarkdownDoc:
"""Returns the MarkDown representation of the Home"""
# We adapt the "Why Hurl" part to transform h2 tag back to markdown
def showcase_rep(m):
return f"
{m.group(1)}: {m.group(2).lower()}
"
home = re.sub(
r"""
(.+)
(.+)
""",
showcase_rep,
text,
)
return parse_markdown(text=home)
def build_sample_md(text: str) -> MarkdownDoc:
"""Returns the MarkDown representation of the sample"""
return parse_markdown(text=text)
def build_manual_md(text: str) -> MarkdownDoc:
return parse_markdown(text=text)
def build_installation_md(text: str) -> MarkdownDoc:
return parse_markdown(text=text)
def replace(text: str, dest: str) -> str:
# Do some replacements
# Replace canonical links to hurl.dev links:
text = re.sub(
r"/docs/(.*)\.md",
r"https://hurl.dev/docs/\1.html",
text,
)
# Change some text snippets for GitHub and crates.io
# - first param: pattern to look for in Markdown file
# - second param: pattern to replace in GitHub README
# - third param: pattern to replace in crates.io README
snippets = [
("blog.md", "https://hurl.dev/blog/", "https://hurl.dev/blog/"),
(
"""\