Make remove_invalid_o3de_projects take a path and return a value

Signed-off-by: pconroy <pconroy@amazon.com>
main
pconroy 5 years ago
parent e0c3d15d5a
commit ae6a424064

@ -483,9 +483,9 @@ namespace O3DE::ProjectManager
return displayFirstTimeContent; return displayFirstTimeContent;
} }
void ProjectsScreen::RemoveInvalidProjects() bool ProjectsScreen::RemoveInvalidProjects()
{ {
PythonBindingsInterface::Get()->RemoveInvalidProjects(); return PythonBindingsInterface::Get()->RemoveInvalidProjects();
} }
void ProjectsScreen::StartProjectBuild(const ProjectInfo& projectInfo) void ProjectsScreen::StartProjectBuild(const ProjectInfo& projectInfo)

@ -59,7 +59,7 @@ namespace O3DE::ProjectManager
ProjectButton* CreateProjectButton(ProjectInfo& project, QLayout* flowLayout, bool processing = false); ProjectButton* CreateProjectButton(ProjectInfo& project, QLayout* flowLayout, bool processing = false);
void ResetProjectsContent(); void ResetProjectsContent();
bool ShouldDisplayFirstTimeContent(); bool ShouldDisplayFirstTimeContent();
void RemoveInvalidProjects(); bool RemoveInvalidProjects();
void StartProjectBuild(const ProjectInfo& projectInfo); void StartProjectBuild(const ProjectInfo& projectInfo);
QList<ProjectInfo>::iterator RequiresBuildProjectIterator(const QString& projectPath); QList<ProjectInfo>::iterator RequiresBuildProjectIterator(const QString& projectPath);

@ -755,13 +755,19 @@ namespace O3DE::ProjectManager
}); });
} }
void PythonBindings::RemoveInvalidProjects() bool PythonBindings::RemoveInvalidProjects()
{ {
ExecuteWithLockErrorHandling( bool removalResult = false;
bool result = ExecuteWithLock(
[&] [&]
{ {
m_register.attr("remove_invalid_o3de_projects")(); auto pythonRemovalResult = m_register.attr("remove_invalid_o3de_projects")();
// Returns an exit code so boolify it then invert result
removalResult = !pythonRemovalResult.cast<bool>();
}); });
return result && removalResult;
} }
AZ::Outcome<void, AZStd::string> PythonBindings::UpdateProject(const ProjectInfo& projectInfo) AZ::Outcome<void, AZStd::string> PythonBindings::UpdateProject(const ProjectInfo& projectInfo)

@ -50,7 +50,7 @@ namespace O3DE::ProjectManager
AZ::Outcome<void, AZStd::string> UpdateProject(const ProjectInfo& projectInfo) override; AZ::Outcome<void, AZStd::string> UpdateProject(const ProjectInfo& projectInfo) override;
AZ::Outcome<void, AZStd::string> AddGemToProject(const QString& gemPath, const QString& projectPath) override; AZ::Outcome<void, AZStd::string> AddGemToProject(const QString& gemPath, const QString& projectPath) override;
AZ::Outcome<void, AZStd::string> RemoveGemFromProject(const QString& gemPath, const QString& projectPath) override; AZ::Outcome<void, AZStd::string> RemoveGemFromProject(const QString& gemPath, const QString& projectPath) override;
void RemoveInvalidProjects() override; bool RemoveInvalidProjects() override;
// ProjectTemplate // ProjectTemplate
AZ::Outcome<QVector<ProjectTemplateInfo>> GetProjectTemplates(const QString& projectPath = {}) override; AZ::Outcome<QVector<ProjectTemplateInfo>> GetProjectTemplates(const QString& projectPath = {}) override;

@ -144,7 +144,7 @@ namespace O3DE::ProjectManager
/** /**
* Removes invalid projects from the manifest * Removes invalid projects from the manifest
*/ */
virtual void RemoveInvalidProjects() = 0; virtual bool RemoveInvalidProjects() = 0;
// Project Templates // Project Templates

@ -658,13 +658,20 @@ def register(engine_path: pathlib.Path = None,
return result return result
def remove_invalid_o3de_projects() -> None: def remove_invalid_o3de_projects(manifest_path: pathlib.Path = None) -> int:
json_data = manifest.load_o3de_manifest() if not manifest_path:
manifest_path = manifest.get_o3de_manifest()
json_data = manifest.load_o3de_manifest(manifest_path)
result = 0
for project in json_data['projects']: for project in json_data['projects']:
if not validation.valid_o3de_project_json(pathlib.Path(project).resolve() / 'project.json'): if not validation.valid_o3de_project_json(pathlib.Path(project).resolve() / 'project.json'):
logger.warn(f"Project path {project} is invalid.") logger.warn(f"Project path {project} is invalid.")
register(project_path=pathlib.Path(project), remove=True) result = register(project_path=pathlib.Path(project), remove=True)
return result
def remove_invalid_o3de_objects() -> None: def remove_invalid_o3de_objects() -> None:
json_data = manifest.load_o3de_manifest() json_data = manifest.load_o3de_manifest()

Loading…
Cancel
Save