mirror of https://github.com/kivy/pyjnius.git
80 lines
2.1 KiB
Python
80 lines
2.1 KiB
Python
__all__ = ('set_options', 'add_options', 'get_options',
|
|
'set_classpath', 'add_classpath', 'get_classpath',
|
|
'expand_classpath')
|
|
|
|
import platform
|
|
if platform.system() == 'Windows':
|
|
split_char = ';'
|
|
else:
|
|
split_char = ':'
|
|
|
|
vm_running = False
|
|
options = []
|
|
classpath = None
|
|
|
|
def set_options(*opts):
|
|
"Sets the list of options to the JVM. Removes any previously set options."
|
|
if vm_running:
|
|
raise ValueError("VM is already running, can't set options")
|
|
globals()['options'] = opts
|
|
|
|
def add_options(*opts):
|
|
"Appends options to the list of VM options."
|
|
if vm_running:
|
|
raise ValueError("VM is already running, can't set options")
|
|
global options
|
|
options.extend(opts)
|
|
|
|
def get_options():
|
|
"Retrieves the current list of VM options."
|
|
global options
|
|
return list(options)
|
|
|
|
|
|
def set_classpath(*path):
|
|
"""
|
|
Sets the classpath for the JVM to use. Replaces any existing classpath, overriding the CLASSPATH environment variable.
|
|
"""
|
|
if vm_running:
|
|
raise ValueError("VM is already running, can't set classpath")
|
|
global classpath
|
|
classpath = path
|
|
|
|
def add_classpath(*path):
|
|
"""
|
|
Appends items to the classpath for the JVM to use.
|
|
Replaces any existing classpath, overriding the CLASSPATH environment variable.
|
|
"""
|
|
if vm_running:
|
|
raise ValueError("VM is already running, can't set classpath")
|
|
global classpath
|
|
if classpath is None:
|
|
classpath = list(path)
|
|
else:
|
|
classpath.extend(path)
|
|
|
|
def get_classpath():
|
|
"Retrieves the classpath the JVM will use."
|
|
from os import environ
|
|
from os.path import realpath
|
|
global classpath
|
|
|
|
if classpath is not None:
|
|
return list(classpath)
|
|
|
|
if 'CLASSPATH' in environ:
|
|
return environ['CLASSPATH'].split(split_char)
|
|
|
|
return [realpath('.')]
|
|
|
|
def expand_classpath():
|
|
from glob import glob
|
|
paths = []
|
|
# deal with wildcards
|
|
for path in get_classpath():
|
|
if not path.endswith('*'):
|
|
paths.append(path)
|
|
else:
|
|
paths.extend(glob(path + '.[Jj][Aa][Rr]'))
|
|
return split_char.join(paths)
|