Skip to content

Commit fc4b982

Browse files
committed
Java: Add script for converting extensions.
1 parent 9f7103c commit fc4b982

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
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

Comments
 (0)