public static void ConfigureGitVersion(ICakeContext ctx, TaskConfig cfg)
        {
            // Update the GitVersion config
            GitVersionConfig gitVersion = cfg.Load <GitVersionConfig>();

            Common.Tools.GitVersion.GitVersion version = ctx.GitVersion();
            gitVersion.Version = version;

            EnvConfig env = cfg.Load <EnvConfig>();

            // Update branch name
            env.Branch = version.BranchName;

            // Update primary and full versions
            env.Version.Primary = version.MajorMinorPatch;
            env.Version.Full    = version.SemVer;

            // Update build number
            env.Version.BuildNumber = version.CommitsSinceVersionSource.HasValue
                ? version.CommitsSinceVersionSource.Value.ToString()
                : version.BuildMetaData;
        }
            public void Should_Tolerate_Bad_Json_Set()
            {
                // Given
                var expect = new Common.Tools.GitVersion.GitVersion
                {
                    Major                 = 0,
                    Minor                 = 1,
                    Patch                 = 1,
                    PreReleaseTag         = "PreReleaseTag",
                    PreReleaseTagWithDash = "PreReleaseTagWithDash",
                    PreReleaseLabel       = "PreReleaseLabel",
                    PreReleaseNumber      = null,
                    BuildMetaData         = "BuildMetaData",
                    BuildMetaDataPadded   = "BuildMetaDataPadded",
                    FullBuildMetaData     = "Branch.master.Sha.f2467748c78b3c8b37972ad0b30df2e15dfbf2cb",
                    MajorMinorPatch       = "0.1.1",
                    SemVer                = "0.1.1",
                    LegacySemVer          = "0.1.1",
                    LegacySemVerPadded    = "0.1.1",
                    AssemblySemVer        = "0.1.1.0",
                    AssemblySemFileVer    = "0.1.1.0",
                    FullSemVer            = "0.1.1",
                    InformationalVersion  = "0.1.1+Branch.master.Sha.f2467748c78b3c8b37972ad0b30df2e15dfbf2cb",
                    BranchName            = "master",
                    Sha                             = "f2467748c78b3c8b37972ad0b30df2e15dfbf2cb",
                    NuGetVersionV2                  = "0.1.1",
                    NuGetVersion                    = "0.1.1",
                    CommitsSinceVersionSource       = null,
                    CommitsSinceVersionSourcePadded = "0002",
                    CommitDate                      = "2017-09-13",
                }
                ;
                var fixture = new GitVersionRunnerFixture(
                    new[]
                {
                    "{",
                    "  \"Major\":0,",
                    "  \"Minor\":1,",
                    "  \"Patch\":1,",
                    "  \"PreReleaseTag\":\"PreReleaseTag\",",
                    "  \"PreReleaseTagWithDash\":\"PreReleaseTagWithDash\",",
                    "  \"PreReleaseLabel\":\"PreReleaseLabel\",",
                    "  \"PreReleaseNumber\":\"\",",
                    "  \"BuildMetaData\":\"BuildMetaData\",",
                    "  \"BuildMetaDataPadded\":\"BuildMetaDataPadded\",",
                    "  \"FullBuildMetaData\":\"Branch.master.Sha.f2467748c78b3c8b37972ad0b30df2e15dfbf2cb\",",
                    "  \"MajorMinorPatch\":\"0.1.1\",",
                    "  \"SemVer\":\"0.1.1\",",
                    "  \"LegacySemVer\":\"0.1.1\",",
                    "  \"LegacySemVerPadded\":\"0.1.1\",",
                    "  \"AssemblySemVer\":\"0.1.1.0\",",
                    "  \"AssemblySemFileVer\":\"0.1.1.0\",",
                    "  \"FullSemVer\":\"0.1.1\",",
                    "  \"InformationalVersion\":\"0.1.1+Branch.master.Sha.f2467748c78b3c8b37972ad0b30df2e15dfbf2cb\",",
                    "  \"BranchName\":\"master\",",
                    "  \"Sha\":\"f2467748c78b3c8b37972ad0b30df2e15dfbf2cb\",",
                    "  \"NuGetVersionV2\":\"0.1.1\",",
                    "  \"NuGetVersion\":\"0.1.1\",",
                    "  \"CommitsSinceVersionSource\":\"\",",
                    "  \"CommitsSinceVersionSourcePadded\":\"0002\",",
                    "  \"CommitDate\":\"2017-09-13\"",
                    "}"
                });

                fixture.Settings.OutputType = GitVersionOutput.Json;

                // When
                var result = fixture.RunGitVersion();

                // Then
                Assert.Equal(expect.Major, result.Major);
                Assert.Equal(expect.Minor, result.Minor);
                Assert.Equal(expect.Patch, result.Patch);
                Assert.Equal(expect.PreReleaseTag, result.PreReleaseTag);
                Assert.Equal(expect.PreReleaseTagWithDash, result.PreReleaseTagWithDash);
                Assert.Equal(expect.PreReleaseLabel, result.PreReleaseLabel);
                Assert.Equal(expect.PreReleaseNumber, result.PreReleaseNumber);
                Assert.Equal(expect.BuildMetaData, result.BuildMetaData);
                Assert.Equal(expect.BuildMetaDataPadded, result.BuildMetaDataPadded);
                Assert.Equal(expect.FullBuildMetaData, result.FullBuildMetaData);
                Assert.Equal(expect.MajorMinorPatch, result.MajorMinorPatch);
                Assert.Equal(expect.SemVer, result.SemVer);
                Assert.Equal(expect.LegacySemVer, result.LegacySemVer);
                Assert.Equal(expect.LegacySemVerPadded, result.LegacySemVerPadded);
                Assert.Equal(expect.AssemblySemVer, result.AssemblySemVer);
                Assert.Equal(expect.AssemblySemFileVer, result.AssemblySemFileVer);
                Assert.Equal(expect.FullSemVer, result.FullSemVer);
                Assert.Equal(expect.InformationalVersion, result.InformationalVersion);
                Assert.Equal(expect.BranchName, result.BranchName);
                Assert.Equal(expect.Sha, result.Sha);
                Assert.Equal(expect.NuGetVersionV2, result.NuGetVersionV2);
                Assert.Equal(expect.NuGetVersion, result.NuGetVersion);
                Assert.Equal(expect.CommitsSinceVersionSource, result.CommitsSinceVersionSource);
                Assert.Equal(expect.CommitsSinceVersionSourcePadded, result.CommitsSinceVersionSourcePadded);
                Assert.Equal(expect.CommitDate, result.CommitDate);
            }