[LYN-2514] Extending pythin bindings to adapt CLI changes for the gem catalog

* Added ExecuteWithLockErrorHandling() which returns an outcome with the actual error we get from python so that we can expose that to the UI.
* Added cmake pybind.
* Get gems now calling get_all_gems and alphabetically sorting the result.
* Added get enabled gems function which first gets the cmake enabled gems file path from the project path and then the list of gem names that are enabled.
* Some changes to the enable and disable gem functions.
This commit is contained in:
Benjamin Jillich
2021-06-02 13:27:55 +02:00
parent 7b6226a8aa
commit ede8daaece
3 changed files with 101 additions and 59 deletions
@@ -57,13 +57,21 @@ namespace O3DE::ProjectManager
* @param path the absolute path to the Gem
* @return an outcome with GemInfo on success
*/
virtual AZ::Outcome<GemInfo> GetGem(const QString& path) = 0;
virtual AZ::Outcome<GemInfo> GetGemInfo(const QString& path) = 0;
/**
* Get info about all known Gems
* @return an outcome with GemInfos on success
* Get all available gem infos. This concatenates gems registered by the engine and the project.
* @param path The absolute path to the project.
* @return A list of gem infos.
*/
virtual AZ::Outcome<QVector<GemInfo>> GetGems() = 0;
virtual AZ::Outcome<QVector<GemInfo>, AZStd::string> GetAllGemInfos(const QString& projectPath) = 0;
/**
* Get a list of all enabled gem names for a given project.
* @param[in] projectPath Absolute file path to the project.
* @return A list of gem names of all the enabled gems for a given project or a error message on failure.
*/
virtual AZ::Outcome<QVector<AZStd::string>, AZStd::string> GetEnabledGemNames(const QString& projectPath) = 0;
// Projects
@@ -114,17 +122,17 @@ namespace O3DE::ProjectManager
* Add a gem to a project
* @param gemPath the absolute path to the gem
* @param projectPath the absolute path to the project
* @return true on success, false on failure
* @return An outcome with the success flag as well as an error message in case of a failure.
*/
virtual bool AddGemToProject(const QString& gemPath, const QString& projectPath) = 0;
virtual AZ::Outcome<void, AZStd::string> AddGemToProject(const QString& gemPath, const QString& projectPath) = 0;
/**
* Remove gem to a project
* @param gemPath the absolute path to the gem
* @param projectPath the absolute path to the project
* @return true on success, false on failure
* @return An outcome with the success flag as well as an error message in case of a failure.
*/
virtual bool RemoveGemFromProject(const QString& gemPath, const QString& projectPath) = 0;
virtual AZ::Outcome<void, AZStd::string> RemoveGemFromProject(const QString& gemPath, const QString& projectPath) = 0;
// Project Templates