1
+ # Tool to generate data extensions files based on the existing models.
2
+ # Usage:
3
+ # python3 ConvertExtensions.py
4
+ # (1) A folder named `java/ql/lib/ext` will be created, if it doesn't already exist.
5
+ # (2) The converted models will be written to `java/ql/lib/ext`. One file for each namespace.
6
+
7
+ import os
8
+ import subprocess
9
+ import sys
10
+ import tempfile
11
+
12
+ # Add Models as Data script directory to sys.path.
13
+ gitroot = subprocess .check_output (["git" , "rev-parse" , "--show-toplevel" ]).decode ("utf-8" ).strip ()
14
+ madpath = os .path .join (gitroot , "misc/scripts/models-as-data/" )
15
+ sys .path .append (madpath )
16
+
17
+ import helpers
18
+ import convert_extensions as extensions
19
+
20
+ print ('Running script to generate data extensions files from the existing MaD models.' )
21
+ print ('Making a dummy database.' )
22
+
23
+ # Configuration
24
+ language = "java"
25
+ workDir = tempfile .mkdtemp ()
26
+ projectDir = os .path .join (workDir , "project" )
27
+ emptyFile = os .path .join (workDir , "Empty.java" )
28
+ dbDir = os .path .join (workDir , "db" )
29
+
30
+ # Make dummy project
31
+ with open (emptyFile , "w" ) as f :
32
+ f .write ("class Empty {}" )
33
+ helpers .run_cmd (['codeql' , 'database' , 'create' , f'--language={ language } ' , '-c' , f'javac { emptyFile } ' , dbDir ], "Failed to create dummy database." )
34
+
35
+ print ('Converting data extensions for Java.' )
36
+ extensions .Converter (language , dbDir ).run ()
37
+
38
+ print ('Cleanup.' )
39
+ # Cleanup - delete database.
40
+ helpers .remove_dir (dbDir )
41
+ print ('Done.' )
0 commit comments