Read engine version from setting registry (#4926)

* Read engine version from setting registry

Signed-off-by: Junbo Liang <junbo@amazon.com>
monroegm-disable-blank-issue-2
Junbo Liang 4 years ago committed by GitHub
parent e8a7743aec
commit 71d23cc602
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -14,6 +14,8 @@
namespace AWSMetrics
{
constexpr const char* EngineVersionJsonKey = "O3DEVersion";
//! Base class to be implemented by IdentityProvider to retrive an ID for identity.
class IdentityProvider
{

@ -8,10 +8,10 @@
#include <DefaultClientIdProvider.h>
#include <AzCore/IO/FileIO.h>
#include <AzCore/IO/SystemFile.h>
#include <AzCore/IO/Path/Path.h>
#include <AzCore/Serialization/Json/JsonUtils.h>
#include <AzCore/Settings/SettingsRegistryImpl.h>
#include <AzCore/Settings/SettingsRegistryMergeUtils.h>
#include <AzCore/Utils/Utils.h>
namespace AWSMetrics
{
@ -22,37 +22,23 @@ namespace AWSMetrics
AZStd::string IdentityProvider::GetEngineVersion()
{
static constexpr const char* EngineConfigFilePath = "@products@/engine.json";
static constexpr const char* EngineVersionJsonKey = "O3DEVersion";
AZ::IO::FileIOBase* fileIO = AZ::IO::FileIOBase::GetDirectInstance();
if (!fileIO)
{
AZ_Error("AWSMetrics", false, "No FileIoBase Instance");
return "";
}
char resolvedPath[AZ_MAX_PATH_LEN] = { 0 };
if (!fileIO->ResolvePath(EngineConfigFilePath, resolvedPath, AZ_MAX_PATH_LEN))
constexpr auto engineVersionKey = AZ::SettingsRegistryInterface::FixedValueString(AZ::SettingsRegistryMergeUtils::EngineSettingsRootKey) + "/" + EngineVersionJsonKey;
AZStd::string engineVersion;
if (auto settingsRegistry = AZ::SettingsRegistry::Get(); settingsRegistry != nullptr && settingsRegistry->Get(engineVersion, engineVersionKey))
{
AZ_Error("AWSMetrics", false, "Failed to resolve the engine config file directory");
return "";
return engineVersion;
}
auto readOutcome = AZ::JsonSerializationUtils::ReadJsonFile(resolvedPath);
if (!readOutcome.IsSuccess())
auto engineSettingsPath = AZ::IO::FixedMaxPath{ AZ::Utils::GetEnginePath() } / "engine.json";
if (AZ::IO::SystemFile::Exists(engineSettingsPath.c_str()))
{
AZ_Error("AWSMetrics", false, readOutcome.GetError().c_str());
return "";
AZ::SettingsRegistryImpl settingsRegistry;
if (settingsRegistry.MergeSettingsFile(
engineSettingsPath.Native(), AZ::SettingsRegistryInterface::Format::JsonMergePatch, AZ::SettingsRegistryMergeUtils::EngineSettingsRootKey))
{
settingsRegistry.Get(engineVersion, engineVersionKey);
}
}
rapidjson_ly::Document& jsonDoc = readOutcome.GetValue();
auto memberIt = jsonDoc.FindMember(EngineVersionJsonKey);
if (memberIt != jsonDoc.MemberEnd())
{
return memberIt->value.GetString();
}
return "";
return engineVersion;
}
}

@ -15,6 +15,7 @@
#include <AzCore/Serialization/Json/JsonSystemComponent.h>
#include <AzCore/Serialization/Json/RegistrationContext.h>
#include <AzCore/Settings/SettingsRegistryImpl.h>
#include <AzCore/Settings/SettingsRegistryMergeUtils.h>
#include <AzCore/UnitTest/TestTypes.h>
#include <AzCore/Utils/Utils.h>
#include <AzFramework/IO/LocalFileIO.h>
@ -47,9 +48,6 @@ namespace AWSMetrics
m_localFileIO->SetAlias("@engroot@", engineRoot.c_str());
m_localFileIO->SetAlias("@products@", productAssetPath.c_str());
m_localFileIO->SetAlias("@user@", userPath.c_str());
// Copy engine.json to the cache
EXPECT_TRUE(m_localFileIO->Copy((engineRoot / "engine.json").c_str(), "engine.json"));
m_serializeContext = AZStd::make_unique<AZ::SerializeContext>();
m_registrationContext = AZStd::make_unique<AZ::JsonRegistrationContext>();
@ -61,6 +59,8 @@ namespace AWSMetrics
m_settingsRegistry->SetContext(m_serializeContext.get());
m_settingsRegistry->SetContext(m_registrationContext.get());
m_settingsRegistry->Set(AZ::SettingsRegistryMergeUtils::FilePathKey_EngineRootFolder, engineRoot.c_str());
AZ::SettingsRegistry::Register(m_settingsRegistry.get());
}

Loading…
Cancel
Save