|
@@ -6,6 +6,7 @@ import typing
|
|
|
import yaml
|
|
|
|
|
|
import yamily
|
|
|
+import yamily._graphviz
|
|
|
import yamily.yaml
|
|
|
|
|
|
|
|
@@ -38,3 +39,20 @@ def _list() -> None:
|
|
|
default_flow_style=False,
|
|
|
allow_unicode=True,
|
|
|
)
|
|
|
+
|
|
|
+
|
|
|
+def _dot() -> None:
|
|
|
+ argparser = argparse.ArgumentParser(
|
|
|
+ description="Create family tree in DOT (graphviz) format. "
|
|
|
+ "Recursively looks for *.yml files containing family members in yamily format."
|
|
|
+ )
|
|
|
+ argparser.add_argument(
|
|
|
+ "paths", nargs="+", metavar="path", help="path to yamily .yml file or folder"
|
|
|
+ )
|
|
|
+ args = argparser.parse_args()
|
|
|
+ collection = yamily.PersonCollection()
|
|
|
+ for path in args.paths:
|
|
|
+ for person in _read(pathlib.Path(path)):
|
|
|
+ collection.add_person(person)
|
|
|
+ graph = yamily._graphviz.digraph(collection)
|
|
|
+ print(graph.source)
|