AZStd::string IdentityProvider::GetEngineVersion()

in Gems/AWSMetrics/Code/Source/IdentityProvider.cpp [26:60]


    AZStd::string IdentityProvider::GetEngineVersion()
    {
        constexpr auto rootKey = AZ::SettingsRegistryInterface::FixedValueString(AZ::SettingsRegistryMergeUtils::EngineSettingsRootKey);
        constexpr auto engineVersionKeyFileFormat1 = rootKey + "/" + EngineVersionJsonKeyFileFormat1;
        constexpr auto engineVersionKeyFileFormat2 = rootKey + "/" + EngineVersionJsonKeyFileFormat2;
        AZStd::string engineVersion;

        if(auto settingsRegistry = AZ::SettingsRegistry::Get(); settingsRegistry != nullptr)
        {
            // prefer latest file format
            if(settingsRegistry->Get(engineVersion, engineVersionKeyFileFormat2))
            {
                return engineVersion;
            }
            else if(settingsRegistry->Get(engineVersion, engineVersionKeyFileFormat1))
            {
                return engineVersion;
            }
        }

        auto engineSettingsPath = AZ::IO::FixedMaxPath{ AZ::Utils::GetEnginePath() } / "engine.json";
        if (AZ::IO::SystemFile::Exists(engineSettingsPath.c_str()))
        {
            AZ::SettingsRegistryImpl settingsRegistry;
            if (settingsRegistry.MergeSettingsFile(
                    engineSettingsPath.Native(), AZ::SettingsRegistryInterface::Format::JsonMergePatch, AZ::SettingsRegistryMergeUtils::EngineSettingsRootKey))
            {
                if(!settingsRegistry.Get(engineVersion, engineVersionKeyFileFormat2))
                {
                    settingsRegistry.Get(engineVersion, engineVersionKeyFileFormat1);
                }
            }
        }
        return engineVersion;
    }