Atom/16852 (#6316)

* discover build folder, don't assume or require

Signed-off-by: Jonny Gallowy <gallowj@amazon.com>

* update config_utils, no cyclical imports

Signed-off-by: Jonny Gallowy <gallowj@amazon.com>

* improved docstrings and some code formatting

Signed-off-by: Jonny Gallowy <gallowj@amazon.com>

* updates to config.py

Signed-off-by: Jonny Gallowy <gallowj@amazon.com>

* updates to config_utils.py

Signed-off-by: Jonny Gallowy <gallowj@amazon.com>

* dccsi bootstrap changes

Signed-off-by: Jonny Gallowy <gallowj@amazon.com>

* fixed testing for bootstrap externally

Signed-off-by: Jonny Gallowy <gallowj@amazon.com>

* added note for installing substance automation toolkit for tool dev

Signed-off-by: Jonny Gallowy <gallowj@amazon.com>

* based on user feedback suppress global debug by default in IDE

Signed-off-by: Jonny Gallowy <gallowj@amazon.com>

* small adjustments

Signed-off-by: Jonny Gallowy <gallowj@amazon.com>
This commit is contained in:
Jonny Galloway
2021-12-15 10:25:23 -06:00
committed by GitHub
parent e2679aad57
commit cbba00d473
51 changed files with 1263 additions and 773 deletions
@@ -23,6 +23,7 @@ So we can make an update here once that is used elsewhere.
import os
import sys
import site
import time
from os.path import expanduser
import logging as _logging
# -------------------------------------------------------------------------
@@ -30,22 +31,23 @@ import logging as _logging
# -------------------------------------------------------------------------
# global scope
_MODULENAME = __name__
if _MODULENAME is '__main__':
_MODULENAME = 'azpy.constants'
_MODULENAME = 'azpy.constants'
start = time.process_time() # start tracking
os.environ['PYTHONINSPECT'] = 'True'
# for this module to perform standalone
# we need to set up basic access to the DCCsi
_MODULE_PATH = os.path.realpath(__file__) # To Do: what if frozen?
_DCCSIG_PATH = os.path.normpath(os.path.join(_MODULE_PATH, '../..'))
_DCCSIG_PATH = os.getenv('DCCSIG_PATH', _DCCSIG_PATH)
site.addsitedir(_DCCSIG_PATH)
_PATH_DCCSIG = os.path.normpath(os.path.join(_MODULE_PATH, '../..'))
_PATH_DCCSIG = os.getenv('PATH_DCCSIG', _PATH_DCCSIG)
site.addsitedir(_PATH_DCCSIG)
# now we have azpy api access
import azpy
from azpy.env_bool import env_bool
from azpy.config_utils import return_stub_dir
from azpy.config_utils import get_stub_check_path
# -------------------------------------------------------------------------
@@ -65,18 +67,23 @@ FRMT_LOG_SHRT = "[%(asctime)s][%(name)s][%(levelname)s] >> %(message)s"
# global debug stuff
_DCCSI_GDEBUG = env_bool(ENVAR_DCCSI_GDEBUG, False)
_DCCSI_DEV_MODE = env_bool(ENVAR_DCCSI_DEV_MODE, False)
_DCCSI_LOGLEVEL = int(env_bool(ENVAR_DCCSI_LOGLEVEL, int(20)))
# default loglevel to info unless set
_DCCSI_LOGLEVEL = int(env_bool(ENVAR_DCCSI_LOGLEVEL, _logging.INFO))
if _DCCSI_GDEBUG:
_DCCSI_LOGLEVEL = int(10)
# -------------------------------------------------------------------------
# override loglevel if runnign debug
_DCCSI_LOGLEVEL = _logging.DEBUG
# -------------------------------------------------------------------------
# set up module logging
for handler in _logging.root.handlers[:]:
_logging.root.removeHandler(handler)
#for handler in _logging.root.handlers[:]:
#_logging.root.removeHandler(handler)
# configure basic logger
# note: not using a common logger to reduce cyclical imports
_logging.basicConfig(level=_DCCSI_LOGLEVEL,
format=FRMT_LOG_LONG,
datefmt='%m-%d %H:%M')
_LOGGER = _logging.getLogger(_MODULENAME)
_logging.basicConfig(format=FRMT_LOG_LONG, level=_DCCSI_LOGLEVEL)
_LOGGER.debug('Initializing: {0}.'.format({_MODULENAME}))
# -------------------------------------------------------------------------
@@ -107,6 +114,7 @@ TAG_DCCSI_CONFIG = str('dccsiconfiguration.setreg')
# filesystem markers, stub file names.
STUB_O3DE_DEV = str('engine.json')
STUB_O3DE_BUILD = str('CMakeCache.txt')
STUB_O3DE_ROOT_DCCSI = str('dccsi_stub')
STUB_O3DE_DCCSI_AZPY = str('dccsi_azpy_stub')
STUB_O3DE_DCCSI_TOOLS = str('dccsi_tools_stub')
@@ -147,27 +155,27 @@ PATH_PROGRAMFILES_X64 = str(os.environ['PROGRAMFILES'])
# base env var key as str
ENVAR_COMPANY = str('COMPANY')
ENVAR_O3DE_PROJECT = str('O3DE_PROJECT')
ENVAR_O3DE_PROJECT_PATH = str('O3DE_PROJECT_PATH')
ENVAR_O3DE_PROJECT = str('O3DE_PROJECT') # project name
ENVAR_PATH_O3DE_PROJECT = str('PATH_O3DE_PROJECT') # path to project
ENVAR_O3DE_DEV = str('O3DE_DEV')
ENVAR_DCCSIG_PATH = str('DCCSIG_PATH')
ENVAR_PATH_DCCSIG = str('PATH_DCCSIG')
ENVAR_DCCSI_AZPY_PATH = str('DCCSI_AZPY_PATH')
ENVAR_DCCSI_TOOLS_PATH = str('DCCSI_TOOLS_PATH')
ENVAR_PATH_DCCSI_TOOLS = str('PATH_DCCSI_TOOLS')
ENVAR_O3DE_BUILD_DIR_NAME = str('O3DE_BUILD_DIR_NAME')
ENVAR_O3DE_BUILD_PATH = str('O3DE_BUILD_PATH')
ENVAR_PATH_O3DE_BUILD = str('PATH_O3DE_BUILD')
ENVAR_QT_PLUGIN_PATH = TAG_QT_PLUGIN_PATH
ENVAR_QTFORPYTHON_PATH = str('QTFORPYTHON_PATH')
ENVAR_O3DE_BIN_PATH = str('O3DE_BIN_PATH')
ENVAR_PATH_O3DE_BIN = str('PATH_O3DE_BIN')
ENVAR_DCCSI_LOG_PATH = str('DCCSI_LOG_PATH')
ENVAR_DCCSI_LAUNCHERS_PATH = str('DCCSI_LAUNCHERS_PATH')
ENVAR_DCCSI_PY_VERSION_MAJOR = str('DCCSI_PY_VERSION_MAJOR')
ENVAR_DCCSI_PY_VERSION_MINOR = str('DCCSI_PY_VERSION_MINOR')
ENVAR_DCCSI_PYTHON_PATH = str('DCCSI_PYTHON_PATH')
ENVAR_DCCSI_PYTHON_LIB_PATH = str('DCCSI_PYTHON_LIB_PATH')
ENVAR_O3DE_PYTHON_INSTALL = str('O3DE_PYTHON_INSTALL')
ENVAR_PATH_DCCSI_PYTHON = str('PATH_DCCSI_PYTHON')
ENVAR_PATH_DCCSI_PYTHON_LIB = str('PATH_DCCSI_PYTHON_LIB')
ENVAR_PATH_O3DE_PYTHON_INSTALL = str('PATH_O3DE_PYTHON_INSTALL')
ENVAR_WINGHOME = str('WINGHOME')
ENVAR_DCCSI_WING_VERSION_MAJOR = str('DCCSI_WING_VERSION_MAJOR')
@@ -178,7 +186,7 @@ ENVAR_DCCSI_PY_DCCSI = str('DCCSI_PY_DCCSI')
ENVAR_DCCSI_PY_MAYA = str('DCCSI_PY_MAYA')
ENVAR_DCCSI_PY_DEFAULT = str('DCCSI_PY_DEFAULT')
ENVAR_DCCSI_MAYA_VERSION = str('DCCSI_MAYA_VERSION')
ENVAR_MAYA_VERSION = str('MAYA_VERSION')
ENVAR_MAYA_LOCATION = str('MAYA_LOCATION')
ENVAR_DCCSI_TOOLS_MAYA_PATH = str('DCCSI_TOOLS_MAYA_PATH')
@@ -206,27 +214,29 @@ TAG_MAYA_WORKSPACE = 'workspace.mel'
# dcc scripting interface common and default paths
PATH_O3DE_DEV = str(return_stub_dir(STUB_O3DE_DEV))
PATH_DCCSIG_PATH = str(return_stub_dir(STUB_O3DE_ROOT_DCCSI))
PATH_DCCSIG = str(return_stub_dir(STUB_O3DE_ROOT_DCCSI))
PATH_DCCSI_AZPY_PATH = str(return_stub_dir(STUB_O3DE_DCCSI_AZPY))
PATH_DCCSI_TOOLS_PATH = str('{0}\\{1}'.format(PATH_DCCSIG_PATH, TAG_DIR_DCCSI_TOOLS))
PATH_DCCSI_TOOLS = str('{0}\\{1}'.format(PATH_DCCSIG, TAG_DIR_DCCSI_TOOLS))
# logging into the cache
PATH_DCCSI_LOG_PATH = str('{O3DE_PROJECT_PATH}\\user\\log\{TAG_DCCSI_NICKNAME}')
PATH_DCCSI_LOG_PATH = str('{PATH_O3DE_PROJECT}\\user\\log\{TAG_DCCSI_NICKNAME}')
# dev \ <build> \
STR_CONSTRUCT_O3DE_BUILD_PATH = str('{0}\\{1}')
PATH_O3DE_BUILD_PATH = str(STR_CONSTRUCT_O3DE_BUILD_PATH.format(PATH_O3DE_DEV,
STR_CONSTRUCT_PATH_O3DE_BUILD = str('{0}\\{1}')
PATH_O3DE_BUILD = str(STR_CONSTRUCT_PATH_O3DE_BUILD.format(PATH_O3DE_DEV,
TAG_DIR_O3DE_BUILD_FOLDER))
# ENVAR_QT_PLUGIN_PATH = TAG_QT_PLUGIN_PATH
STR_QTPLUGIN_DIR = str('{0}\\bin\\profile\\EditorPlugins')
STR_QTFORPYTHON_PATH = str('{0}\\Gems\\QtForPython\\3rdParty\\pyside2\\windows\\release')
STR_O3DE_BIN_PATH = str('{0}\\bin\\profile')
STR_PATH_O3DE_BIN = str('{0}\\bin\\profile')
STR_PATH_O3DE_BUILD = str('{0}\\{1}')
PATH_O3DE_BUILD = STR_PATH_O3DE_BUILD.format(PATH_O3DE_DEV, TAG_DIR_O3DE_BUILD_FOLDER)
PATH_O3DE_BUILD_PATH = str('{0}\\{1}'.format(PATH_O3DE_DEV, TAG_DIR_O3DE_BUILD_FOLDER))
PATH_QTFORPYTHON_PATH = str(STR_QTFORPYTHON_PATH.format(PATH_O3DE_DEV))
PATH_QT_PLUGIN_PATH = str(STR_QTPLUGIN_DIR).format(PATH_O3DE_BUILD_PATH)
PATH_O3DE_BIN_PATH = str(STR_O3DE_BIN_PATH).format(PATH_O3DE_BUILD_PATH)
PATH_QT_PLUGIN_PATH = str(STR_QTPLUGIN_DIR).format(PATH_O3DE_BUILD)
PATH_O3DE_BIN = str(STR_PATH_O3DE_BIN).format(PATH_O3DE_BUILD)
# py path string, parts, etc.
TAG_DEFAULT_PY = str('Launch_pyBASE.bat')
@@ -266,21 +276,21 @@ TAG_DCCSI_PY_VERSION_RELEASE = str(10)
TAG_PYTHON_EXE = str('python.exe')
TAG_TOOLS_DIR = str('Tools\\Python')
TAG_PLATFORM = str('windows')
STR_CONSTRUCT_O3DE_PYTHON_INSTALL = str('{0}\\{1}\\{2}.{3}.{4}\\{5}')
PATH_DCCSI_PYTHON_PATH = str(STR_CONSTRUCT_O3DE_PYTHON_INSTALL.format(PATH_O3DE_DEV,
STR_CONSTRUCT_PATH_O3DE_PYTHON_INSTALL = str('{0}\\{1}\\{2}.{3}.{4}\\{5}')
PATH_DCCSI_PYTHON = str(STR_CONSTRUCT_PATH_O3DE_PYTHON_INSTALL.format(PATH_O3DE_DEV,
TAG_TOOLS_DIR,
TAG_DCCSI_PY_VERSION_MAJOR,
TAG_DCCSI_PY_VERSION_MINOR,
TAG_DCCSI_PY_VERSION_RELEASE,
TAG_PLATFORM))
PATH_DCCSI_PY_BASE = str('{0}\\{1}').format(PATH_DCCSI_PYTHON_PATH, TAG_PYTHON_EXE)
PATH_DCCSI_PY_BASE = str('{0}\\{1}').format(PATH_DCCSI_PYTHON, TAG_PYTHON_EXE)
PATH_DCCSI_PY_DEFAULT = PATH_DCCSI_PY_BASE
# bootstrap site-packages by version
TAG_PY_MAJOR = str(sys.version_info.major) # future proof
TAG_PY_MINOR = str(sys.version_info.minor)
STR_DCCSI_PYTHON_LIB_PATH = str('{0}\\3rdParty\\Python\\Lib\\{1}.x\\{1}.{2}.x\\site-packages')
PATH_DCCSI_PYTHON_LIB_PATH = STR_DCCSI_PYTHON_LIB_PATH.format(PATH_DCCSIG_PATH,
STR_PATH_DCCSI_PYTHON_LIB = str('{0}\\3rdParty\\Python\\Lib\\{1}.x\\{1}.{2}.x\\site-packages')
PATH_DCCSI_PYTHON_LIB = STR_PATH_DCCSI_PYTHON_LIB.format(PATH_DCCSIG,
TAG_PY_MAJOR,
TAG_PY_MINOR)
# default path strings (and afe associated attributes)
@@ -334,14 +344,14 @@ if __name__ == '__main__':
_stash_dict = {}
_stash_dict['O3DE_DEV'] = Path(PATH_O3DE_DEV)
_stash_dict['DCCSIG_PATH'] = Path(PATH_DCCSIG_PATH)
_stash_dict['PATH_DCCSIG'] = Path(PATH_DCCSIG)
_stash_dict['DCCSI_AZPY_PATH'] = Path(PATH_DCCSI_AZPY_PATH)
_stash_dict['DCCSI_TOOLS_PATH'] = Path(PATH_DCCSI_TOOLS_PATH)
_stash_dict['DCCSI_PYTHON_PATH'] = Path(PATH_DCCSI_PYTHON_PATH)
_stash_dict['PATH_DCCSI_TOOLS'] = Path(PATH_DCCSI_TOOLS)
_stash_dict['PATH_DCCSI_PYTHON'] = Path(PATH_DCCSI_PYTHON)
_stash_dict['DCCSI_PY_BASE'] = Path(PATH_DCCSI_PY_BASE)
_stash_dict['DCCSI_PYTHON_LIB_PATH'] = Path(PATH_DCCSI_PYTHON_LIB_PATH)
_stash_dict['O3DE_BUILD_PATH'] = Path(PATH_O3DE_BUILD_PATH)
_stash_dict['O3DE_BIN_PATH'] = Path(PATH_O3DE_BIN_PATH)
_stash_dict['PATH_DCCSI_PYTHON_LIB'] = Path(PATH_DCCSI_PYTHON_LIB)
_stash_dict['PATH_O3DE_BUILD'] = Path(PATH_O3DE_BUILD)
_stash_dict['PATH_O3DE_BIN'] = Path(PATH_O3DE_BIN)
_stash_dict['QTFORPYTHON_PATH'] = Path(PATH_QTFORPYTHON_PATH)
_stash_dict['QT_PLUGIN_PATH'] = Path(PATH_QT_PLUGIN_PATH)
_stash_dict['SAT_INSTALL_PATH'] = Path(PATH_SAT_INSTALL_PATH)
@@ -363,3 +373,6 @@ if __name__ == '__main__':
# custom prompt
sys.ps1 = "[azpy]>>"
_LOGGER.debug('{0} took: {1} sec'.format(_MODULENAME, time.process_time() - start))
# --- END -----------------------------------------------------------------