[default_3rdparty] add 3rd party to engine registration + specific path registration fixes

main
scottr 5 years ago
parent 3634277317
commit 85e6d06c2c

@ -383,7 +383,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);
@ -420,6 +420,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 defaultThridPartyFolder = engineInfo.m_thirdPartyPath.toStdString();
auto registrationResult = m_register.attr("register")(
enginePath, // engine_path
@ -432,28 +433,15 @@ namespace O3DE::ProjectManager
pybind11::none(), // default_engines_folder
defaultProjectsFolder,
defaultGemsFolder,
defaultTemplatesFolder
defaultTemplatesFolder,
pybind11::none(), // default_restricted_folder
defaultThridPartyFolder
);
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;

@ -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: str or 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: str or 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 isinstance(default_third_party_folder, str) or isinstance(default_third_party_folder, pathlib.PurePath):
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=str, 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.')

Loading…
Cancel
Save