Skip to content

Commit 0c142fe

Browse files
arturcicBi0T1N
authored andcommitted
simplified GitVersionTaskBase
1 parent 207a69e commit 0c142fe

File tree

9 files changed

+18
-51
lines changed

9 files changed

+18
-51
lines changed

src/GitVersion.MsBuild.Tests/Helpers/MsBuildTaskFixture.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public MsBuildTaskFixtureResult<T> Execute<T>(T task) where T : GitVersionTaskBa
2323

2424
task.VersionFile = versionFile;
2525

26-
var result = task.Execute();
26+
var result = GitVersionTasks.Execute(task);
2727

2828
return new MsBuildTaskFixtureResult<T>(fixture)
2929
{

src/GitVersion.MsBuild.Tests/Tasks/TestTaskBase.cs

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
using GitVersion.Agents;
22
using GitVersion.Configuration;
33
using GitVersion.Core.Tests.Helpers;
4-
using GitVersion.Extensions;
54
using GitVersion.Helpers;
65
using GitVersion.MsBuild.Tests.Helpers;
7-
using GitVersion.Output;
86
using LibGit2Sharp;
97
using Microsoft.Build.Utilities.ProjectCreation;
108

@@ -22,7 +20,6 @@ protected static MsBuildTaskFixtureResult<T> ExecuteMsBuildTask<T>(T task) where
2220
{
2321
var fixture = CreateLocalRepositoryFixture();
2422
task.SolutionDirectory = fixture.RepositoryPath;
25-
AddOverrides(task);
2623
var msbuildFixture = new MsBuildTaskFixture(fixture);
2724
var result = msbuildFixture.Execute(task);
2825
if (!result.Success) Console.WriteLine(result.Log);
@@ -46,7 +43,6 @@ protected static MsBuildTaskFixtureResult<T> ExecuteMsBuildTaskInAzurePipeline<T
4643
{
4744
var fixture = CreateRemoteRepositoryFixture();
4845
task.SolutionDirectory = fixture.LocalRepositoryFixture.RepositoryPath;
49-
AddOverrides(task);
5046
var msbuildFixture = new MsBuildTaskFixture(fixture);
5147
var environmentVariables = env.ToList();
5248
if (buildNumber != null)
@@ -69,7 +65,6 @@ protected static MsBuildTaskFixtureResult<T> ExecuteMsBuildTaskInGitHubActions<T
6965
{
7066
var fixture = CreateRemoteRepositoryFixture();
7167
task.SolutionDirectory = fixture.LocalRepositoryFixture.RepositoryPath;
72-
AddOverrides(task);
7368
var msbuildFixture = new MsBuildTaskFixture(fixture);
7469
msbuildFixture.WithEnv(new KeyValuePair<string, string?>("GITHUB_ACTIONS", "true"));
7570
var result = msbuildFixture.Execute(task);
@@ -92,12 +87,6 @@ protected static MsBuildExeFixtureResult ExecuteMsBuildExeInAzurePipeline(Action
9287
if (!result.MsBuild.OverallSuccess) Console.WriteLine(result.Output);
9388
return result;
9489
}
95-
private static void AddOverrides(GitVersionTaskBase task) =>
96-
task.WithOverrides(services =>
97-
{
98-
services.AddModule(new GitVersionBuildAgentsModule());
99-
services.AddModule(new GitVersionOutputModule());
100-
});
10190

10291
private static EmptyRepositoryFixture CreateLocalRepositoryFixture()
10392
{

src/GitVersion.MsBuild/GitVersionTaskBase.cs

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using Microsoft.Build.Framework;
22
using Microsoft.Build.Utilities;
3-
using Microsoft.Extensions.DependencyInjection;
43

54
namespace GitVersion.MsBuild;
65

@@ -18,11 +17,5 @@ public abstract class GitVersionTaskBase : ITask
1817

1918
public TaskLoggingHelper Log { get; }
2019

21-
public bool Execute() => OnExecute();
22-
23-
protected abstract bool OnExecute();
24-
25-
public Action<IServiceCollection>? Overrides { get; set; }
26-
27-
public void WithOverrides(Action<IServiceCollection> overrides) => Overrides = overrides;
20+
public bool Execute() => GitVersionTasks.Execute(this);
2821
}

src/GitVersion.MsBuild/GitVersionTasks.cs

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,24 +11,27 @@ namespace GitVersion.MsBuild;
1111

1212
internal static class GitVersionTasks
1313
{
14-
public static bool GetVersion(GetVersion task) => ExecuteGitVersionTask(task, executor => executor.GetVersion(task));
15-
16-
public static bool UpdateAssemblyInfo(UpdateAssemblyInfo task) => ExecuteGitVersionTask(task, executor => executor.UpdateAssemblyInfo(task));
17-
18-
public static bool GenerateGitVersionInformation(GenerateGitVersionInformation task) => ExecuteGitVersionTask(task, executor => executor.GenerateGitVersionInformation(task));
19-
20-
public static bool WriteVersionInfoToBuildLog(WriteVersionInfoToBuildLog task) => ExecuteGitVersionTask(task, executor => executor.WriteVersionInfoToBuildLog(task));
14+
public static bool Execute(GitVersionTaskBase task)
15+
{
16+
var serviceProvider = BuildServiceProvider(task);
17+
var executor = serviceProvider.GetRequiredService<IGitVersionTaskExecutor>();
18+
return task switch
19+
{
20+
GetVersion getVersion => ExecuteGitVersionTask(getVersion, () => executor.GetVersion(getVersion)),
21+
UpdateAssemblyInfo updateAssemblyInfo => ExecuteGitVersionTask(updateAssemblyInfo, () => executor.UpdateAssemblyInfo(updateAssemblyInfo)),
22+
GenerateGitVersionInformation generateGitVersionInformation => ExecuteGitVersionTask(generateGitVersionInformation, () => executor.GenerateGitVersionInformation(generateGitVersionInformation)),
23+
WriteVersionInfoToBuildLog writeVersionInfoToBuildLog => ExecuteGitVersionTask(writeVersionInfoToBuildLog, () => executor.WriteVersionInfoToBuildLog(writeVersionInfoToBuildLog)),
24+
_ => throw new NotSupportedException($"Task type {task.GetType().Name} is not supported")
25+
};
26+
}
2127

22-
private static bool ExecuteGitVersionTask<T>(T task, Action<IGitVersionTaskExecutor> action)
28+
private static bool ExecuteGitVersionTask<T>(T task, Action action)
2329
where T : GitVersionTaskBase
2430
{
2531
var taskLog = task.Log;
2632
try
2733
{
28-
var sp = BuildServiceProvider(task);
29-
var gitVersionTaskExecutor = sp.GetRequiredService<IGitVersionTaskExecutor>();
30-
31-
action(gitVersionTaskExecutor);
34+
action();
3235
}
3336
catch (WarningException errorException)
3437
{
@@ -75,7 +78,6 @@ private static IServiceProvider BuildServiceProvider(GitVersionTaskBase task)
7578
services.AddModule(new GitVersionOutputModule());
7679
services.AddModule(new GitVersionMsBuildModule());
7780
services.AddSingleton<IConsole>(new MsBuildAdapter(task.Log));
78-
task.Overrides?.Invoke(services);
7981

8082
var sp = services.BuildServiceProvider();
8183
Configure(sp, task);

src/GitVersion.MsBuild/PublicAPI.Shipped.txt

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
#nullable enable
2-
abstract GitVersion.MsBuild.GitVersionTaskBase.OnExecute() -> bool
32
GitVersion.MsBuild.GitVersionMsBuildModule
43
GitVersion.MsBuild.GitVersionMsBuildModule.GitVersionMsBuildModule() -> void
54
GitVersion.MsBuild.GitVersionMsBuildModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void
@@ -11,13 +10,10 @@ GitVersion.MsBuild.GitVersionTaskBase.GitVersionTaskBase() -> void
1110
GitVersion.MsBuild.GitVersionTaskBase.HostObject.get -> Microsoft.Build.Framework.ITaskHost!
1211
GitVersion.MsBuild.GitVersionTaskBase.HostObject.set -> void
1312
GitVersion.MsBuild.GitVersionTaskBase.Log.get -> Microsoft.Build.Utilities.TaskLoggingHelper!
14-
GitVersion.MsBuild.GitVersionTaskBase.Overrides.get -> System.Action<Microsoft.Extensions.DependencyInjection.IServiceCollection!>?
15-
GitVersion.MsBuild.GitVersionTaskBase.Overrides.set -> void
1613
GitVersion.MsBuild.GitVersionTaskBase.SolutionDirectory.get -> string!
1714
GitVersion.MsBuild.GitVersionTaskBase.SolutionDirectory.set -> void
1815
GitVersion.MsBuild.GitVersionTaskBase.VersionFile.get -> string!
1916
GitVersion.MsBuild.GitVersionTaskBase.VersionFile.set -> void
20-
GitVersion.MsBuild.GitVersionTaskBase.WithOverrides(System.Action<Microsoft.Extensions.DependencyInjection.IServiceCollection!>! overrides) -> void
2117
GitVersion.MsBuild.Tasks.GenerateGitVersionInformation
2218
GitVersion.MsBuild.Tasks.GenerateGitVersionInformation.GenerateGitVersionInformation() -> void
2319
GitVersion.MsBuild.Tasks.GenerateGitVersionInformation.GitVersionInformationFilePath.get -> string!
@@ -98,7 +94,3 @@ GitVersion.MsBuild.Tasks.UpdateAssemblyInfo.ProjectFile.set -> void
9894
GitVersion.MsBuild.Tasks.UpdateAssemblyInfo.UpdateAssemblyInfo() -> void
9995
GitVersion.MsBuild.Tasks.WriteVersionInfoToBuildLog
10096
GitVersion.MsBuild.Tasks.WriteVersionInfoToBuildLog.WriteVersionInfoToBuildLog() -> void
101-
override GitVersion.MsBuild.Tasks.GenerateGitVersionInformation.OnExecute() -> bool
102-
override GitVersion.MsBuild.Tasks.GetVersion.OnExecute() -> bool
103-
override GitVersion.MsBuild.Tasks.UpdateAssemblyInfo.OnExecute() -> bool
104-
override GitVersion.MsBuild.Tasks.WriteVersionInfoToBuildLog.OnExecute() -> bool

src/GitVersion.MsBuild/Tasks/GenerateGitVersionInformation.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,4 @@ public class GenerateGitVersionInformation : GitVersionTaskBase
1919

2020
[Output]
2121
public string GitVersionInformationFilePath { get; set; }
22-
23-
protected override bool OnExecute() => GitVersionTasks.GenerateGitVersionInformation(this);
2422
}

src/GitVersion.MsBuild/Tasks/GetVersion.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,4 @@ public class GetVersion : GitVersionTaskBase
7878

7979
[Output]
8080
public string UncommittedChanges { get; set; }
81-
82-
protected override bool OnExecute() => GitVersionTasks.GetVersion(this);
8381
}

src/GitVersion.MsBuild/Tasks/UpdateAssemblyInfo.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,4 @@ public class UpdateAssemblyInfo : GitVersionTaskBase
1818

1919
[Output]
2020
public string AssemblyInfoTempFilePath { get; set; }
21-
22-
protected override bool OnExecute() => GitVersionTasks.UpdateAssemblyInfo(this);
2321
}
Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
11
namespace GitVersion.MsBuild.Tasks;
22

3-
public class WriteVersionInfoToBuildLog : GitVersionTaskBase
4-
{
5-
protected override bool OnExecute() => GitVersionTasks.WriteVersionInfoToBuildLog(this);
6-
}
3+
public class WriteVersionInfoToBuildLog : GitVersionTaskBase;

0 commit comments

Comments
 (0)