Skip to content

Commit 6ef455f

Browse files
committed
Add GenerateGitVersionInformation task
1 parent c38c9c0 commit 6ef455f

File tree

4 files changed

+135
-0
lines changed

4 files changed

+135
-0
lines changed
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
namespace GitVersionTask
2+
{
3+
using System;
4+
using System.ComponentModel;
5+
using System.IO;
6+
using GitVersion;
7+
using GitVersion.Helpers;
8+
using Microsoft.Build.Framework;
9+
10+
public class GenerateGitVersionInformation : GitVersionTaskBase
11+
{
12+
TaskLogger logger;
13+
14+
public GenerateGitVersionInformation()
15+
{
16+
logger = new TaskLogger(this);
17+
Logger.SetLoggers(this.LogDebug, this.LogInfo, this.LogWarning, s => this.LogError(s));
18+
}
19+
20+
[Required]
21+
public string SolutionDirectory { get; set; }
22+
23+
[Required]
24+
public string ProjectFile { get; set; }
25+
26+
[Required]
27+
public string IntermediateOutputPath { get; set; }
28+
29+
[Required]
30+
public string Language { get; set; }
31+
32+
[Output]
33+
public string GitVersionInformationFilePath { get; set; }
34+
35+
public bool NoFetch { get; set; }
36+
37+
public override bool Execute()
38+
{
39+
try
40+
{
41+
InnerExecute();
42+
return true;
43+
}
44+
catch (WarningException errorException)
45+
{
46+
logger.LogWarning(errorException.Message);
47+
return true;
48+
}
49+
catch (Exception exception)
50+
{
51+
logger.LogError("Error occurred: " + exception);
52+
return false;
53+
}
54+
finally
55+
{
56+
Logger.Reset();
57+
}
58+
}
59+
60+
void InnerExecute()
61+
{
62+
VersionVariables versionVariables;
63+
if (!ExecuteCore.TryGetVersion(SolutionDirectory, out versionVariables, NoFetch, new Authentication()))
64+
{
65+
return;
66+
}
67+
68+
var fileExtension = GetFileExtension();
69+
var fileName = $"GitVersionInformation.g.{fileExtension}";
70+
71+
if (IntermediateOutputPath == null)
72+
{
73+
fileName = $"GitVersionInformation_{Path.GetFileNameWithoutExtension(ProjectFile)}_{Path.GetRandomFileName()}.g.{fileExtension}";
74+
}
75+
76+
var workingDirectory = IntermediateOutputPath ?? TempFileTracker.TempPath;
77+
78+
GitVersionInformationFilePath = Path.Combine(workingDirectory, fileName);
79+
80+
var generator = new GitVersionInformationGenerator(fileName, workingDirectory, versionVariables, new FileSystem());
81+
generator.Generate();
82+
}
83+
84+
string GetFileExtension()
85+
{
86+
switch (Language)
87+
{
88+
case "C#":
89+
return "cs";
90+
91+
case "F#":
92+
return "fs";
93+
94+
case "VB":
95+
return "vb";
96+
97+
default:
98+
throw new Exception($"Unknown language detected: '{Language}'");
99+
}
100+
}
101+
}
102+
}

src/GitVersionTask/GitVersionTask.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@
6565
</ItemGroup>
6666
<ItemGroup>
6767
<Compile Include="BuildLogger.cs" />
68+
<Compile Include="GenerateGitVersionInformation.cs" />
6869
<Compile Include="GitVersionTaskBase.cs" />
6970
<Compile Include="WriteVersionInfoToBuildLog.cs" />
7071
<Compile Include="GetVersion.cs" />

src/GitVersionTask/NugetAssets/build/GitVersionTask.targets

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@
2222
<UpdateAssemblyInfo Condition=" '$(UpdateAssemblyInfo)' == '' and '$(NCrunch)' != '' ">false</UpdateAssemblyInfo>
2323
<UpdateAssemblyInfo Condition=" '$(UpdateAssemblyInfo)' == '' ">true</UpdateAssemblyInfo>
2424

25+
<!-- Property that enables GenerateGitVersionInformation -->
26+
<GenerateGitVersionInformation Condition=" '$(GenerateGitVersionInformation)' == '' and '$(NCrunch)' != '' ">false</GenerateGitVersionInformation>
27+
<GenerateGitVersionInformation Condition=" '$(GenerateGitVersionInformation)' == '' ">true</GenerateGitVersionInformation>
28+
2529
<!-- Property that enables setting of Version -->
2630
<UpdateVersionProperties Condition=" '$(UpdateVersionProperties)' == '' ">true</UpdateVersionProperties>
2731
<UseFullSemVerForNuGet Condition=" '$(UseFullSemVerForNuGet)' == '' ">false</UseFullSemVerForNuGet>
@@ -36,6 +40,9 @@
3640
<UsingTask
3741
TaskName="GitVersionTask.UpdateAssemblyInfo"
3842
AssemblyFile="$(GitVersionTaskLibrary)GitVersionTask.dll" />
43+
<UsingTask
44+
TaskName="GitVersionTask.GenerateGitVersionInformation"
45+
AssemblyFile="$(GitVersionTaskLibrary)GitVersionTask.dll" />
3946
<UsingTask
4047
TaskName="GitVersionTask.GetVersion"
4148
AssemblyFile="$(GitVersionTaskLibrary)GitVersionTask.dll" />
@@ -67,6 +74,24 @@
6774
</ItemGroup>
6875
</Target>
6976

77+
<Target Name="GenerateGitVersionInformation" BeforeTargets="CoreCompile" Condition="$(GenerateGitVersionInformation) == 'true'">
78+
<GenerateGitVersionInformation
79+
SolutionDirectory="$(GitVersionPath)"
80+
NoFetch="$(GitVersion_NoFetchEnabled)"
81+
ProjectFile="$(MSBuildProjectFullPath)"
82+
IntermediateOutputPath="$(IntermediateOutputPath)"
83+
Language="$(Language)">
84+
<Output
85+
TaskParameter="GitVersionInformationFilePath"
86+
PropertyName="GitVersionInformationFilePath" />
87+
</GenerateGitVersionInformation>
88+
89+
<ItemGroup>
90+
<Compile Include="$(GitVersionInformationFilePath)" />
91+
<FileWrites Include="$(GitVersionInformationFilePath)" />
92+
</ItemGroup>
93+
</Target>
94+
7095
<Target Name="GetVersion" BeforeTargets="CoreCompile;GetAssemblyVersion;GenerateNuspec;_GenerateRestoreProjectSpec;EnsureWixToolsetInstalled" Condition="$(GetVersion) == 'true'">
7196

7297
<GetVersion SolutionDirectory="$(GitVersionPath)" NoFetch="$(GitVersion_NoFetchEnabled)">

src/GitVersionTask/NugetAssets/buildMultiTargeting/GitVersionTask.targets

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@
2121
<UpdateAssemblyInfo Condition=" '$(UpdateAssemblyInfo)' == '' and '$(NCrunch)' != '' ">false</UpdateAssemblyInfo>
2222
<UpdateAssemblyInfo Condition=" '$(UpdateAssemblyInfo)' == '' ">true</UpdateAssemblyInfo>
2323

24+
<!-- Property that enables GenerateGitVersionInformation -->
25+
<GenerateGitVersionInformation Condition=" '$(GenerateGitVersionInformation)' == '' and '$(NCrunch)' != '' ">false</GenerateGitVersionInformation>
26+
<GenerateGitVersionInformation Condition=" '$(GenerateGitVersionInformation)' == '' ">true</GenerateGitVersionInformation>
27+
2428
<GetVersion Condition=" '$(GetVersion)' == '' and '$(NCrunch)' != '' ">false</GetVersion>
2529
<GetVersion Condition=" '$(GetVersion)' == '' ">true</GetVersion>
2630

@@ -34,6 +38,9 @@
3438
<UsingTask
3539
TaskName="GitVersionTask.UpdateAssemblyInfo"
3640
AssemblyFile="$(GitVersionTaskLibrary)GitVersionTask.dll" />
41+
<UsingTask
42+
TaskName="GitVersionTask.GenerateGitVersionInformation"
43+
AssemblyFile="$(GitVersionTaskLibrary)GitVersionTask.dll" />
3744
<UsingTask
3845
TaskName="GitVersionTask.GetVersion"
3946
AssemblyFile="$(GitVersionTaskLibrary)GitVersionTask.dll" />

0 commit comments

Comments
 (0)