// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "Models/Tag.h" #include "Logic/Validators/ValidatorDefinition.h" #include "UObject/Class.h" #include "Configuration/Configuration.h" #include "SubmitToolParameters.generated.h" USTRUCT() struct FDocumentationLink { GENERATED_BODY() UPROPERTY() FString Text; UPROPERTY() FString Tooltip; UPROPERTY() FString Link; }; USTRUCT() struct FGeneralParameters { GENERATED_BODY() UPROPERTY() FString NewChangelistMessage = TEXT("Submit Tool generated changelist from default with {FileCount} files"); UPROPERTY() FString CacheFile = TEXT("$(localappdata)/SubmitTool/SubmitToolCache.cache"); UPROPERTY() uint8 InvalidateCacheHours = 36; UPROPERTY() TArray HelpLinks; UPROPERTY() uint8 EarlySubmitHour24 = 6; UPROPERTY() uint8 LateSubmitHour24 = 16; UPROPERTY() TArray GroupsToExclude; }; USTRUCT() struct FJiraParameters { GENERATED_BODY() UPROPERTY() FString ServerAddress; UPROPERTY() int64 ServiceDeskID; UPROPERTY() int64 RequestFormID; UPROPERTY() FString ServiceDeskToken; UPROPERTY() FString SwarmUrlField; UPROPERTY() FString RequestorField; UPROPERTY() FString PreflightField; UPROPERTY() FString StreamField; }; USTRUCT() struct FPreflightAdditionalTask { GENERATED_BODY() UPROPERTY() FString RegexPath; UPROPERTY() FString TaskId; }; USTRUCT() struct FPreflightTemplateDefinition { GENERATED_BODY() UPROPERTY() FString RegexPath; UPROPERTY() FString Template; UPROPERTY() TArray AdditionalTasks; }; USTRUCT() struct FTelemetryParameters { GENERATED_BODY() UPROPERTY() FString Url; UPROPERTY() FString Instance; }; UENUM() enum class EFieldType { Bool = 0, Text = 1, MultiText = 2, Combo = 3, PerforceUser = 4, UILabel = 99, UISpace = 100 }; UENUM() enum class EJiraFieldType { Object = 0, Array = 1, String = 2 }; USTRUCT() struct FJiraIntegrationField { GENERATED_BODY() UPROPERTY() FString Id; UPROPERTY() FString Name; UPROPERTY() FString LabelDisplay; UPROPERTY() TArray JiraValues; UPROPERTY() EFieldType Type; UPROPERTY() EJiraFieldType JiraType; UPROPERTY() FString Default; UPROPERTY() TArray DependsOn; UPROPERTY() FString DependsOnValue; UPROPERTY() TArray ValidationGroups; UPROPERTY() bool bRequiredValue; UPROPERTY() FString Tooltip; }; USTRUCT() struct FIntegrationParameters { GENERATED_BODY() UPROPERTY() FString Path; UPROPERTY() FString Args; UPROPERTY() TArray Fields; UPROPERTY() TArray OneOfValidationGroups; }; USTRUCT() struct FCopyLogParameters { GENERATED_BODY() UPROPERTY() TArray LogsToCollect; }; USTRUCT() struct FP4LockdownParameters { GENERATED_BODY() UPROPERTY() TMap ConfigPaths; UPROPERTY() TArray AdditionalHardlockedPaths; }; USTRUCT() struct FOAuthTokenParams { GENERATED_BODY() UPROPERTY() FString OAuthTokenTool; UPROPERTY() FString OAuthArgs; UPROPERTY() FString OAuthFile; }; USTRUCT() struct FIncompatibleFilesGroup { GENERATED_BODY() UPROPERTY() TArray FileGroups; UPROPERTY() bool bIsError = false; UPROPERTY() FString Title = TEXT("Files from different groups"); UPROPERTY() FString MessageFormat = TEXT("You are submitting files in the same CL in these locations:\n{Groups}"); const FString GetMessage() const { TArray SubstFileGroups; for(const FString& Group : FileGroups) { SubstFileGroups.Add(FConfiguration::Substitute(Group)); } FStringFormatNamedArguments Args = { { TEXT("Groups"), FString::Join(SubstFileGroups, TEXT("\n")) } }; return FString::Format(*MessageFormat, Args); }; }; USTRUCT() struct FIncompatibleFilesParams { GENERATED_BODY() UPROPERTY() TArray IncompatibleFileGroups; }; USTRUCT() struct FHordeParameters { GENERATED_BODY() UPROPERTY() FString HordeServerAddress; UPROPERTY() FString StartPreflightURLFormat; UPROPERTY() FString FindPreflightURLFormat; UPROPERTY() FString FindSinglePreflightURLFormat; UPROPERTY() float FetchPreflightEachSeconds = 180; UPROPERTY() float FetchPreflightEachSecondsWhenInProgress = 90; UPROPERTY() FString DefaultPreflightTemplate; UPROPERTY() TArray Definitions; }; USTRUCT() struct FAutoUpdateParameters { GENERATED_BODY() UPROPERTY() bool bIsAutoUpdateOn = false; UPROPERTY() FString AutoUpdateScript; UPROPERTY() FString LocalAutoUpdateScript; UPROPERTY() FString AutoUpdateCommand; UPROPERTY() FString AutoUpdateArgs; UPROPERTY() FString DeployIdFilePath; UPROPERTY() FString LocalDownloadZip; UPROPERTY() FString LocalVersionFile; }; struct FSubmitToolParameters { FGeneralParameters GeneralParameters; FTelemetryParameters Telemetry; TArray AvailableTags; TMap Validators; TMap PresubmitOperations; FJiraParameters JiraParameters; FIntegrationParameters IntegrationParameters; FCopyLogParameters CopyLogParameters; FP4LockdownParameters P4LockdownParameters; FOAuthTokenParams OAuthParameters; FIncompatibleFilesParams IncompatibleFilesParams; FHordeParameters HordeParameters; FAutoUpdateParameters AutoUpdateParameters; };