1616
1717package_data = defaultdict (set )
1818
19- # gather data
20- for f in glob .glob (f"{ sys .argv [1 ]} /**/results/results.bqrs" , recursive = True ):
21- print (f"Processing { f } " )
22-
23- json_data = subprocess .check_output (["codeql" , "bqrs" , "decode" , "--format=json" , f ])
24- select = json .loads (json_data )
25-
26- for t in select ["#select" ]["tuples" ]:
27- pkg = t [1 ]
28- package_data [pkg ].add (tuple (t ))
29-
3019# process data
3120
3221def wrap_in_template (data ):
@@ -42,7 +31,7 @@ def wrap_in_template(data):
4231 ]
4332 }
4433
45- def parse_from_file (path ) :
34+ def parse_from_file (path : Path ) -> set :
4635 if not path .exists ():
4736 return set ()
4837
@@ -55,13 +44,38 @@ def parse_from_file(path):
5544
5645 return set (tuple (x ) for x in raw_data ["extensions" ][0 ]["data" ])
5746
47+
48+ def gather_from_mrva ():
49+ for f in glob .glob (f"{ sys .argv [1 ]} /**/results/results.bqrs" , recursive = True ):
50+ print (f"Processing { f } " )
51+
52+ json_data = subprocess .check_output (["codeql" , "bqrs" , "decode" , "--format=json" , f ])
53+ select = json .loads (json_data )
54+
55+ for t in select ["#select" ]["tuples" ]:
56+ pkg = t [1 ]
57+ package_data [pkg ].add (tuple (t ))
58+
59+ def gather_from_existing ():
60+ for f in glob .glob (f"{ mad_path } /auto-*.model.yml" , recursive = True ):
61+ print (f"Processing { f } " )
62+
63+ all_data = parse_from_file (Path (f ))
64+ pkg = f .split ("/" )[- 1 ].split ("." )[0 ][5 :]
65+ package_data [pkg ].update (all_data )
66+
67+ gather_from_mrva ()
68+
5869for pkg in package_data :
5970 pkg_path = mad_path / f"auto-{ pkg } .model.yml"
6071
72+ print (f"Writing { pkg_path } " )
73+
6174 all_data = parse_from_file (pkg_path )
6275 all_data .update (package_data [pkg ])
6376
6477 as_lists = [list (t ) for t in all_data ]
78+ as_lists .sort ()
6579
6680 data_for_yaml = wrap_in_template (as_lists )
6781
0 commit comments