2
0
Эх сурвалжийг харах

Make remove_invalid_o3de_projects take a path and return a value

Signed-off-by: pconroy <[email protected]>
pconroy 4 жил өмнө
parent
commit
ae6a424064

+ 2 - 2
Code/Tools/ProjectManager/Source/ProjectsScreen.cpp

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

+ 1 - 1
Code/Tools/ProjectManager/Source/ProjectsScreen.h

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

+ 9 - 3
Code/Tools/ProjectManager/Source/PythonBindings.cpp

@@ -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)

+ 1 - 1
Code/Tools/ProjectManager/Source/PythonBindings.h

@@ -50,7 +50,7 @@ namespace O3DE::ProjectManager
         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> RemoveGemFromProject(const QString& gemPath, const QString& projectPath) override;
-        void RemoveInvalidProjects() override;
+        bool RemoveInvalidProjects() override;
 
         // ProjectTemplate
         AZ::Outcome<QVector<ProjectTemplateInfo>> GetProjectTemplates(const QString& projectPath = {}) override;

+ 1 - 1
Code/Tools/ProjectManager/Source/PythonBindingsInterface.h

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

+ 10 - 3
scripts/o3de/o3de/register.py

@@ -658,13 +658,20 @@ def register(engine_path: pathlib.Path = None,
 
     return result
 
-def remove_invalid_o3de_projects() -> None:
-    json_data = manifest.load_o3de_manifest()
+def remove_invalid_o3de_projects(manifest_path: pathlib.Path = None) -> int:
+    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']:
         if not validation.valid_o3de_project_json(pathlib.Path(project).resolve() / 'project.json'):
             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:
     json_data = manifest.load_o3de_manifest()