Skip to content

Commit a2299d0

Browse files
committed
use configuration builder in init module
1 parent 8d8496c commit a2299d0

23 files changed

+83
-71
lines changed

src/GitVersion.Core/Configuration/ConfigurationProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public void Init(string workingDirectory)
4444
var configFilePath = PathHelper.Combine(workingDirectory, fileName);
4545
var currentConfiguration = this.configFileLocator.ReadConfiguration(configFilePath);
4646

47-
var configuration = this.configInitWizard.Run((GitVersionConfiguration) currentConfiguration, workingDirectory);
47+
var configuration = this.configInitWizard.Run(currentConfiguration, workingDirectory);
4848
if (configuration == null) return;
4949

5050
using var stream = this.fileSystem.OpenWrite(configFilePath);

src/GitVersion.Core/Configuration/Init/BuildServer/AppVeyorSetup.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public AppVeyorSetup WithData(ProjectVisibility visibility)
1818
return this;
1919
}
2020

21-
protected override StepResult HandleResult(string? result, Queue<ConfigInitWizardStep> steps, GitVersionConfiguration configuration, string workingDirectory)
21+
protected override StepResult HandleResult(string? result, Queue<ConfigInitWizardStep> steps, ConfigurationBuilder configurationBuilder, string workingDirectory)
2222
{
2323
var editConfigStep = this.StepFactory.CreateStep<EditConfigStep>();
2424
switch (result)
@@ -80,7 +80,7 @@ private void WriteConfig(string workingDirectory, IFileSystem fileSystem, string
8080
this.Log.Info($"AppVeyor sample configuration file written to {outputFilename}");
8181
}
8282

83-
protected override string GetPrompt(GitVersionConfiguration configuration, string workingDirectory)
83+
protected override string GetPrompt(ConfigurationBuilder configurationBuilder, string workingDirectory)
8484
{
8585
var prompt = new StringBuilder();
8686
if (AppVeyorConfigExists(workingDirectory, this.FileSystem))

src/GitVersion.Core/Configuration/Init/BuildServer/AppveyorPublicPrivate.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public AppveyorPublicPrivate(IConsole console, IFileSystem fileSystem, ILog log,
99
{
1010
}
1111

12-
protected override StepResult HandleResult(string? result, Queue<ConfigInitWizardStep> steps, GitVersionConfiguration configuration, string workingDirectory)
12+
protected override StepResult HandleResult(string? result, Queue<ConfigInitWizardStep> steps, ConfigurationBuilder configurationBuilder, string workingDirectory)
1313
{
1414
switch (result)
1515
{
@@ -26,7 +26,7 @@ protected override StepResult HandleResult(string? result, Queue<ConfigInitWizar
2626
return StepResult.Ok();
2727
}
2828

29-
protected override string GetPrompt(GitVersionConfiguration configuration, string workingDirectory) => @"Is your project public or private?
29+
protected override string GetPrompt(ConfigurationBuilder configurationBuilder, string workingDirectory) => @"Is your project public or private?
3030
3131
That is ... does it require authentication to clone/pull?
3232

src/GitVersion.Core/Configuration/Init/BuildServer/SetupBuildScripts.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public SetupBuildScripts(IConsole console, IFileSystem fileSystem, ILog log, ICo
99
{
1010
}
1111

12-
protected override StepResult HandleResult(string? result, Queue<ConfigInitWizardStep> steps, GitVersionConfiguration configuration, string workingDirectory)
12+
protected override StepResult HandleResult(string? result, Queue<ConfigInitWizardStep> steps, ConfigurationBuilder configurationBuilder, string workingDirectory)
1313
{
1414
switch (result)
1515
{
@@ -23,7 +23,7 @@ protected override StepResult HandleResult(string? result, Queue<ConfigInitWizar
2323
return StepResult.Ok();
2424
}
2525

26-
protected override string GetPrompt(GitVersionConfiguration configuration, string workingDirectory) => @"What build server are you using?
26+
protected override string GetPrompt(ConfigurationBuilder configurationBuilder, string workingDirectory) => @"What build server are you using?
2727
2828
Want to see more? Contribute a pull request!
2929

src/GitVersion.Core/Configuration/Init/EditConfigStep.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55

66
namespace GitVersion.Configuration.Init;
77

8-
public class EditConfigStep : ConfigInitWizardStep
8+
internal class EditConfigStep : ConfigInitWizardStep
99
{
1010
public EditConfigStep(IConsole console, IFileSystem fileSystem, ILog log, IConfigInitStepFactory stepFactory) : base(console, fileSystem, log, stepFactory)
1111
{
1212
}
1313

14-
protected override StepResult HandleResult(string? result, Queue<ConfigInitWizardStep> steps, GitVersionConfiguration configuration, string workingDirectory)
14+
protected override StepResult HandleResult(string? result, Queue<ConfigInitWizardStep> steps, ConfigurationBuilder configurationBuilder, string workingDirectory)
1515
{
1616
switch (result)
1717
{
@@ -45,7 +45,10 @@ protected override StepResult HandleResult(string? result, Queue<ConfigInitWizar
4545
return StepResult.InvalidResponseSelected();
4646
}
4747

48-
protected override string GetPrompt(GitVersionConfiguration configuration, string workingDirectory) => $@"Which would you like to change?
48+
protected override string GetPrompt(ConfigurationBuilder configurationBuilder, string workingDirectory)
49+
{
50+
var configuration = configurationBuilder.Build();
51+
return $@"Which would you like to change?
4952
5053
0) Save changes and exit
5154
1) Exit without saving
@@ -57,6 +60,7 @@ protected override string GetPrompt(GitVersionConfiguration configuration, strin
5760
5) Branch Increment mode (per commit/after tag) (Current: {configuration.VersioningMode ?? VersionCalculation.VersioningMode.ContinuousDeployment})
5861
6) Assembly versioning scheme (Current: {configuration.AssemblyVersioningScheme})
5962
7) Setup build scripts";
63+
}
6064

6165
protected override string? DefaultResult => null;
6266
}

src/GitVersion.Core/Configuration/Init/SetConfig/AssemblyVersioningSchemeSetting.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44

55
namespace GitVersion.Configuration.Init.SetConfig;
66

7-
public class AssemblyVersioningSchemeSetting : ConfigInitWizardStep
7+
internal class AssemblyVersioningSchemeSetting : ConfigInitWizardStep
88
{
99
public AssemblyVersioningSchemeSetting(IConsole console, IFileSystem fileSystem, ILog log, IConfigInitStepFactory stepFactory) : base(console, fileSystem, log, stepFactory)
1010
{
1111
}
1212

13-
protected override StepResult HandleResult(string? result, Queue<ConfigInitWizardStep> steps, GitVersionConfiguration configuration, string workingDirectory)
13+
protected override StepResult HandleResult(string? result, Queue<ConfigInitWizardStep> steps, ConfigurationBuilder configurationBuilder, string workingDirectory)
1414
{
1515
var editConfigStep = this.StepFactory.CreateStep<EditConfigStep>();
1616
switch (result)
@@ -19,31 +19,31 @@ protected override StepResult HandleResult(string? result, Queue<ConfigInitWizar
1919
steps.Enqueue(editConfigStep);
2020
return StepResult.Ok();
2121
case "1":
22-
configuration.AssemblyVersioningScheme = AssemblyVersioningScheme.Major;
22+
configurationBuilder.WithAssemblyVersioningScheme(AssemblyVersioningScheme.Major);
2323
steps.Enqueue(editConfigStep);
2424
return StepResult.Ok();
2525
case "2":
26-
configuration.AssemblyVersioningScheme = AssemblyVersioningScheme.MajorMinor;
26+
configurationBuilder.WithAssemblyVersioningScheme(AssemblyVersioningScheme.MajorMinor);
2727
steps.Enqueue(editConfigStep);
2828
return StepResult.Ok();
2929
case "3":
30-
configuration.AssemblyVersioningScheme = AssemblyVersioningScheme.MajorMinorPatch;
30+
configurationBuilder.WithAssemblyVersioningScheme(AssemblyVersioningScheme.MajorMinorPatch);
3131
steps.Enqueue(editConfigStep);
3232
return StepResult.Ok();
3333
case "4":
34-
configuration.AssemblyVersioningScheme = AssemblyVersioningScheme.MajorMinorPatchTag;
34+
configurationBuilder.WithAssemblyVersioningScheme(AssemblyVersioningScheme.MajorMinorPatchTag);
3535
steps.Enqueue(editConfigStep);
3636
return StepResult.Ok();
3737
case "5":
38-
configuration.AssemblyVersioningScheme = AssemblyVersioningScheme.None;
38+
configurationBuilder.WithAssemblyVersioningScheme(AssemblyVersioningScheme.None);
3939
steps.Enqueue(editConfigStep);
4040
return StepResult.Ok();
4141
}
4242

4343
return StepResult.InvalidResponseSelected();
4444
}
4545

46-
protected override string GetPrompt(GitVersionConfiguration configuration, string workingDirectory) => @"What assembly versioning scheme do you want to use:
46+
protected override string GetPrompt(ConfigurationBuilder configurationBuilder, string workingDirectory) => @"What assembly versioning scheme do you want to use:
4747
4848
0) Go Back
4949
1) Major.0.0.0

src/GitVersion.Core/Configuration/Init/SetConfig/ConfigureBranch.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
namespace GitVersion.Configuration.Init.SetConfig;
55

6-
public class ConfigureBranch : ConfigInitWizardStep
6+
internal class ConfigureBranch : ConfigInitWizardStep
77
{
88
private string name;
99
private BranchConfiguration branchConfiguration;
@@ -19,7 +19,7 @@ public ConfigureBranch WithData(string configName, BranchConfiguration configura
1919
return this;
2020
}
2121

22-
protected override StepResult HandleResult(string? result, Queue<ConfigInitWizardStep> steps, GitVersionConfiguration configuration, string workingDirectory)
22+
protected override StepResult HandleResult(string? result, Queue<ConfigInitWizardStep> steps, ConfigurationBuilder configurationBuilder, string workingDirectory)
2323
{
2424
switch (result)
2525
{
@@ -37,7 +37,7 @@ protected override StepResult HandleResult(string? result, Queue<ConfigInitWizar
3737
return StepResult.InvalidResponseSelected();
3838
}
3939

40-
protected override string GetPrompt(GitVersionConfiguration configuration, string workingDirectory) => $@"What would you like to change for '{this.name}':
40+
protected override string GetPrompt(ConfigurationBuilder configurationBuilder, string workingDirectory) => $@"What would you like to change for '{this.name}':
4141
4242
0) Go Back
4343
1) Branch Pr-release tag (Current: {this.branchConfiguration.Label})

src/GitVersion.Core/Configuration/Init/SetConfig/ConfigureBranches.cs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33

44
namespace GitVersion.Configuration.Init.SetConfig;
55

6-
public class ConfigureBranches : ConfigInitWizardStep
6+
internal class ConfigureBranches : ConfigInitWizardStep
77
{
88
public ConfigureBranches(IConsole console, IFileSystem fileSystem, ILog log, IConfigInitStepFactory stepFactory) : base(console, fileSystem, log, stepFactory)
99
{
1010
}
1111

12-
protected override StepResult HandleResult(string? result, Queue<ConfigInitWizardStep> steps, GitVersionConfiguration configuration, string workingDirectory)
12+
protected override StepResult HandleResult(string? result, Queue<ConfigInitWizardStep> steps, ConfigurationBuilder configurationBuilder, string workingDirectory)
1313
{
1414
if (int.TryParse(result, out var parsed))
1515
{
@@ -21,12 +21,13 @@ protected override StepResult HandleResult(string? result, Queue<ConfigInitWizar
2121

2222
try
2323
{
24+
var configuration = configurationBuilder.Build();
2425
var foundBranch = OrderedBranches(configuration).ElementAt(parsed - 1);
2526
var branchConfiguration = foundBranch.Value;
2627
if (branchConfiguration is null)
2728
{
2829
branchConfiguration = new BranchConfiguration();
29-
configuration.Branches.Add(foundBranch.Key, branchConfiguration);
30+
configurationBuilder.WithBranch(foundBranch.Key, builder => builder.WithConfiguration(branchConfiguration));
3031
}
3132
steps.Enqueue(this.StepFactory.CreateStep<ConfigureBranch>().WithData(foundBranch.Key, branchConfiguration));
3233
return StepResult.Ok();
@@ -38,10 +39,14 @@ protected override StepResult HandleResult(string? result, Queue<ConfigInitWizar
3839
return StepResult.InvalidResponseSelected();
3940
}
4041

41-
protected override string GetPrompt(GitVersionConfiguration configuration, string workingDirectory) => @"Which branch would you like to configure:
42+
protected override string GetPrompt(ConfigurationBuilder configurationBuilder, string workingDirectory)
43+
{
44+
var configuration = configurationBuilder.Build();
45+
return @"Which branch would you like to configure:
4246
4347
0) Go Back
4448
" + string.Join(System.Environment.NewLine, OrderedBranches(configuration).Select((c, i) => $"{i + 1}) {c.Key}"));
49+
}
4550

4651
private static IOrderedEnumerable<KeyValuePair<string, BranchConfiguration>> OrderedBranches(GitVersionConfiguration configuration)
4752
{

src/GitVersion.Core/Configuration/Init/SetConfig/GlobalModeSetting.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
namespace GitVersion.Configuration.Init.SetConfig;
66

7-
public class GlobalModeSetting : ConfigInitWizardStep
7+
internal class GlobalModeSetting : ConfigInitWizardStep
88
{
99
private ConfigInitWizardStep returnToStep;
1010
private bool isPartOfWizard;
@@ -20,20 +20,20 @@ public GlobalModeSetting WithData(ConfigInitWizardStep returnStep, bool isPartOf
2020
return this;
2121
}
2222

23-
protected override StepResult HandleResult(string? result, Queue<ConfigInitWizardStep> steps, GitVersionConfiguration configuration, string workingDirectory)
23+
protected override StepResult HandleResult(string? result, Queue<ConfigInitWizardStep> steps, ConfigurationBuilder configurationBuilder, string workingDirectory)
2424
{
2525
switch (result)
2626
{
2727
case "1":
28-
configuration.VersioningMode = VersioningMode.ContinuousDelivery;
28+
configurationBuilder.WithVersioningMode(VersioningMode.ContinuousDelivery);
2929
steps.Enqueue(this.returnToStep);
3030
return StepResult.Ok();
3131
case "2":
32-
configuration.VersioningMode = VersioningMode.ContinuousDeployment;
32+
configurationBuilder.WithVersioningMode(VersioningMode.ContinuousDeployment);
3333
steps.Enqueue(this.returnToStep);
3434
return StepResult.Ok();
3535
case "3":
36-
configuration.VersioningMode = VersioningMode.Mainline;
36+
configurationBuilder.WithVersioningMode(VersioningMode.Mainline);
3737
steps.Enqueue(this.returnToStep);
3838
return StepResult.Ok();
3939
case "0":
@@ -45,7 +45,7 @@ protected override StepResult HandleResult(string? result, Queue<ConfigInitWizar
4545
return StepResult.InvalidResponseSelected();
4646
}
4747

48-
protected override string GetPrompt(GitVersionConfiguration configuration, string workingDirectory) => $@"What do you want the default increment mode to be (can be override per branch):
48+
protected override string GetPrompt(ConfigurationBuilder configurationBuilder, string workingDirectory) => $@"What do you want the default increment mode to be (can be override per branch):
4949
{(!this.isPartOfWizard ? "0) Go Back" : string.Empty)}
5050
1) Follow SemVer and only increment when a release has been tagged (continuous delivery mode)
5151
2) Increment based on branch configuration every commit (continuous deployment mode)

src/GitVersion.Core/Configuration/Init/SetConfig/SetBranchIncrementMode.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
namespace GitVersion.Configuration.Init.SetConfig;
66

7-
public class SetBranchIncrementMode : ConfigInitWizardStep
7+
internal class SetBranchIncrementMode : ConfigInitWizardStep
88
{
99
private string name;
1010
private BranchConfiguration branchConfiguration;
@@ -20,7 +20,7 @@ public SetBranchIncrementMode WithData(string configName, BranchConfiguration co
2020
return this;
2121
}
2222

23-
protected override StepResult HandleResult(string? result, Queue<ConfigInitWizardStep> steps, GitVersionConfiguration configuration, string workingDirectory)
23+
protected override StepResult HandleResult(string? result, Queue<ConfigInitWizardStep> steps, ConfigurationBuilder configurationBuilder, string workingDirectory)
2424
{
2525
var configureBranchStep = this.StepFactory.CreateStep<ConfigureBranch>();
2626
switch (result)
@@ -41,7 +41,7 @@ protected override StepResult HandleResult(string? result, Queue<ConfigInitWizar
4141
return StepResult.InvalidResponseSelected();
4242
}
4343

44-
protected override string GetPrompt(GitVersionConfiguration configuration, string workingDirectory) => $@"What do you want the increment mode for {this.name} to be?
44+
protected override string GetPrompt(ConfigurationBuilder configurationBuilder, string workingDirectory) => $@"What do you want the increment mode for {this.name} to be?
4545
4646
0) Go Back
4747
1) Follow SemVer and only increment when a release has been tagged (continuous delivery mode)

0 commit comments

Comments
 (0)