-
Notifications
You must be signed in to change notification settings - Fork 82
/
index-to-md.py
48 lines (42 loc) · 1.61 KB
/
index-to-md.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import argparse
import json
from tabulate import tabulate
from dateutil.parser import isoparse
def index_to_markdown(index):
"""
convert the index (dict) to a markdown string and return the markdown string
"""
lines = ["<!-- begin index generated by util/index-to-md.py -->"]
lines.append(f"## {index['name']}")
lines.append(f"\n{index['description']}\n")
lines.append(f"### {index['name']} Collections\n")
for collection in index['collections']:
lines.append(f"#### {collection['name']}")
lines.append(f"\n{collection['description']}\n")
format_versions = list(map(lambda v: [
f"[{collection['name']} v{v['version']}]({v['url']})",
isoparse(v['modified']).strftime("%d %B %Y")
], collection["versions"]))
lines.append(tabulate(format_versions, headers=['version', 'released'], tablefmt="github"))
lines.append("")
lines.append("<!-- end index generated by util/index-to-md.py -->")
return "\n".join(lines)
if __name__ == "__main__":
parser = argparse.ArgumentParser(
description="Print a markdown string to std-out representing a collection index"
)
parser.add_argument("-index",
type=str,
default="index.json",
help="the collection index file to convert to markdown"
)
parser.add_argument("-output",
type=str,
default="index.md",
help="markdown output file"
)
args = parser.parse_args()
with open(args.index, "r") as f:
index = json.load(f)
with open(args.output, "w") as f:
f.write(index_to_markdown(index))