Files
UnrealEngineUWP/Engine/Source/Developer/SourceControl/Private/SourceControlInitSettings.cpp
paul chipchase 4cf57d2d1e Extend FSourceControlInitSettings to allow the caller to control if a provider uses values parsed from the commandline or not when initializing.
#rb Juan.Legaz
#jira UE-212182
#rnx

- We default to the old behavior, so that the default way of creating a source control provider (no FSourceControlInitSettings) will read all of the commandline parameters available and the newer way (creating a provider with a FSourceControlInitSettings) will ignore the commandline.

[CL 33001499 by paul chipchase in ue5-main branch]
2024-04-16 11:05:04 -04:00

75 lines
1.8 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "SourceControlInitSettings.h"
#include "Containers/StringView.h"
FSourceControlInitSettings::FSourceControlInitSettings(EBehavior InBehavior)
: OverrideBehavior(InBehavior)
{
}
FSourceControlInitSettings::FSourceControlInitSettings(EBehavior InBehavior, ECmdLineFlags InCmdLineFlags)
: OverrideBehavior(InBehavior)
, CmdLineFlags(InCmdLineFlags)
{
}
void FSourceControlInitSettings::SetConfigBehavior(EConfigBehavior InBehavior)
{
ConfigBehavior = InBehavior;
}
bool FSourceControlInitSettings::CanWriteToConfigFile() const
{
return ConfigBehavior == EConfigBehavior::ReadWrite;
}
bool FSourceControlInitSettings::CanReadFromConfigFile() const
{
return ConfigBehavior != EConfigBehavior::None;
}
void FSourceControlInitSettings::AddSetting(FStringView SettingName, FStringView SettingValue)
{
Settings.Add(FString(SettingName), FString(SettingValue));
}
void FSourceControlInitSettings::OverrideSetting(FStringView SettingName, FString& InOutSettingValue)
{
const int32 Hash = GetTypeHash(SettingName);
FString* InitialValue = Settings.FindByHash(Hash, SettingName);
if (InitialValue != nullptr)
{
InOutSettingValue = *InitialValue;
}
else if (OverrideBehavior == EBehavior::OverrideAll)
{
InOutSettingValue.Empty();
}
}
bool FSourceControlInitSettings::HasOverrides() const
{
return !Settings.IsEmpty();
}
bool FSourceControlInitSettings::IsOverridden(FStringView SettingName) const
{
const int32 Hash = GetTypeHash(SettingName);
return Settings.FindByHash(Hash, SettingName) != nullptr;
}
void FSourceControlInitSettings::SetCmdLineFlags(ECmdLineFlags Flags)
{
CmdLineFlags = Flags;
}
bool FSourceControlInitSettings::ShouldReadFromCmdLine() const
{
return CmdLineFlags == ECmdLineFlags::ReadAll;
}