[main] add 3rd party to engine registration
Merge pull request #1131 from aws-lumberyard-dev/default_3rdparty
This commit is contained in:
@@ -384,7 +384,7 @@ namespace O3DE::ProjectManager
|
||||
engineInfo.m_defaultProjectsFolder = Py_To_String(o3deData["default_projects_folder"]);
|
||||
engineInfo.m_defaultRestrictedFolder = Py_To_String(o3deData["default_restricted_folder"]);
|
||||
engineInfo.m_defaultTemplatesFolder = Py_To_String(o3deData["default_templates_folder"]);
|
||||
engineInfo.m_thirdPartyPath = Py_To_String_Optional(o3deData, "third_party_path", "");
|
||||
engineInfo.m_thirdPartyPath = Py_To_String(o3deData["default_third_party_folder"]);
|
||||
}
|
||||
|
||||
auto engineData = m_manifest.attr("get_engine_json_data")(pybind11::none(), enginePath);
|
||||
@@ -421,6 +421,7 @@ namespace O3DE::ProjectManager
|
||||
pybind11::str defaultProjectsFolder = engineInfo.m_defaultProjectsFolder.toStdString();
|
||||
pybind11::str defaultGemsFolder = engineInfo.m_defaultGemsFolder.toStdString();
|
||||
pybind11::str defaultTemplatesFolder = engineInfo.m_defaultTemplatesFolder.toStdString();
|
||||
pybind11::str defaultThirdPartyFolder = engineInfo.m_thirdPartyPath.toStdString();
|
||||
|
||||
auto registrationResult = m_register.attr("register")(
|
||||
enginePath, // engine_path
|
||||
@@ -433,28 +434,15 @@ namespace O3DE::ProjectManager
|
||||
pybind11::none(), // default_engines_folder
|
||||
defaultProjectsFolder,
|
||||
defaultGemsFolder,
|
||||
defaultTemplatesFolder
|
||||
defaultTemplatesFolder,
|
||||
pybind11::none(), // default_restricted_folder
|
||||
defaultThirdPartyFolder
|
||||
);
|
||||
|
||||
if (registrationResult.cast<int>() != 0)
|
||||
{
|
||||
result = false;
|
||||
}
|
||||
|
||||
auto manifest = m_manifest.attr("load_o3de_manifest")();
|
||||
if (pybind11::isinstance<pybind11::dict>(manifest))
|
||||
{
|
||||
try
|
||||
{
|
||||
manifest["third_party_path"] = engineInfo.m_thirdPartyPath.toStdString();
|
||||
m_manifest.attr("save_o3de_manifest")(manifest);
|
||||
}
|
||||
catch ([[maybe_unused]] const std::exception& e)
|
||||
{
|
||||
AZ_Warning("PythonBindings", false, "Failed to set third party path.");
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
return result;
|
||||
@@ -584,6 +572,7 @@ namespace O3DE::ProjectManager
|
||||
pybind11::none(), // default_gems_folder
|
||||
pybind11::none(), // default_templates_folder
|
||||
pybind11::none(), // default_restricted_folder
|
||||
pybind11::none(), // default_third_party_folder
|
||||
pybind11::none(), // external_subdir_engine_path
|
||||
pybind11::none(), // external_subdir_project_path
|
||||
true, // remove
|
||||
|
||||
@@ -97,6 +97,12 @@ def get_o3de_logs_folder() -> pathlib.Path:
|
||||
return logs_folder
|
||||
|
||||
|
||||
def get_o3de_third_party_folder() -> pathlib.Path:
|
||||
third_party_folder = get_o3de_folder() / '3rdParty'
|
||||
third_party_folder.mkdir(parents=True, exist_ok=True)
|
||||
return third_party_folder
|
||||
|
||||
|
||||
# o3de manifest file methods
|
||||
def get_o3de_manifest() -> pathlib.Path:
|
||||
manifest_path = get_o3de_folder() / 'o3de_manifest.json'
|
||||
@@ -113,6 +119,7 @@ def get_o3de_manifest() -> pathlib.Path:
|
||||
default_gems_folder = get_o3de_gems_folder()
|
||||
default_templates_folder = get_o3de_templates_folder()
|
||||
default_restricted_folder = get_o3de_restricted_folder()
|
||||
default_third_party_folder = get_o3de_third_party_folder()
|
||||
|
||||
default_projects_restricted_folder = default_projects_folder / 'Restricted'
|
||||
default_projects_restricted_folder.mkdir(parents=True, exist_ok=True)
|
||||
@@ -129,6 +136,7 @@ def get_o3de_manifest() -> pathlib.Path:
|
||||
json_data.update({'default_gems_folder': default_gems_folder.as_posix()})
|
||||
json_data.update({'default_templates_folder': default_templates_folder.as_posix()})
|
||||
json_data.update({'default_restricted_folder': default_restricted_folder.as_posix()})
|
||||
json_data.update({'default_third_party_folder': default_third_party_folder.as_posix()})
|
||||
|
||||
json_data.update({'projects': []})
|
||||
json_data.update({'external_subdirectories': []})
|
||||
|
||||
@@ -486,7 +486,7 @@ def register_default_engines_folder(json_data: dict,
|
||||
remove: bool = False) -> int:
|
||||
return register_default_o3de_object_folder(json_data,
|
||||
manifest.get_o3de_engines_folder() if remove else default_engines_folder,
|
||||
'default_engines_folder', remove)
|
||||
'default_engines_folder')
|
||||
|
||||
|
||||
def register_default_projects_folder(json_data: dict,
|
||||
@@ -494,7 +494,7 @@ def register_default_projects_folder(json_data: dict,
|
||||
remove: bool = False) -> int:
|
||||
return register_default_o3de_object_folder(json_data,
|
||||
manifest.get_o3de_projects_folder() if remove else default_projects_folder,
|
||||
'default_projects_folder', remove)
|
||||
'default_projects_folder')
|
||||
|
||||
|
||||
def register_default_gems_folder(json_data: dict,
|
||||
@@ -502,7 +502,7 @@ def register_default_gems_folder(json_data: dict,
|
||||
remove: bool = False) -> int:
|
||||
return register_default_o3de_object_folder(json_data,
|
||||
manifest.get_o3de_gems_folder() if remove else default_gems_folder,
|
||||
'default_gems_folder', remove)
|
||||
'default_gems_folder')
|
||||
|
||||
|
||||
def register_default_templates_folder(json_data: dict,
|
||||
@@ -510,16 +510,22 @@ def register_default_templates_folder(json_data: dict,
|
||||
remove: bool = False) -> int:
|
||||
return register_default_o3de_object_folder(json_data,
|
||||
manifest.get_o3de_templates_folder() if remove else default_templates_folder,
|
||||
'default_templates_folder', remove)
|
||||
'default_templates_folder')
|
||||
|
||||
|
||||
def register_default_restricted_folder(json_data: dict,
|
||||
default_restricted_folder: str or pathlib.Path,
|
||||
reset_to_default: bool = False) -> int:
|
||||
remove: bool = False) -> int:
|
||||
return register_default_o3de_object_folder(json_data,
|
||||
manifest.get_o3de_restricted_folder() if remove else default_restricted_folder,
|
||||
'default_restricted_folder', remove)
|
||||
'default_restricted_folder')
|
||||
|
||||
def register_default_third_party_folder(json_data: dict,
|
||||
default_third_party_folder: pathlib.Path,
|
||||
remove: bool = False) -> int:
|
||||
return register_default_o3de_object_folder(json_data,
|
||||
manifest.get_o3de_third_party_folder() if remove else default_third_party_folder,
|
||||
'default_third_party_folder')
|
||||
|
||||
def register(engine_path: str or pathlib.Path = None,
|
||||
project_path: str or pathlib.Path = None,
|
||||
@@ -533,6 +539,7 @@ def register(engine_path: str or pathlib.Path = None,
|
||||
default_gems_folder: str or pathlib.Path = None,
|
||||
default_templates_folder: str or pathlib.Path = None,
|
||||
default_restricted_folder: str or pathlib.Path = None,
|
||||
default_third_party_folder: pathlib.Path = None,
|
||||
external_subdir_engine_path: pathlib.Path = None,
|
||||
external_subdir_project_path: pathlib.Path = None,
|
||||
remove: bool = False,
|
||||
@@ -553,6 +560,7 @@ def register(engine_path: str or pathlib.Path = None,
|
||||
:param default_gems_folder: default gems folder
|
||||
:param default_templates_folder: default templates folder
|
||||
:param default_restricted_folder: default restricted code folder
|
||||
:param default_third_party_folder: default 3rd party cache folder
|
||||
:param external_subdir_engine_path: Path to the engine to use when registering an external subdirectory.
|
||||
The registration occurs in the engine.json file in this case
|
||||
:param external_subdir_engine_path: Path to the project to use when registering an external subdirectory.
|
||||
@@ -620,6 +628,9 @@ def register(engine_path: str or pathlib.Path = None,
|
||||
elif isinstance(default_restricted_folder, str) or isinstance(default_restricted_folder, pathlib.PurePath):
|
||||
result = register_default_restricted_folder(json_data, default_restricted_folder, remove)
|
||||
|
||||
elif default_third_party_folder:
|
||||
result = register_default_third_party_folder(json_data, default_third_party_folder, remove)
|
||||
|
||||
# engine is done LAST
|
||||
# Now that everything that could have an engine context is done, if the engine is supplied that means this is
|
||||
# registering the engine itself
|
||||
@@ -712,6 +723,15 @@ def remove_invalid_o3de_objects() -> None:
|
||||
f" Set default {default_restricted_folder}")
|
||||
register(default_restricted_folder=default_restricted_folder.as_posix())
|
||||
|
||||
default_third_party_folder = pathlib.Path(json_data['default_third_party_folder']).resolve()
|
||||
if not default_third_party_folder.is_dir():
|
||||
default_third_party_folder = manifest.get_o3de_folder() / '3rdParty'
|
||||
default_third_party_folder.mkdir(parents=True, exist_ok=True)
|
||||
logger.warn(
|
||||
f"Default 3rd Party folder {default_third_party_folder} is invalid."
|
||||
f" Set default {default_third_party_folder}")
|
||||
register(default_third_party_folder=default_third_party_folder.as_posix())
|
||||
|
||||
|
||||
def _run_register(args: argparse) -> int:
|
||||
if args.override_home_folder:
|
||||
@@ -751,6 +771,7 @@ def _run_register(args: argparse) -> int:
|
||||
default_gems_folder=args.default_gems_folder,
|
||||
default_templates_folder=args.default_templates_folder,
|
||||
default_restricted_folder=args.default_restricted_folder,
|
||||
default_third_party_folder=args.default_third_party_folder,
|
||||
external_subdir_engine_path=args.external_subdirectory_engine_path,
|
||||
external_subdir_project_path=args.external_subdirectory_project_path,
|
||||
remove=args.remove,
|
||||
@@ -804,6 +825,8 @@ def add_parser_args(parser):
|
||||
help='The default templates folder to register/remove.')
|
||||
group.add_argument('-drf', '--default-restricted-folder', type=str, required=False,
|
||||
help='The default restricted folder to register/remove.')
|
||||
group.add_argument('-dtpf', '--default-third-party-folder', type=pathlib.Path, required=False,
|
||||
help='The default 3rd Party folder to register/remove.')
|
||||
group.add_argument('-u', '--update', action='store_true', required=False,
|
||||
default=False,
|
||||
help='Refresh the repo cache.')
|
||||
|
||||
Reference in New Issue
Block a user