1- // Copyright 2024 Andrew Bindraw. All Rights Reserved.
1+ // Copyright 2025 Andrew Bindraw. All Rights Reserved.
22
33#include " ProjectVersionFromGitBPLibrary.h"
4- #include " ProjectVersionFromGit.h"
54
65FText UProjectVersionFromGitBPLibrary::ProjectVersion = FText::GetEmpty();
76FText UProjectVersionFromGitBPLibrary::ProjectVersionFormatAll = FText::GetEmpty();
@@ -18,12 +17,29 @@ FString UProjectVersionFromGitBPLibrary::VersionFileIni = FString(TEXT("Version.
1817
1918FString UProjectVersionFromGitBPLibrary::GitStdOutput = FString(TEXT(" " ));
2019
21- DEFINE_LOG_CATEGORY (ProjectVersionFromGit )
20+ DEFINE_LOG_CATEGORY (LogProjectVersionFromGitBPLibrary )
2221
2322UProjectVersionFromGitBPLibrary::UProjectVersionFromGitBPLibrary(const FObjectInitializer& ObjectInitializer)
2423: Super(ObjectInitializer)
2524{
26- GetProjectVersionInfo (FParseVersionDelegate ());
25+
26+ }
27+
28+ void UProjectVersionFromGitBPLibrary::PostInitProperties ()
29+ {
30+ Super::PostInitProperties ();
31+
32+ UProjectVersionGitSettings::OnPostInitPropertiesCompleted.AddLambda ([]()
33+ {
34+ GetProjectVersionInfo (FParseVersionDelegate ());
35+ });
36+
37+ #if WITH_EDITOR
38+ UProjectVersionGitSettings::OnPostEditChangePropertyCompleted.AddLambda ([]()
39+ {
40+ GetProjectVersionInfo (FParseVersionDelegate ());
41+ });
42+ #endif
2743}
2844
2945bool UProjectVersionFromGitBPLibrary::ExecProcess (const TCHAR* URL, const TCHAR* Params, int32* OutReturnCode, FString* OutStdOut, FString* OutStdErr, const TCHAR* OptionalWorkingDirectory)
@@ -49,20 +65,24 @@ void UProjectVersionFromGitBPLibrary::GetProjectVersionInfo(FParseVersionDelegat
4965
5066 if (GEngine->IsEditor ())
5167 {
68+ const auto Cfg = GetMutableDefault<UProjectVersionGitSettings>();
69+
5270 FString OutStdOut;
5371 FString OutStdErr;
5472 int32 OutReturnCode;
5573 static const FString OptionalWorkingDirectory = FPaths::ConvertRelativePathToFull (FPaths::ProjectDir ());
5674
5775 FString TagNameArg;
5876
59- ExecProcess (TEXT (" git" ), TEXT (" rev-list --tags --max-count=1" ), &OutReturnCode, &OutStdOut, &OutStdErr, *OptionalWorkingDirectory);
77+ UE_LOG (LogProjectVersionFromGitBPLibrary, Log, TEXT (" -------- Cfg->GitBinPath: %s" ), *Cfg->GitBinPath );
78+
79+ ExecProcess (*Cfg->GitBinPath , TEXT (" rev-list --tags --max-count=1" ), &OutReturnCode, &OutStdOut, &OutStdErr, *OptionalWorkingDirectory);
6080 OutStdOut.TrimStartAndEndInline ();
6181
6282 TagNameArg = FString (TEXT (" describe --tags " )) + OutStdOut;
63- ExecProcess (TEXT ( " git " ) , *TagNameArg, &OutReturnCode, &OutStdOut, &OutStdErr, *OptionalWorkingDirectory);
83+ ExecProcess (*Cfg-> GitBinPath , *TagNameArg, &OutReturnCode, &OutStdOut, &OutStdErr, *OptionalWorkingDirectory);
6484 OutStdOut.TrimStartAndEndInline ();
65- // UE_LOG(ProjectVersionFromGit , Log, TEXT("-------- Git tag: %s"), *OutStdOut);
85+ // UE_LOG(LogProjectVersionFromGitBPLibrary , Log, TEXT("-------- Git tag: %s"), *OutStdOut);
6686
6787 const FRegexPattern myPattern (TEXT (" ([0-9]\\ .[0-9]\\ .[0-9])+" ));
6888 FRegexMatcher myMatcher (myPattern, OutStdOut);
@@ -71,10 +91,10 @@ void UProjectVersionFromGitBPLibrary::GetProjectVersionInfo(FParseVersionDelegat
7191 {
7292 int32 beginPos = myMatcher.GetMatchBeginning ();
7393 int32 endPos = myMatcher.GetMatchEnding ();
74- // UE_LOG(ProjectVersionFromGit , Log, TEXT("Regex git tag pos: %i %i"), beginPos, endPos);
94+ // UE_LOG(LogProjectVersionFromGitBPLibrary , Log, TEXT("Regex git tag pos: %i %i"), beginPos, endPos);
7595 OutStdOut = OutStdOut.Mid (beginPos, endPos - beginPos);
7696 }
77- UE_LOG (ProjectVersionFromGit , Log, TEXT (" -------- Git tag: %s" ), *OutStdOut);
97+ UE_LOG (LogProjectVersionFromGitBPLibrary , Log, TEXT (" -------- Git tag: %s" ), *OutStdOut);
7898
7999 if (OutStdOut.IsEmpty ())
80100 {
@@ -105,7 +125,7 @@ void UProjectVersionFromGitBPLibrary::GetProjectVersionInfo(FParseVersionDelegat
105125
106126
107127 // Get BranchName
108- ExecProcess (TEXT ( " git " ) , TEXT (" symbolic-ref --short HEAD" ), &OutReturnCode, &OutStdOut, &OutStdErr, *OptionalWorkingDirectory);
128+ ExecProcess (*Cfg-> GitBinPath , TEXT (" symbolic-ref --short HEAD" ), &OutReturnCode, &OutStdOut, &OutStdErr, *OptionalWorkingDirectory);
109129 OutStdOut.TrimStartAndEndInline ();
110130 if (OutStdOut.IsEmpty ())
111131 {
@@ -118,12 +138,12 @@ void UProjectVersionFromGitBPLibrary::GetProjectVersionInfo(FParseVersionDelegat
118138 OutStdOut = FString (TEXT (" " ));
119139
120140 // Get CommitHash
121- ExecProcess (TEXT ( " git " ) , TEXT (" status --short" ), &OutReturnCode, &OutStdOut, &OutStdErr, *OptionalWorkingDirectory);
141+ ExecProcess (*Cfg-> GitBinPath , TEXT (" status --short" ), &OutReturnCode, &OutStdOut, &OutStdErr, *OptionalWorkingDirectory);
122142 OutStdOut.TrimStartAndEndInline ();
123143 GitStdOutput = OutStdOut;
124144 OutStdOut.Reset ();
125145
126- ExecProcess (TEXT ( " git " ) , TEXT (" describe --always --abbrev=8" ), &OutReturnCode, &OutStdOut, &OutStdErr, *OptionalWorkingDirectory);
146+ ExecProcess (*Cfg-> GitBinPath , TEXT (" describe --always --abbrev=8" ), &OutReturnCode, &OutStdOut, &OutStdErr, *OptionalWorkingDirectory);
127147 OutStdOut.TrimStartAndEndInline ();
128148
129149 if (GitStdOutput.IsEmpty ())
@@ -143,7 +163,7 @@ void UProjectVersionFromGitBPLibrary::GetProjectVersionInfo(FParseVersionDelegat
143163
144164 if (!GitStdOutput.IsEmpty ())
145165 {
146- UE_LOG (ProjectVersionFromGit , Warning, TEXT (" -------- Git status --short: %s" ), *GitStdOutput);
166+ UE_LOG (LogProjectVersionFromGitBPLibrary , Warning, TEXT (" -------- Git status --short: %s" ), *GitStdOutput);
147167 }
148168
149169 FConfigFile ConfigFile;
@@ -266,18 +286,16 @@ void UProjectVersionFromGitBPLibrary::GetProjectVersionInfo(FParseVersionDelegat
266286 );
267287 }
268288
269- #if PLATFORM_WINDOWS
270- UE_LOG (ProjectVersionFromGit, Log, TEXT (" -------- ProjectVersion: %s" ), *ProjectVersion.ToString ());
271- UE_LOG (ProjectVersionFromGit, Log, TEXT (" -------- Major: %d" ), Major);
272- UE_LOG (ProjectVersionFromGit, Log, TEXT (" -------- Minor: %d" ), Minor);
273- UE_LOG (ProjectVersionFromGit, Log, TEXT (" -------- Patch: %d" ), Patch);
274- UE_LOG (ProjectVersionFromGit, Log, TEXT (" -------- BranchName: %s" ), *BranchName.ToString ());
275- UE_LOG (ProjectVersionFromGit, Log, TEXT (" -------- CommitHash: %s" ), *CommitHash.ToString ());
276- UE_LOG (ProjectVersionFromGit, Log, TEXT (" -------- DateTimeBuild: %s" ), *DateTimeBuild.ToString ());
277- UE_LOG (ProjectVersionFromGit, Log, TEXT (" -------- ProjectVersionFormatAll: %s" ), *ProjectVersionFormatAll.ToString ());
278- // UE_LOG(ProjectVersionFromGit, Log, TEXT("-------- GGameIni: %s"), *GGameIni);
279- // UE_LOG(ProjectVersionFromGit, Log, TEXT("-------- VersionFileIniPath: %s"), *VersionFileIniPath);
280- #endif
289+ UE_LOG (LogProjectVersionFromGitBPLibrary, Log, TEXT (" -------- ProjectVersion: %s" ), *ProjectVersion.ToString ());
290+ UE_LOG (LogProjectVersionFromGitBPLibrary, Log, TEXT (" -------- Major: %d" ), Major);
291+ UE_LOG (LogProjectVersionFromGitBPLibrary, Log, TEXT (" -------- Minor: %d" ), Minor);
292+ UE_LOG (LogProjectVersionFromGitBPLibrary, Log, TEXT (" -------- Patch: %d" ), Patch);
293+ UE_LOG (LogProjectVersionFromGitBPLibrary, Log, TEXT (" -------- BranchName: %s" ), *BranchName.ToString ());
294+ UE_LOG (LogProjectVersionFromGitBPLibrary, Log, TEXT (" -------- CommitHash: %s" ), *CommitHash.ToString ());
295+ UE_LOG (LogProjectVersionFromGitBPLibrary, Log, TEXT (" -------- DateTimeBuild: %s" ), *DateTimeBuild.ToString ());
296+ UE_LOG (LogProjectVersionFromGitBPLibrary, Log, TEXT (" -------- ProjectVersionFormatAll: %s" ), *ProjectVersionFormatAll.ToString ());
297+ UE_LOG (LogProjectVersionFromGitBPLibrary, Log, TEXT (" -------- VersionFileIniPath: %s" ), *VersionFileIniPath);
298+
281299 AsyncTask (ENamedThreads::GameThread, [OnCompleted]()
282300 {
283301 OnCompleted.ExecuteIfBound ();
@@ -323,4 +341,4 @@ FText UProjectVersionFromGitBPLibrary::GetProjectVersionDateTimeBuild()
323341FText UProjectVersionFromGitBPLibrary::GetProjectVersionFormatAll ()
324342{
325343 return ProjectVersionFormatAll;
326- }
344+ }
0 commit comments