Skip to content

Commit a78ef71

Browse files
committed
Merge pull request #227 from hmemcpy/master
Support updating a single common AssemblyInfo.cs
2 parents a4b40aa + 6e1e9f3 commit a78ef71

File tree

4 files changed

+53
-4
lines changed

4 files changed

+53
-4
lines changed

GitVersionExe/ArgumentParser.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,11 @@ public static Arguments ParseArguments(List<string> commandLineArguments)
128128
{
129129
arguments.UpdateAssemblyInfo = false;
130130
}
131+
else if (!IsSwitchArgument(value))
132+
{
133+
arguments.UpdateAssemblyInfo = true;
134+
arguments.UpdateAssemblyInfoFileName = value;
135+
}
131136
else
132137
{
133138
arguments.UpdateAssemblyInfo = true;
@@ -159,6 +164,11 @@ public static Arguments ParseArguments(List<string> commandLineArguments)
159164
return arguments;
160165
}
161166

167+
static bool IsSwitchArgument(string value)
168+
{
169+
return value != null && value.StartsWith("-") || value.StartsWith("/");
170+
}
171+
162172
static bool IsSwitch(string switchName, string value)
163173
{
164174
if (value.StartsWith("-"))

GitVersionExe/Arguments.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,6 @@ public Arguments()
2828
public string ExecArgs;
2929

3030
public bool UpdateAssemblyInfo;
31+
public string UpdateAssemblyInfoFileName;
3132
}
3233
}

GitVersionExe/AssemblyInfoFileUpdate.cs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@ public AssemblyInfoFileUpdate(Arguments args, string workingDirectory, Dictionar
1616
if (args.Output != OutputType.Json)
1717
Console.WriteLine("Updating assembly info files");
1818

19-
var assemblyInfoFiles = Directory.GetFiles(workingDirectory, "AssemblyInfo.cs",
20-
SearchOption.AllDirectories);
19+
var assemblyInfoFiles = GetAssemblyInfoFiles(workingDirectory, args);
2120

2221
foreach (var assemblyInfoFile in assemblyInfoFiles)
2322
{
@@ -44,6 +43,19 @@ public AssemblyInfoFileUpdate(Arguments args, string workingDirectory, Dictionar
4443
}
4544
}
4645

46+
static IEnumerable<string> GetAssemblyInfoFiles(string workingDirectory, Arguments args)
47+
{
48+
if (args.UpdateAssemblyInfoFileName != null)
49+
{
50+
if (File.Exists(args.UpdateAssemblyInfoFileName))
51+
{
52+
return new[] { Path.GetFullPath(args.UpdateAssemblyInfoFileName) };
53+
}
54+
}
55+
56+
return Directory.GetFiles(workingDirectory, "AssemblyInfo.cs", SearchOption.AllDirectories);
57+
}
58+
4759
public void Dispose()
4860
{
4961
foreach (var restoreBackup in restoreBackupTasks)

Tests/ArgumentParserTests.cs

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,11 +165,37 @@ public void Unknown_argument_should_throw()
165165
Assert.AreEqual("Could not parse command line parameter '-x'.", exception.Message);
166166
}
167167

168+
[TestCase("-updateAssemblyInfo true")]
169+
[TestCase("-updateAssemblyInfo 1")]
170+
[TestCase("-updateAssemblyInfo -proj foo.sln")]
171+
public void update_assembly_info_true(string command)
172+
{
173+
var arguments = ArgumentParser.ParseArguments(command);
174+
arguments.UpdateAssemblyInfo.ShouldBe(true);
175+
}
176+
177+
[TestCase("-updateAssemblyInfo false")]
178+
[TestCase("-updateAssemblyInfo 0")]
179+
public void update_assembly_info_false(string command)
180+
{
181+
var arguments = ArgumentParser.ParseArguments(command);
182+
arguments.UpdateAssemblyInfo.ShouldBe(false);
183+
}
184+
185+
[Test]
186+
public void update_assembly_info_with_filename()
187+
{
188+
var arguments = ArgumentParser.ParseArguments("-updateAssemblyInfo CommonAssemblyInfo.cs");
189+
arguments.UpdateAssemblyInfo.ShouldBe(true);
190+
arguments.UpdateAssemblyInfoFileName.ShouldBe("CommonAssemblyInfo.cs");
191+
}
192+
168193
[Test]
169-
public void update_assembly_info()
194+
public void update_assembly_info_with_relative_filename()
170195
{
171-
var arguments = ArgumentParser.ParseArguments("-updateAssemblyInfo -proj foo.sln");
196+
var arguments = ArgumentParser.ParseArguments("-updateAssemblyInfo ..\\..\\CommonAssemblyInfo.cs");
172197
arguments.UpdateAssemblyInfo.ShouldBe(true);
198+
arguments.UpdateAssemblyInfoFileName.ShouldBe("..\\..\\CommonAssemblyInfo.cs");
173199
}
174200

175201
[Test]

0 commit comments

Comments
 (0)