diff --git a/GitVersionExe.Tests/ArgumentParserTests.cs b/GitVersionExe.Tests/ArgumentParserTests.cs index 3e0be9ddd7..90389fbcab 100644 --- a/GitVersionExe.Tests/ArgumentParserTests.cs +++ b/GitVersionExe.Tests/ArgumentParserTests.cs @@ -198,6 +198,23 @@ public void update_assembly_info_with_relative_filename() arguments.UpdateAssemblyInfoFileName.ShouldBe("..\\..\\CommonAssemblyInfo.cs"); } + [Test] + public void update_assembly_info_with_assembly_version_format() + { + var arguments = ArgumentParser.ParseArguments("-updateAssemblyInfo true -assemblyVersionFormat MajorMinorPatch"); + arguments.UpdateAssemblyInfo.ShouldBe(true); + arguments.AssemblyVersionFormat.ShouldBe("MajorMinorPatch"); + } + + [Test] + public void update_assembly_info_with_filename_and_assembly_version_format() + { + var arguments = ArgumentParser.ParseArguments("-updateAssemblyInfo CommonAssemblyInfo.cs -assemblyVersionFormat MajorMinorPatch"); + arguments.UpdateAssemblyInfo.ShouldBe(true); + arguments.AssemblyVersionFormat.ShouldBe("MajorMinorPatch"); + arguments.UpdateAssemblyInfoFileName.ShouldBe("CommonAssemblyInfo.cs"); + } + [Test] public void can_log_to_console() { diff --git a/GitVersionExe/ArgumentParser.cs b/GitVersionExe/ArgumentParser.cs index 5084301d49..0ae88be047 100644 --- a/GitVersionExe/ArgumentParser.cs +++ b/GitVersionExe/ArgumentParser.cs @@ -141,6 +141,12 @@ public static Arguments ParseArguments(List commandLineArguments) continue; } + if (IsSwitch("assemblyversionformat", name)) + { + arguments.AssemblyVersionFormat = value; + continue; + } + if ((IsSwitch("v", name)) && VersionParts.Contains(value.ToLower())) { arguments.VersionPart = value.ToLower(); diff --git a/GitVersionExe/Arguments.cs b/GitVersionExe/Arguments.cs index 915ffd1420..e45750084d 100644 --- a/GitVersionExe/Arguments.cs +++ b/GitVersionExe/Arguments.cs @@ -29,5 +29,6 @@ public Arguments() public bool UpdateAssemblyInfo; public string UpdateAssemblyInfoFileName; + public string AssemblyVersionFormat; } } \ No newline at end of file diff --git a/GitVersionExe/AssemblyInfoFileUpdate.cs b/GitVersionExe/AssemblyInfoFileUpdate.cs index 72c376b440..259f3d27e0 100644 --- a/GitVersionExe/AssemblyInfoFileUpdate.cs +++ b/GitVersionExe/AssemblyInfoFileUpdate.cs @@ -31,7 +31,16 @@ public AssemblyInfoFileUpdate(Arguments args, string workingDirectory, Dictionar }); cleanupBackupTasks.Add(() => fileSystem.Delete(backupAssemblyInfo)); - var assemblyVersion = string.Format("{0}.{1}.0.0", variables[VariableProvider.Major], variables[VariableProvider.Minor]); + string assemblyVersion; + if (!string.IsNullOrWhiteSpace(args.AssemblyVersionFormat)) + { + assemblyVersion = variables[args.AssemblyVersionFormat]; + } + else + { + assemblyVersion = string.Format("{0}.{1}.0.0", variables[VariableProvider.Major], variables[VariableProvider.Minor]); + } + var assemblyInfoVersion = variables[VariableProvider.InformationalVersion]; var assemblyFileVersion = variables[VariableProvider.AssemblySemVer]; var fileContents = fileSystem.ReadAllText(assemblyInfoFile) diff --git a/GitVersionExe/Program.cs b/GitVersionExe/Program.cs index b0aac61c1f..f584c23f80 100644 --- a/GitVersionExe/Program.cs +++ b/GitVersionExe/Program.cs @@ -25,8 +25,8 @@ static void Main() { // Dump log to console if we fail to complete successfully Console.Write(log.ToString()); - } - + } + Environment.Exit(exitCode); } @@ -114,6 +114,14 @@ static int Run() } } + if (!string.IsNullOrWhiteSpace(arguments.AssemblyVersionFormat) && !variables.ContainsKey(arguments.AssemblyVersionFormat)) + { + Console.WriteLine("Unrecognised AssemblyVersionFormat argument. Valid values for this argument are: {0}", string.Join(" ", variables.Keys.OrderBy(a => a))); + HelpWriter.Write(); + return 1; + } + + using (var assemblyInfoUpdate = new AssemblyInfoFileUpdate(arguments, workingDirectory, variables, new FileSystem())) { var execRun = RunExecCommandIfNeeded(arguments, workingDirectory, variables);