#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ CodeQL for Python. """ import os import subprocess import tempfile import uuid # Configuration codeql_path = 'codeql' search_path = None library_path = None # Temporaries temp_path = None def temporary_root(): global temp_path if temp_path is None: temp_path = tempfile.TemporaryDirectory(prefix="codeql-python_") return temp_path.name def temporary_path(prefix, suffix): name = '' if prefix: name += prefix name += uuid.uuid4().hex if suffix: name += suffix return os.path.join(temporary_root(), name) def temporary_dir(create=True, prefix=None, suffix=None): path = temporary_path(prefix, suffix) if create: os.mkdir(path) return path def temporary_file(create=True, prefix=None, suffix=None): path = temporary_path(prefix, suffix) if create: open(path, 'a').close() return path # Environment def set_search_path(path): global search_path if type(path) == list: separator = ';' if os.name == 'nt' else ':' path = separator.join(path) search_path = path def run(args): command = [codeql_path] + list(map(str, args)) return subprocess.run(command, stdout=subprocess.DEVNULL)