Coverage for lode / cli.py: 0%

37 statements  

« 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""" 

7 

8import argparse 

9import sys 

10from pathlib import Path 

11 

12def cmd_serve(args): 

13 import uvicorn 

14 uvicorn.run("lode.api:app", host="0.0.0.0", port=args.port, reload=False) 

15 

16 

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 

21 

22 check_format_enabled(ReadAsFormat(args.read_as)) 

23 

24 source = args.url or args.file 

25 out_dir = Path(args.out) 

26 out_dir.mkdir(parents=True, exist_ok=True) 

27 

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}") 

37 

38 

39def main(): 

40 parser = argparse.ArgumentParser(prog="lode") 

41 sub = parser.add_subparsers(dest="cmd", required=True) 

42 

43 # --- serve --- 

44 p_serve = sub.add_parser("serve", help="Avvia il server FastAPI") 

45 p_serve.add_argument("--port", type=int, default=8000) 

46 

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") 

58 

59 args = parser.parse_args() 

60 {"serve": cmd_serve, "build": cmd_build}[args.cmd](args) 

61 

62 

63if __name__ == "__main__": 

64 main()