Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
0b1c2cc
(build deps): Bump actions/stale from 7 to 8
dependabot[bot] Mar 23, 2023
ad77771
Merge pull request #3448 from GitTools/dependabot/github_actions/acti…
arturcic Mar 24, 2023
20d3752
(deps): Bump JsonSchema.Net.Generation from 3.0.3 to 3.1.0
dependabot[bot] Mar 24, 2023
598b370
Merge pull request #3449 from GitTools/dependabot/nuget/JsonSchema.Ne…
arturcic Mar 25, 2023
27d4d0c
Made GitVersionVariables more like DTO
arturcic Mar 26, 2023
ba059b2
Renamed VersionVariables -> GitVersionVariables
arturcic Mar 26, 2023
23e2390
fixed approved files
arturcic Mar 26, 2023
065a34f
convert GitVersionVariables to record
arturcic Mar 26, 2023
516f2e7
removed ReflectionIgnore attribute from GitVersionVariable
arturcic Mar 26, 2023
83dbf0e
order properties
arturcic Mar 26, 2023
5edab63
added GitVersion.Abstractions
arturcic Mar 19, 2023
2adb521
moved Agents ang Git interfaces
arturcic Mar 26, 2023
8d8496c
moved some Configuration interfaces
arturcic Mar 26, 2023
a2299d0
use configuration builder in init module
arturcic Mar 27, 2023
6401cd4
use BranchConfigurationBuilder
arturcic Mar 28, 2023
683ca38
move more interfaces to Abstractions
arturcic Mar 28, 2023
06d76e5
decoupled modules from core and use abstractions instead
arturcic Mar 28, 2023
ea49bfa
fix api analyzer errors
arturcic Mar 28, 2023
7feae1d
Merge pull request #3451 from arturcic/feature/abstractions
arturcic Mar 28, 2023
488a150
Revert "Added GitVersion.Abstractions module"
arturcic Mar 28, 2023
d187a01
Merge pull request #3452 from GitTools/revert-3451-feature/abstractions
arturcic Mar 29, 2023
059ee5f
made classes that should not be exposed, internal (App, MsBuild and O…
arturcic Mar 29, 2023
8b6f878
use IGitVersionConfiguration instead of GitVersionConfiguration
arturcic Mar 29, 2023
458090a
use IBranchConfiguration instead of BranchConfiguration
arturcic Mar 29, 2023
71e0e98
Merge pull request #3454 from arturcic/feature/configuration
arturcic Mar 29, 2023
1cb9bb8
made classes that should not be exposed, internal (Core)
arturcic Mar 30, 2023
dfa86cb
#2665 - fix issues templates
arturcic Apr 4, 2023
f1ced75
Merge pull request #3457 from arturcic/bug/2665
arturcic Apr 4, 2023
d92fdc9
(ci deps): Bump Cake.Http from 2.0.0 to 3.0.2 in /build
dependabot[bot] Apr 4, 2023
0acceaf
Fix Bug: Branch names cannot contain the word 'refs' #3103
HHobeck Apr 4, 2023
1ef74f4
Merge pull request #3459 from HHobeck/feature/3103_branch-name-cannot…
arturcic Apr 4, 2023
4e6051a
Merge pull request #3458 from GitTools/dependabot/nuget/build/Cake.Ht…
arturcic Apr 4, 2023
eb35aff
Added failing tests for #1255, #1844, #2034, #2454, #2693, #2821, #2786
arturcic Mar 19, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
use configuration builder in init module
  • Loading branch information
arturcic committed Mar 28, 2023
commit a2299d023cb2576df6aa990e2805d8ad3396b776
2 changes: 1 addition & 1 deletion src/GitVersion.Core/Configuration/ConfigurationProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public void Init(string workingDirectory)
var configFilePath = PathHelper.Combine(workingDirectory, fileName);
var currentConfiguration = this.configFileLocator.ReadConfiguration(configFilePath);

var configuration = this.configInitWizard.Run((GitVersionConfiguration) currentConfiguration, workingDirectory);
var configuration = this.configInitWizard.Run(currentConfiguration, workingDirectory);
if (configuration == null) return;

using var stream = this.fileSystem.OpenWrite(configFilePath);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public AppVeyorSetup WithData(ProjectVisibility visibility)
return this;
}

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

protected override string GetPrompt(GitVersionConfiguration configuration, string workingDirectory)
protected override string GetPrompt(ConfigurationBuilder configurationBuilder, string workingDirectory)
{
var prompt = new StringBuilder();
if (AppVeyorConfigExists(workingDirectory, this.FileSystem))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ public AppveyorPublicPrivate(IConsole console, IFileSystem fileSystem, ILog log,
{
}

protected override StepResult HandleResult(string? result, Queue<ConfigInitWizardStep> steps, GitVersionConfiguration configuration, string workingDirectory)
protected override StepResult HandleResult(string? result, Queue<ConfigInitWizardStep> steps, ConfigurationBuilder configurationBuilder, string workingDirectory)
{
switch (result)
{
Expand All @@ -26,7 +26,7 @@ protected override StepResult HandleResult(string? result, Queue<ConfigInitWizar
return StepResult.Ok();
}

protected override string GetPrompt(GitVersionConfiguration configuration, string workingDirectory) => @"Is your project public or private?
protected override string GetPrompt(ConfigurationBuilder configurationBuilder, string workingDirectory) => @"Is your project public or private?

That is ... does it require authentication to clone/pull?

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ public SetupBuildScripts(IConsole console, IFileSystem fileSystem, ILog log, ICo
{
}

protected override StepResult HandleResult(string? result, Queue<ConfigInitWizardStep> steps, GitVersionConfiguration configuration, string workingDirectory)
protected override StepResult HandleResult(string? result, Queue<ConfigInitWizardStep> steps, ConfigurationBuilder configurationBuilder, string workingDirectory)
{
switch (result)
{
Expand All @@ -23,7 +23,7 @@ protected override StepResult HandleResult(string? result, Queue<ConfigInitWizar
return StepResult.Ok();
}

protected override string GetPrompt(GitVersionConfiguration configuration, string workingDirectory) => @"What build server are you using?
protected override string GetPrompt(ConfigurationBuilder configurationBuilder, string workingDirectory) => @"What build server are you using?

Want to see more? Contribute a pull request!

Expand Down
10 changes: 7 additions & 3 deletions src/GitVersion.Core/Configuration/Init/EditConfigStep.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@

namespace GitVersion.Configuration.Init;

public class EditConfigStep : ConfigInitWizardStep
internal class EditConfigStep : ConfigInitWizardStep
{
public EditConfigStep(IConsole console, IFileSystem fileSystem, ILog log, IConfigInitStepFactory stepFactory) : base(console, fileSystem, log, stepFactory)
{
}

protected override StepResult HandleResult(string? result, Queue<ConfigInitWizardStep> steps, GitVersionConfiguration configuration, string workingDirectory)
protected override StepResult HandleResult(string? result, Queue<ConfigInitWizardStep> steps, ConfigurationBuilder configurationBuilder, string workingDirectory)
{
switch (result)
{
Expand Down Expand Up @@ -45,7 +45,10 @@ protected override StepResult HandleResult(string? result, Queue<ConfigInitWizar
return StepResult.InvalidResponseSelected();
}

protected override string GetPrompt(GitVersionConfiguration configuration, string workingDirectory) => $@"Which would you like to change?
protected override string GetPrompt(ConfigurationBuilder configurationBuilder, string workingDirectory)
{
var configuration = configurationBuilder.Build();
return $@"Which would you like to change?

0) Save changes and exit
1) Exit without saving
Expand All @@ -57,6 +60,7 @@ protected override string GetPrompt(GitVersionConfiguration configuration, strin
5) Branch Increment mode (per commit/after tag) (Current: {configuration.VersioningMode ?? VersionCalculation.VersioningMode.ContinuousDeployment})
6) Assembly versioning scheme (Current: {configuration.AssemblyVersioningScheme})
7) Setup build scripts";
}

protected override string? DefaultResult => null;
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@

namespace GitVersion.Configuration.Init.SetConfig;

public class AssemblyVersioningSchemeSetting : ConfigInitWizardStep
internal class AssemblyVersioningSchemeSetting : ConfigInitWizardStep
{
public AssemblyVersioningSchemeSetting(IConsole console, IFileSystem fileSystem, ILog log, IConfigInitStepFactory stepFactory) : base(console, fileSystem, log, stepFactory)
{
}

protected override StepResult HandleResult(string? result, Queue<ConfigInitWizardStep> steps, GitVersionConfiguration configuration, string workingDirectory)
protected override StepResult HandleResult(string? result, Queue<ConfigInitWizardStep> steps, ConfigurationBuilder configurationBuilder, string workingDirectory)
{
var editConfigStep = this.StepFactory.CreateStep<EditConfigStep>();
switch (result)
Expand All @@ -19,31 +19,31 @@ protected override StepResult HandleResult(string? result, Queue<ConfigInitWizar
steps.Enqueue(editConfigStep);
return StepResult.Ok();
case "1":
configuration.AssemblyVersioningScheme = AssemblyVersioningScheme.Major;
configurationBuilder.WithAssemblyVersioningScheme(AssemblyVersioningScheme.Major);
steps.Enqueue(editConfigStep);
return StepResult.Ok();
case "2":
configuration.AssemblyVersioningScheme = AssemblyVersioningScheme.MajorMinor;
configurationBuilder.WithAssemblyVersioningScheme(AssemblyVersioningScheme.MajorMinor);
steps.Enqueue(editConfigStep);
return StepResult.Ok();
case "3":
configuration.AssemblyVersioningScheme = AssemblyVersioningScheme.MajorMinorPatch;
configurationBuilder.WithAssemblyVersioningScheme(AssemblyVersioningScheme.MajorMinorPatch);
steps.Enqueue(editConfigStep);
return StepResult.Ok();
case "4":
configuration.AssemblyVersioningScheme = AssemblyVersioningScheme.MajorMinorPatchTag;
configurationBuilder.WithAssemblyVersioningScheme(AssemblyVersioningScheme.MajorMinorPatchTag);
steps.Enqueue(editConfigStep);
return StepResult.Ok();
case "5":
configuration.AssemblyVersioningScheme = AssemblyVersioningScheme.None;
configurationBuilder.WithAssemblyVersioningScheme(AssemblyVersioningScheme.None);
steps.Enqueue(editConfigStep);
return StepResult.Ok();
}

return StepResult.InvalidResponseSelected();
}

protected override string GetPrompt(GitVersionConfiguration configuration, string workingDirectory) => @"What assembly versioning scheme do you want to use:
protected override string GetPrompt(ConfigurationBuilder configurationBuilder, string workingDirectory) => @"What assembly versioning scheme do you want to use:

0) Go Back
1) Major.0.0.0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

namespace GitVersion.Configuration.Init.SetConfig;

public class ConfigureBranch : ConfigInitWizardStep
internal class ConfigureBranch : ConfigInitWizardStep
{
private string name;
private BranchConfiguration branchConfiguration;
Expand All @@ -19,7 +19,7 @@ public ConfigureBranch WithData(string configName, BranchConfiguration configura
return this;
}

protected override StepResult HandleResult(string? result, Queue<ConfigInitWizardStep> steps, GitVersionConfiguration configuration, string workingDirectory)
protected override StepResult HandleResult(string? result, Queue<ConfigInitWizardStep> steps, ConfigurationBuilder configurationBuilder, string workingDirectory)
{
switch (result)
{
Expand All @@ -37,7 +37,7 @@ protected override StepResult HandleResult(string? result, Queue<ConfigInitWizar
return StepResult.InvalidResponseSelected();
}

protected override string GetPrompt(GitVersionConfiguration configuration, string workingDirectory) => $@"What would you like to change for '{this.name}':
protected override string GetPrompt(ConfigurationBuilder configurationBuilder, string workingDirectory) => $@"What would you like to change for '{this.name}':

0) Go Back
1) Branch Pr-release tag (Current: {this.branchConfiguration.Label})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@

namespace GitVersion.Configuration.Init.SetConfig;

public class ConfigureBranches : ConfigInitWizardStep
internal class ConfigureBranches : ConfigInitWizardStep
{
public ConfigureBranches(IConsole console, IFileSystem fileSystem, ILog log, IConfigInitStepFactory stepFactory) : base(console, fileSystem, log, stepFactory)
{
}

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

try
{
var configuration = configurationBuilder.Build();
var foundBranch = OrderedBranches(configuration).ElementAt(parsed - 1);
var branchConfiguration = foundBranch.Value;
if (branchConfiguration is null)
{
branchConfiguration = new BranchConfiguration();
configuration.Branches.Add(foundBranch.Key, branchConfiguration);
configurationBuilder.WithBranch(foundBranch.Key, builder => builder.WithConfiguration(branchConfiguration));
}
steps.Enqueue(this.StepFactory.CreateStep<ConfigureBranch>().WithData(foundBranch.Key, branchConfiguration));
return StepResult.Ok();
Expand All @@ -38,10 +39,14 @@ protected override StepResult HandleResult(string? result, Queue<ConfigInitWizar
return StepResult.InvalidResponseSelected();
}

protected override string GetPrompt(GitVersionConfiguration configuration, string workingDirectory) => @"Which branch would you like to configure:
protected override string GetPrompt(ConfigurationBuilder configurationBuilder, string workingDirectory)
{
var configuration = configurationBuilder.Build();
return @"Which branch would you like to configure:

0) Go Back
" + string.Join(System.Environment.NewLine, OrderedBranches(configuration).Select((c, i) => $"{i + 1}) {c.Key}"));
}

private static IOrderedEnumerable<KeyValuePair<string, BranchConfiguration>> OrderedBranches(GitVersionConfiguration configuration)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

namespace GitVersion.Configuration.Init.SetConfig;

public class GlobalModeSetting : ConfigInitWizardStep
internal class GlobalModeSetting : ConfigInitWizardStep
{
private ConfigInitWizardStep returnToStep;
private bool isPartOfWizard;
Expand All @@ -20,20 +20,20 @@ public GlobalModeSetting WithData(ConfigInitWizardStep returnStep, bool isPartOf
return this;
}

protected override StepResult HandleResult(string? result, Queue<ConfigInitWizardStep> steps, GitVersionConfiguration configuration, string workingDirectory)
protected override StepResult HandleResult(string? result, Queue<ConfigInitWizardStep> steps, ConfigurationBuilder configurationBuilder, string workingDirectory)
{
switch (result)
{
case "1":
configuration.VersioningMode = VersioningMode.ContinuousDelivery;
configurationBuilder.WithVersioningMode(VersioningMode.ContinuousDelivery);
steps.Enqueue(this.returnToStep);
return StepResult.Ok();
case "2":
configuration.VersioningMode = VersioningMode.ContinuousDeployment;
configurationBuilder.WithVersioningMode(VersioningMode.ContinuousDeployment);
steps.Enqueue(this.returnToStep);
return StepResult.Ok();
case "3":
configuration.VersioningMode = VersioningMode.Mainline;
configurationBuilder.WithVersioningMode(VersioningMode.Mainline);
steps.Enqueue(this.returnToStep);
return StepResult.Ok();
case "0":
Expand All @@ -45,7 +45,7 @@ protected override StepResult HandleResult(string? result, Queue<ConfigInitWizar
return StepResult.InvalidResponseSelected();
}

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

namespace GitVersion.Configuration.Init.SetConfig;

public class SetBranchIncrementMode : ConfigInitWizardStep
internal class SetBranchIncrementMode : ConfigInitWizardStep
{
private string name;
private BranchConfiguration branchConfiguration;
Expand All @@ -20,7 +20,7 @@ public SetBranchIncrementMode WithData(string configName, BranchConfiguration co
return this;
}

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

protected override string GetPrompt(GitVersionConfiguration configuration, string workingDirectory) => $@"What do you want the increment mode for {this.name} to be?
protected override string GetPrompt(ConfigurationBuilder configurationBuilder, string workingDirectory) => $@"What do you want the increment mode for {this.name} to be?

0) Go Back
1) Follow SemVer and only increment when a release has been tagged (continuous delivery mode)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

namespace GitVersion.Configuration.Init.SetConfig;

public class SetBranchTag : ConfigInitWizardStep
internal class SetBranchTag : ConfigInitWizardStep
{
private string name;
private BranchConfiguration branchConfiguration;
Expand All @@ -20,7 +20,7 @@ public SetBranchTag WithData(string configName, BranchConfiguration configuratio
return this;
}

protected override StepResult HandleResult(string? result, Queue<ConfigInitWizardStep> steps, GitVersionConfiguration configuration, string workingDirectory)
protected override StepResult HandleResult(string? result, Queue<ConfigInitWizardStep> steps, ConfigurationBuilder configurationBuilder, string workingDirectory)
{
if (result.IsNullOrWhiteSpace())
{
Expand All @@ -44,7 +44,7 @@ protected override StepResult HandleResult(string? result, Queue<ConfigInitWizar
}
}

protected override string GetPrompt(GitVersionConfiguration configuration, string workingDirectory) => @"This sets the per-release tag which will be used for versions on this branch (beta, rc etc)
protected override string GetPrompt(ConfigurationBuilder configurationBuilder, string workingDirectory) => @"This sets the per-release tag which will be used for versions on this branch (beta, rc etc)

0) Go Back
1) No tag
Expand Down
9 changes: 5 additions & 4 deletions src/GitVersion.Core/Configuration/Init/SetNextVersion.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@

namespace GitVersion.Configuration.Init;

public class SetNextVersion : ConfigInitWizardStep
internal class SetNextVersion : ConfigInitWizardStep
{
public SetNextVersion(IConsole console, IFileSystem fileSystem, ILog log, IConfigInitStepFactory stepFactory) : base(console, fileSystem, log, stepFactory)
{
}

protected override StepResult HandleResult(string? result, Queue<ConfigInitWizardStep> steps, GitVersionConfiguration configuration, string workingDirectory)
protected override StepResult HandleResult(string? result, Queue<ConfigInitWizardStep> steps, ConfigurationBuilder configurationBuilder, string workingDirectory)
{
var editConfigStep = this.StepFactory.CreateStep<EditConfigStep>();
if (result.IsNullOrEmpty())
Expand All @@ -19,15 +19,16 @@ protected override StepResult HandleResult(string? result, Queue<ConfigInitWizar
return StepResult.Ok();
}

var configuration = configurationBuilder.Build();
if (!SemanticVersion.TryParse(result, string.Empty, out var semVer, configuration.SemanticVersionFormat))
return StepResult.InvalidResponseSelected();

configuration.NextVersion = semVer.ToString("t");
configurationBuilder.WithNextVersion(semVer.ToString("t"));
steps.Enqueue(editConfigStep);
return StepResult.Ok();
}

protected override string GetPrompt(GitVersionConfiguration configuration, string workingDirectory) => "What would you like to set the next version to (enter nothing to cancel)?";
protected override string GetPrompt(ConfigurationBuilder configurationBuilder, string workingDirectory) => "What would you like to set the next version to (enter nothing to cancel)?";

protected override string? DefaultResult => null;
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,21 +14,22 @@ public ConfigInitWizard(IConsole console, IConfigInitStepFactory stepFactory)
this.stepFactory = stepFactory.NotNull();
}

public GitVersionConfiguration? Run(GitVersionConfiguration configuration, string workingDirectory)
public IGitVersionConfiguration? Run(IGitVersionConfiguration configuration, string workingDirectory)
{
this.console.WriteLine("GitVersion init will guide you through setting GitVersion up to work for you");
var steps = new Queue<ConfigInitWizardStep>();
steps.Enqueue(this.stepFactory.CreateStep<EditConfigStep>());

var configurationBuilder = ConfigurationBuilder.New.WithConfiguration((GitVersionConfiguration)configuration);
while (steps.Count > 0)
{
var currentStep = steps.Dequeue();
if (!currentStep.Apply(steps, configuration, workingDirectory))
if (!currentStep.Apply(steps, configurationBuilder, workingDirectory))
{
return null;
}
}

return configuration;
return configurationBuilder.Build();
}
}
Loading