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