89 lines
2.1 KiB
Python
89 lines
2.1 KiB
Python
import os
|
|
import sys
|
|
import sysconfig
|
|
|
|
|
|
# TODO: CAMPid 0970432108721340872130742130870874321
|
|
def import_it(*segments):
|
|
import importlib
|
|
import pkg_resources
|
|
|
|
major = int(pkg_resources.get_distribution(__name__).version.partition(".")[0])
|
|
|
|
m = {
|
|
"pyqt_tools": "pyqt{major}_tools".format(major=major),
|
|
"pyqt_plugins": "pyqt{major}_plugins".format(major=major),
|
|
"qt_tools": "qt{major}_tools".format(major=major),
|
|
"qt_applications": "qt{major}_applications".format(major=major),
|
|
}
|
|
|
|
majored = [m[segments[0]], *segments[1:]]
|
|
return importlib.import_module(".".join(majored))
|
|
|
|
|
|
qt_applications = import_it("qt_applications")
|
|
|
|
|
|
fspath = getattr(os, 'fspath', str)
|
|
|
|
|
|
from ._version import get_versions
|
|
__version__ = get_versions()['version']
|
|
del get_versions
|
|
|
|
|
|
def bin_path():
|
|
return qt_applications._bin
|
|
|
|
|
|
def application_names():
|
|
return qt_applications._application_names()
|
|
|
|
|
|
def application_path(name):
|
|
return qt_applications._application_path(name)
|
|
|
|
|
|
def _add_to_env_var_path_list(environment, name, before, after):
|
|
return {
|
|
name: os.pathsep.join((
|
|
*before,
|
|
environment.get(name, ''),
|
|
*after
|
|
))
|
|
}
|
|
|
|
|
|
def create_environment(reference=None):
|
|
if reference is None:
|
|
reference = os.environ
|
|
|
|
environment = dict(reference)
|
|
|
|
if sys.platform in ['linux', 'darwin']:
|
|
environment.update(_add_to_env_var_path_list(
|
|
environment=environment,
|
|
name='LD_LIBRARY_PATH',
|
|
before=[''],
|
|
after=[sysconfig.get_config_var('LIBDIR')],
|
|
))
|
|
if sys.platform == 'win32':
|
|
environment.update(_add_to_env_var_path_list(
|
|
environment=environment,
|
|
name='PATH',
|
|
before=[''],
|
|
after=[sysconfig.get_path('scripts')],
|
|
))
|
|
|
|
return environment
|
|
|
|
|
|
def create_command_elements(name, sys_platform=sys.platform):
|
|
path = application_path(name)
|
|
|
|
if sys_platform == 'darwin' and path.suffix == '.app':
|
|
inner = path.joinpath('Contents', 'MacOS', path.stem)
|
|
return [fspath(inner)]
|
|
|
|
return [fspath(path)]
|