Browse Source

add helpers to get parts of dependencies

Signed-off-by: Alex Peterson <[email protected]>
Alex Peterson 2 years ago
parent
commit
6c272e2aef

+ 28 - 1
Code/Tools/ProjectManager/Source/ProjectUtils.cpp

@@ -11,7 +11,6 @@
 #include <PythonBindingsInterface.h>
 #include <PythonBindingsInterface.h>
 #include <AzCore/Settings/SettingsRegistryMergeUtils.h>
 #include <AzCore/Settings/SettingsRegistryMergeUtils.h>
 #include <AzCore/IO/Path/Path.h>
 #include <AzCore/IO/Path/Path.h>
-#include <AzCore/Dependency/Dependency.h>
 #include <AzCore/std/chrono/chrono.h>
 #include <AzCore/std/chrono/chrono.h>
 
 
 #include <QFileDialog>
 #include <QFileDialog>
@@ -796,5 +795,33 @@ namespace O3DE::ProjectManager
             }
             }
             return result;
             return result;
         }
         }
+
+
+        void GetDependencyNameAndVersion(const QString& dependencyString, QString& objectName, Comparison& comparator, QString& version)
+        {
+            Dependency dependency;
+            if (auto parseOutcome = dependency.ParseVersions({ dependencyString.toUtf8().constData() }); parseOutcome)
+            {
+                objectName = dependency.GetName().c_str();
+                if (const auto& bounds = dependency.GetBounds(); !bounds.empty())
+                {
+                    comparator = dependency.GetBounds().at(0).GetComparison();
+                    version = dependency.GetBounds().at(0).GetVersion().ToString().c_str();
+                }
+            }
+            else
+            {
+                objectName = dependencyString;
+            }
+        }
+
+
+        QString GetDependencyName(const QString& dependency)
+        {
+            QString objectName, version;
+            ProjectUtils::Comparison comparator;
+            GetDependencyNameAndVersion(dependency, objectName, comparator, version);
+            return objectName; 
+        }
     } // namespace ProjectUtils
     } // namespace ProjectUtils
 } // namespace O3DE::ProjectManager
 } // namespace O3DE::ProjectManager

+ 21 - 0
Code/Tools/ProjectManager/Source/ProjectUtils.h

@@ -14,6 +14,7 @@
 #include <QWidget>
 #include <QWidget>
 #include <QProcessEnvironment>
 #include <QProcessEnvironment>
 
 
+#include <AzCore/Dependency/Dependency.h>
 #include <AzCore/IO/Path/Path_fwd.h>
 #include <AzCore/IO/Path/Path_fwd.h>
 #include <AzCore/Outcome/Outcome.h>
 #include <AzCore/Outcome/Outcome.h>
 
 
@@ -133,5 +134,25 @@ namespace O3DE::ProjectManager
          */
          */
         QString GetDependencyString(const QString& dependency);
         QString GetDependencyString(const QString& dependency);
 
 
+
+        using Dependency = AZ::Dependency<AZ::SemanticVersion::parts_count>;
+        using Comparison = AZ::Dependency<AZ::SemanticVersion::parts_count>::Bound::Comparison;
+
+        /**
+         * Helper to parse a dependency, e.g. o3de==1.2.3 into an object name, comparator version 
+         * @param dependency The dependency, e.g. o3de==1.2.3
+         * @param objectName The parsed object name, e.g. o3de 
+         * @param comparator The parsed comparator, e.g. ==
+         * @param version The parsed version, e.g. 1.2.3 
+         */
+        void GetDependencyNameAndVersion(const QString& dependency, QString& objectName, Comparison& comparator, QString& version);
+
+        /**
+         * Helper to parse a dependency, e.g. o3de==1.2.3 into an object name 
+         * @param dependency The dependency, e.g. o3de==1.2.3
+         * @return The parsed object name, e.g. o3de 
+         */
+        QString GetDependencyName(const QString& dependency);
+
     } // namespace ProjectUtils
     } // namespace ProjectUtils
 } // namespace O3DE::ProjectManager
 } // namespace O3DE::ProjectManager