Skip to content

Commit 7215f41

Browse files
committed
refactored ExecCommand, moved the prepare and calculate version out of ExeCommand
1 parent 989621f commit 7215f41

File tree

5 files changed

+33
-32
lines changed

5 files changed

+33
-32
lines changed

src/GitVersionCore/GitVersionCalculator.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ public class GitVersionCalculator : IGitVersionCalculator
2020
private readonly IOptions<Arguments> options;
2121
private readonly IGitVersionCacheKeyFactory cacheKeyFactory;
2222

23-
public GitVersionCalculator(ILog log, IConfigProvider configProvider, IBuildServerResolver buildServerResolver,
24-
IGitVersionCache gitVersionCache, INextVersionCalculator nextVersionCalculator, IGitPreparer gitPreparer, IVariableProvider variableProvider,
23+
public GitVersionCalculator(ILog log, IConfigProvider configProvider,
24+
IGitVersionCache gitVersionCache, INextVersionCalculator nextVersionCalculator, IVariableProvider variableProvider,
2525
IOptions<Arguments> options, IGitVersionCacheKeyFactory cacheKeyFactory)
2626
{
2727
this.log = log ?? throw new ArgumentNullException(nameof(log));

src/GitVersionExe/ExecCommand.cs

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,27 +20,20 @@ public class ExecCommand : IExecCommand
2020
private readonly IFileSystem fileSystem;
2121
private readonly IBuildServerResolver buildServerResolver;
2222
private readonly ILog log;
23-
private readonly IGitPreparer gitPreparer;
24-
private readonly IGitVersionCalculator gitVersionCalculator;
2523
private readonly IOptions<Arguments> options;
2624

27-
public ExecCommand(IFileSystem fileSystem, IBuildServerResolver buildServerResolver, ILog log, IGitPreparer gitPreparer, IGitVersionCalculator gitVersionCalculator, IOptions<Arguments> options)
25+
public ExecCommand(IFileSystem fileSystem, IBuildServerResolver buildServerResolver, ILog log, IOptions<Arguments> options)
2826
{
2927
this.fileSystem = fileSystem ?? throw new ArgumentNullException(nameof(fileSystem));
3028
this.buildServerResolver = buildServerResolver ?? throw new ArgumentNullException(nameof(buildServerResolver));
3129
this.log = log ?? throw new ArgumentNullException(nameof(log));
32-
this.gitPreparer = gitPreparer ?? throw new ArgumentNullException(nameof(gitPreparer));
33-
this.gitVersionCalculator = gitVersionCalculator ?? throw new ArgumentNullException(nameof(gitVersionCalculator));
3430
this.options = options ?? throw new ArgumentNullException(nameof(options));
3531
}
3632

37-
public void Execute()
33+
public void Execute(VersionVariables variables)
3834
{
3935
log.Info($"Running on {(RunningOnUnix ? "Unix" : "Windows")}.");
4036

41-
gitPreparer.Prepare();
42-
var variables = gitVersionCalculator.CalculateVersionVariables();
43-
4437
var arguments = options.Value;
4538

4639
if (arguments.Output.Contains(OutputType.BuildServer))

src/GitVersionExe/GitVersionExecutor.cs

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,25 @@ public class GitVersionExecutor : IGitVersionExecutor
1717
private readonly IExecCommand execCommand;
1818
private readonly IConfigProvider configProvider;
1919
private readonly IBuildServerResolver buildServerResolver;
20+
private readonly IGitPreparer gitPreparer;
21+
private readonly IGitVersionCalculator gitVersionCalculator;
2022
private readonly IVersionWriter versionWriter;
2123

22-
public GitVersionExecutor(ILog log, IConfigFileLocator configFileLocator, IVersionWriter versionWriter, IHelpWriter helpWriter,
23-
IExecCommand execCommand, IConfigProvider configProvider, IBuildServerResolver buildServerResolver, IGitPreparer gitPreparer)
24+
public GitVersionExecutor(ILog log, IConfigFileLocator configFileLocator, IConfigProvider configProvider,
25+
IBuildServerResolver buildServerResolver, IGitPreparer gitPreparer, IGitVersionCalculator gitVersionCalculator,
26+
IVersionWriter versionWriter, IHelpWriter helpWriter, IExecCommand execCommand)
2427
{
2528
this.log = log ?? throw new ArgumentNullException(nameof(log));
2629
this.configFileLocator = configFileLocator ?? throw new ArgumentNullException(nameof(configFileLocator));
30+
this.configProvider = configProvider ?? throw new ArgumentNullException(nameof(configFileLocator));
31+
32+
this.buildServerResolver = buildServerResolver ?? throw new ArgumentNullException(nameof(buildServerResolver));
33+
this.gitPreparer = gitPreparer ?? throw new ArgumentNullException(nameof(gitPreparer));
34+
this.gitVersionCalculator = gitVersionCalculator ?? throw new ArgumentNullException(nameof(gitVersionCalculator));
35+
2736
this.versionWriter = versionWriter ?? throw new ArgumentNullException(nameof(versionWriter));
2837
this.helpWriter = helpWriter ?? throw new ArgumentNullException(nameof(helpWriter));
2938
this.execCommand = execCommand ?? throw new ArgumentNullException(nameof(execCommand));
30-
this.configProvider = configProvider ?? throw new ArgumentNullException(nameof(configFileLocator));
31-
this.buildServerResolver = buildServerResolver ?? throw new ArgumentNullException(nameof(buildServerResolver));
3239
}
3340

3441
public int Execute(Arguments arguments)
@@ -50,7 +57,9 @@ private int VerifyArgumentsAndRun(Arguments arguments)
5057
{
5158
if (HandleNonMainCommand(arguments, out var exitCode)) return exitCode;
5259

53-
execCommand.Execute();
60+
gitPreparer.Prepare();
61+
var variables = gitVersionCalculator.CalculateVersionVariables();
62+
execCommand.Execute(variables);
5463
}
5564
catch (WarningException exception)
5665
{

src/GitVersionExe/IExecCommand.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1+
using GitVersion.OutputVariables;
2+
13
namespace GitVersion
24
{
35
public interface IExecCommand
46
{
5-
void Execute();
7+
void Execute(VersionVariables variables);
68
}
79
}

src/GitVersionTask/GitVersionTaskExecutor.cs

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using GitVersion.Logging;
66
using GitVersion.MSBuildTask.Tasks;
77
using GitVersion.OutputFormatters;
8+
using GitVersion.OutputVariables;
89

910
namespace GitVersion.MSBuildTask
1011
{
@@ -13,19 +14,19 @@ public class GitVersionTaskExecutor : IGitVersionTaskExecutor
1314
private readonly IFileSystem fileSystem;
1415
private readonly ILog log;
1516
private readonly IBuildServerResolver buildServerResolver;
16-
private readonly IGitVersionCalculator gitVersionCalculator;
17+
private VersionVariables versionVariables;
1718

18-
public GitVersionTaskExecutor(IFileSystem fileSystem, ILog log, IBuildServerResolver buildServerResolver, IGitVersionCalculator gitVersionCalculator)
19+
public GitVersionTaskExecutor(IFileSystem fileSystem, ILog log, IBuildServerResolver buildServerResolver, IGitVersionCalculator gitVersionCalculator, IGitPreparer preparer)
1920
{
2021
this.fileSystem = fileSystem ?? throw new ArgumentNullException(nameof(fileSystem));
2122
this.log = log ?? throw new ArgumentNullException(nameof(log));
2223
this.buildServerResolver = buildServerResolver ?? throw new ArgumentNullException(nameof(buildServerResolver));
23-
this.gitVersionCalculator = gitVersionCalculator ?? throw new ArgumentNullException(nameof(gitVersionCalculator));
24+
preparer.Prepare();
25+
versionVariables = gitVersionCalculator.CalculateVersionVariables();
2426
}
2527

2628
public void GetVersion(GetVersion task)
2729
{
28-
var versionVariables = gitVersionCalculator.CalculateVersionVariables();
2930
var outputType = typeof(GetVersion);
3031
foreach (var variable in versionVariables)
3132
{
@@ -38,7 +39,6 @@ public void UpdateAssemblyInfo(UpdateAssemblyInfo task)
3839
FileHelper.DeleteTempFiles();
3940
FileHelper.CheckForInvalidFiles(task.CompileFiles, task.ProjectFile);
4041

41-
var versionVariables = gitVersionCalculator.CalculateVersionVariables();
4242
var fileWriteInfo = task.IntermediateOutputPath.GetFileWriteInfo(task.Language, task.ProjectFile, "AssemblyInfo");
4343

4444
task.AssemblyInfoTempFilePath = Path.Combine(fileWriteInfo.WorkingDirectory, fileWriteInfo.FileName);
@@ -50,7 +50,6 @@ public void UpdateAssemblyInfo(UpdateAssemblyInfo task)
5050

5151
public void GenerateGitVersionInformation(GenerateGitVersionInformation task)
5252
{
53-
var versionVariables = gitVersionCalculator.CalculateVersionVariables();
5453
var fileWriteInfo = task.IntermediateOutputPath.GetFileWriteInfo(task.Language, task.ProjectFile, "GitVersionInformation");
5554

5655
task.GitVersionInformationFilePath = Path.Combine(fileWriteInfo.WorkingDirectory, fileWriteInfo.FileName);
@@ -62,17 +61,15 @@ public void WriteVersionInfoToBuildLog(WriteVersionInfoToBuildLog task)
6261
{
6362
var logger = task.Log;
6463

65-
var versionVariables = gitVersionCalculator.CalculateVersionVariables();
6664
var buildServer = buildServerResolver.Resolve();
67-
if (buildServer != null)
65+
if (buildServer == null) return;
66+
67+
logger.LogMessage($"Executing GenerateSetVersionMessage for '{buildServer.GetType().Name}'.");
68+
logger.LogMessage(buildServer.GenerateSetVersionMessage(versionVariables));
69+
logger.LogMessage($"Executing GenerateBuildLogOutput for '{buildServer.GetType().Name}'.");
70+
foreach (var buildParameter in BuildOutputFormatter.GenerateBuildLogOutput(buildServer, versionVariables))
6871
{
69-
logger.LogMessage($"Executing GenerateSetVersionMessage for '{buildServer.GetType().Name}'.");
70-
logger.LogMessage(buildServer.GenerateSetVersionMessage(versionVariables));
71-
logger.LogMessage($"Executing GenerateBuildLogOutput for '{buildServer.GetType().Name}'.");
72-
foreach (var buildParameter in BuildOutputFormatter.GenerateBuildLogOutput(buildServer, versionVariables))
73-
{
74-
logger.LogMessage(buildParameter);
75-
}
72+
logger.LogMessage(buildParameter);
7673
}
7774
}
7875
}

0 commit comments

Comments
 (0)