Skip to content

Initial refactoring of Variable provider and the way variables are gener... #135

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 18 commits into from
Mar 30, 2014
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
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
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ protected VersionAndBranch FindVersion(
Major = versionFromMaster.Major,
Minor = versionFromMaster.Minor + 1,
Patch = 0,
Tag = "unstable0",
PreReleaseTag = "unstable0",
Suffix = ancestor.Prefix()
}
};
Expand Down
2 changes: 1 addition & 1 deletion GitVersion/GitFlow/BranchFinders/DevelopVersionFinder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ SemanticVersion GetSemanticVersion(GitVersionContext context)
{
Major = versionFromMaster.Major,
Minor = versionFromMaster.Minor,
Tag = Stability.Unstable.ToString().ToLower() + preReleasePartOne
PreReleaseTag = Stability.Unstable.ToString().ToLower() + preReleasePartOne
};
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ protected VersionAndBranch FindVersion(
EnsureVersionIsValid(version, context.CurrentBranch, branchType);

if (branchType == BranchType.Hotfix)
version.Tag = "hotfix0";
version.PreReleaseTag = "hotfix0";
if (branchType == BranchType.Release)
version.Tag = "beta0";
version.PreReleaseTag = "beta0";

var tagVersion = RetrieveMostRecentOptionalTagVersion(context.Repository, version, context.CurrentBranch.Commits.Take(nbHotfixCommits + 1));

Expand All @@ -36,13 +36,13 @@ protected VersionAndBranch FindVersion(
Major = version.Major,
Minor = version.Minor,
Patch = version.Patch,
Tag = version.Tag
PreReleaseTag = version.PreReleaseTag
},
};

if (tagVersion != null)
{
versionAndBranch.Version.Tag = tagVersion.Tag;
versionAndBranch.Version.PreReleaseTag = tagVersion.PreReleaseTag;
}


Expand Down Expand Up @@ -106,7 +106,7 @@ void EnsureVersionIsValid(SemanticVersion version, Branch branch, BranchType bra
var msg = string.Format("Branch '{0}' doesn't respect the {1} branch naming convention. ",
branch.Name, branchType);

if (version.Tag.HasTag() ||
if (version.PreReleaseTag.HasTag() ||
version.PreReleasePartTwo != null)
{
throw new ErrorException(msg +
Expand Down
14 changes: 0 additions & 14 deletions GitVersion/GitFlow/ReleaseInformation.cs

This file was deleted.

57 changes: 0 additions & 57 deletions GitVersion/GitFlow/ReleaseInformationCalculator.cs

This file was deleted.

2 changes: 1 addition & 1 deletion GitVersion/GitHubFlow/BuildNumberCalculator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public VersionAndBranch GetBuildNumber(GitVersionContext context)
{
EnsurePullBranchShareACommonAncestorWithMaster(gitRepo, gitRepo.Head);
var extractIssueNumber = ExtractIssueNumber(context);
semanticVersion.Tag = "unstable" + extractIssueNumber;
semanticVersion.PreReleaseTag = "unstable" + extractIssueNumber;
semanticVersion.Suffix = extractIssueNumber;
return new VersionAndBranch
{
Expand Down
5 changes: 1 addition & 4 deletions GitVersion/GitVersion.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -80,14 +80,11 @@
<Compile Include="OutputVariables\VariableProvider.cs" />
<Compile Include="GitVersionContext.cs" />
<Compile Include="HelpWriter.cs" />
<Compile Include="GitFlow\ReleaseInformation.cs" />
<Compile Include="GitFlow\ReleaseInformationCalculator.cs" />
<Compile Include="ProcessHelper.cs" />
<Compile Include="ReleaseDate.cs" />
<Compile Include="ReleaseDateFinder.cs" />
<Compile Include="SemanticVersionTag.cs" />
<Compile Include="SemanticVersionPreReleaseTag.cs" />
<Compile Include="OutputFormatters\JsonOutputFormatter.cs" />
<Compile Include="OutputVariables\VersionBuilders\NugetVersionBuilder.cs" />
<Compile Include="ExtensionMethods.cs" />
<Compile Include="ShortVersionParser.cs" />
<Compile Include="VersionOnMasterFinder.cs" />
Expand Down
64 changes: 35 additions & 29 deletions GitVersion/OutputVariables/VariableProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,41 +5,47 @@

public static class VariableProvider
{
public const string Major = "Major";
public const string Minor = "Minor";
public const string Patch = "Patch";
public const string Suffix = "Suffix";
public const string InformationalVersion = "InformationalVersion";
public const string BranchName = "BranchName";
public const string BranchType = "BranchType";
public const string Sha = "Sha";
public const string MajorMinorPatch = "MajorMinorPatch";
public const string SemVer = "SemVer";
public const string SemVerPadded = "SemVerPadded";
public const string FullSemVer = "FullSemVer";
public const string FullSemVerPadded = "FullSemVerPadded";
public const string AssemblySemVer = "AssemblySemVer";
public const string ClassicVersion = "ClassicVersion";
public const string PreReleaseTag = "PreReleaseTag";
public const string PreReleaseTagWithDash = "PreReleaseTagWithDash";

public static Dictionary<string, string> ToKeyValue(this VersionAndBranch versionAndBranch)
{
var variables = new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase)
{
{"Major", versionAndBranch.Version.Major.ToString()},
{"Minor", versionAndBranch.Version.Minor.ToString()},
{"Patch", versionAndBranch.Version.Patch.ToString()},
{"Suffix", versionAndBranch.Version.Suffix},
{"LongVersion", versionAndBranch.ToLongString()},
{"NugetVersion", versionAndBranch.GenerateNugetVersion()},
{"ShortVersion", versionAndBranch.ToShortString()},
{"BranchName", versionAndBranch.BranchName},
{"BranchType", versionAndBranch.BranchType == null ? null : versionAndBranch.BranchType.ToString()},
{"Sha", versionAndBranch.Sha},
{"MajorMinorPatch", string.Format("{0}.{1}.{2}", versionAndBranch.Version.Major, versionAndBranch.Version.Minor, versionAndBranch.Version.Patch)},
{"SemVer", versionAndBranch.GenerateSemVer()},
//TODO: legacy. people should move over to semver
{"Version", versionAndBranch.GenerateSemVer()}
{Major, versionAndBranch.Version.Major.ToString()},
{Minor, versionAndBranch.Version.Minor.ToString()},
{Patch, versionAndBranch.Version.Patch.ToString()},
{PreReleaseTag, versionAndBranch.Version.PreReleaseTag},
{PreReleaseTagWithDash, "-" + versionAndBranch.Version.PreReleaseTag},
{Suffix, versionAndBranch.Version.Suffix},
{InformationalVersion, versionAndBranch.ToLongString()},
{MajorMinorPatch, string.Format("{0}.{1}.{2}", versionAndBranch.Version.Major, versionAndBranch.Version.Minor, versionAndBranch.Version.Patch)},
{SemVer, versionAndBranch.GenerateSemVer()},
{SemVerPadded, versionAndBranch.GeneratePaddedSemVer()},
{AssemblySemVer, versionAndBranch.GenerateAssemblySemVer()},
{FullSemVer, versionAndBranch.GenerateFullSemVer()},
{FullSemVerPadded, versionAndBranch.GeneratePaddedFullSemVer()},
{ClassicVersion, versionAndBranch.GenerateClassicVersion()},
{BranchName, versionAndBranch.BranchName},
{BranchType, versionAndBranch.BranchType == null ? null : versionAndBranch.BranchType.ToString()},
{Sha, versionAndBranch.Sha},
};

var releaseInformation = ReleaseInformationCalculator.Calculate(versionAndBranch.BranchType, versionAndBranch.Version.Tag);
if (releaseInformation.ReleaseNumber.HasValue)
{
variables.Add("PreReleasePartOne", releaseInformation.ReleaseNumber.ToString());
//TODO: legacy. people should move over to PreReleasePartOne
variables.Add("PreReleaseNumber", releaseInformation.ReleaseNumber.ToString());
}
if (versionAndBranch.Version.PreReleasePartTwo != null)
{
variables.Add("PreReleasePartTwo", versionAndBranch.Version.PreReleasePartTwo.ToString());
}
if (releaseInformation.Stability.HasValue)
{
variables.Add("Stability", releaseInformation.Stability.ToString());
}
return variables;
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,102 +1,18 @@
namespace GitVersion
{
using System;

public static class VersionInformationalBuilder
{
public static string ToLongString(this VersionAndBranch versionAndBranch)
{
var version = versionAndBranch.Version;
var releaseInformation = ReleaseInformationCalculator.Calculate(versionAndBranch.BranchType, version.Tag);
var versionPrefix = string.Format("{0}.{1}.{2}", version.Major, version.Minor, version.Patch);

if (versionAndBranch.BranchType == BranchType.Feature)
{
var shortSha = versionAndBranch.Sha.Substring(0, 8);
return string.Format("{0}-unstable.feature-{1}+Branch.{2}.Sha.{3}", versionPrefix, shortSha, versionAndBranch.BranchName, versionAndBranch.Sha);
}

if (versionAndBranch.BranchType == BranchType.PullRequest)
{
return string.Format("{0}-unstable.pull-request-{1}+Branch.{2}.Sha.{3}", versionPrefix, GetPreRelease(version.PreReleasePartTwo, releaseInformation), versionAndBranch.BranchName, versionAndBranch.Sha);
}

var semVer = versionAndBranch.GenerateSemVer();
var suffix = string.IsNullOrEmpty(versionAndBranch.Version.Suffix) ? null : versionAndBranch.Version.Suffix + ".";

if (versionAndBranch.BranchType == BranchType.Master)
{
return string.Format("{0}+Sha.{1}", versionPrefix, versionAndBranch.Sha);
return string.Format("{0}+{1}Sha.{2}", semVer, suffix, versionAndBranch.Sha);
}


//else Hotfix, Develop or Release
if (releaseInformation.Stability == Stability.Final)
{
return string.Format("{0}+Sha.{1}", versionPrefix, versionAndBranch.Sha);
}
if (releaseInformation.Stability == Stability.ReleaseCandidate)
{
return string.Format("{0}-rc{1}+Branch.{2}.Sha.{3}", versionPrefix, GetPreRelease(version.PreReleasePartTwo, releaseInformation), versionAndBranch.BranchName, versionAndBranch.Sha);
}
return string.Format("{0}-{1}{2}+Branch.{3}.Sha.{4}", versionPrefix,releaseInformation.Stability.ToString().ToLowerInvariant(), GetPreRelease(version.PreReleasePartTwo, releaseInformation), versionAndBranch.BranchName, versionAndBranch.Sha);
return string.Format("{0}+{1}Branch.{2}.Sha.{3}", semVer, suffix, versionAndBranch.BranchName, versionAndBranch.Sha);
}

static string GetPreRelease(int? preReleasePartTwo, ReleaseInformation releaseInformation)
{
if (!releaseInformation.ReleaseNumber.HasValue)
{
throw new Exception("pre-release number is required");
}
if (preReleasePartTwo == null)
{
return releaseInformation.ReleaseNumber.ToString();
}

return string.Format("{0}.{1}", releaseInformation.ReleaseNumber, preReleasePartTwo);
}

public static string ToShortString(this VersionAndBranch versionAndBranch)
{
var version = versionAndBranch.Version;
var releaseInformation = ReleaseInformationCalculator.Calculate(versionAndBranch.BranchType, version.Tag);
var versionPrefix = string.Format("{0}.{1}.{2}", version.Major, version.Minor, version.Patch);

if (versionAndBranch.BranchType == BranchType.Feature)
{
var shortSha = versionAndBranch.Sha.Substring(0, 8);
return string.Format("{0}-unstable.feature-{1}", versionPrefix, shortSha);
}

if (versionAndBranch.BranchType == BranchType.PullRequest)
{
return string.Format("{0}-unstable.pull-request-{1}", versionPrefix, GetPreRelease(version.PreReleasePartTwo, releaseInformation));
}

if (versionAndBranch.BranchType == BranchType.Develop)
{
return string.Format("{0}-unstable{1}", versionPrefix, GetPreRelease(version.PreReleasePartTwo, releaseInformation));
}

if (versionAndBranch.BranchType == BranchType.Release)
{
if (releaseInformation.Stability == Stability.ReleaseCandidate)
{
return string.Format("{0}-rc{1}", versionPrefix, GetPreRelease(version.PreReleasePartTwo, releaseInformation));
}
return string.Format("{0}-{1}{2}", versionPrefix, releaseInformation.Stability.ToString().ToLowerInvariant(), GetPreRelease(version.PreReleasePartTwo, releaseInformation));
}

if (versionAndBranch.BranchType == BranchType.Hotfix)
{
return string.Format("{0}-{1}{2}", versionPrefix, releaseInformation.Stability.ToString().ToLowerInvariant(), GetPreRelease(version.PreReleasePartTwo, releaseInformation));
}

if (versionAndBranch.BranchType == BranchType.Master)
{
return versionPrefix;
}

throw new ErrorException(string.Format("Invalid branch type '{0}'.", versionAndBranch.BranchType));
}

}
}
48 changes: 0 additions & 48 deletions GitVersion/OutputVariables/VersionBuilders/NugetVersionBuilder.cs

This file was deleted.

Loading