Coverage for lode / cli.py: 0%
37 statements
« prev ^ index » next coverage.py v7.13.0, created at 2026-10-05 16:02 +0000
« prev ^ index » next coverage.py v7.13.0, created at 2026-10-05 16:02 +0000
1# lode/cli.py
2"""
3lode serve [--port 8000]
4lode build --url <url> --read-as <owl|rdf|skos> [--out ./docs] [--lang en] [--imported] [--closure]
5lode build --file <path> --read-as <owl|rdf|skos> [--out ./docs] [--lang en] [--imported] [--closure]
6"""
8import argparse
9import sys
10from pathlib import Path
12def cmd_serve(args):
13 import uvicorn
14 uvicorn.run("lode.api:app", host="0.0.0.0", port=args.port, reload=False)
17def cmd_build(args):
18 from lode.reader import Reader
19 from lode.builder import build_html
20 from lode.helpers.formats import check_format_enabled, ReadAsFormat
22 check_format_enabled(ReadAsFormat(args.read_as))
24 source = args.url or args.file
25 out_dir = Path(args.out)
26 out_dir.mkdir(parents=True, exist_ok=True)
28 reader = Reader()
29 reader.load_instances(
30 source, args.read_as,
31 imported=args.imported or None,
32 closure=args.closure or None,
33 partial_import=args.partial_import or None,
34 )
35 build_html(reader.get_viewer(), out_dir, lang=args.lang, reader=reader)
36 print(f"Done -> {out_dir}")
39def main():
40 parser = argparse.ArgumentParser(prog="lode")
41 sub = parser.add_subparsers(dest="cmd", required=True)
43 # --- serve ---
44 p_serve = sub.add_parser("serve", help="Avvia il server FastAPI")
45 p_serve.add_argument("--port", type=int, default=8000)
47 # --- build ---
48 p_build = sub.add_parser("build", help="Genera HTML statici")
49 src = p_build.add_mutually_exclusive_group(required=True)
50 src.add_argument("--url")
51 src.add_argument("--file")
52 p_build.add_argument("--read-as", required=True, choices=["owl", "rdf", "skos"])
53 p_build.add_argument("--out", default="./lode_output")
54 p_build.add_argument("--lang", default="en")
55 p_build.add_argument("--imported", action="store_true")
56 p_build.add_argument("--closure", action="store_true")
57 p_build.add_argument("--partial-import", action="store_true")
59 args = parser.parse_args()
60 {"serve": cmd_serve, "build": cmd_build}[args.cmd](args)
63if __name__ == "__main__":
64 main()