Skip to content

Commit 0d64248

Browse files
committed
Added support for patching named *.fs files to the AssemblyInfoFileUpdate class.
1 parent cb4698d commit 0d64248

File tree

2 files changed

+28
-17
lines changed

2 files changed

+28
-17
lines changed

src/GitVersionCore/VersionAssemblyInfoResources/AssemblyVersionInfoTemplates.cs

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,18 @@
1010
public class AssemblyVersionInfoTemplates
1111
{
1212
static readonly IDictionary<string, FileInfo> assemblyInfoSourceList;
13+
static readonly IDictionary<string, string> assemblyInfoAddFormats;
1314

1415
static AssemblyVersionInfoTemplates()
1516
{
1617
assemblyInfoSourceList = GetEmbeddedVersionAssemblyFiles().ToDictionary(k => k.Extension, v => v);
18+
// TODO: It would be nice to do something a bit more clever here, like reusing the VersionAssemblyInfo.* templates somehow. @asbjornu
19+
assemblyInfoAddFormats = new Dictionary<string, string>
20+
{
21+
{".cs", "[assembly: {0}]"},
22+
{".vb", "<assembly: {0}>"},
23+
{".fs", "[<assembly: {0}>]"}
24+
};
1725
}
1826

1927
public static string GetAssemblyInfoTemplateFor(string assemblyInfoFile)
@@ -35,18 +43,19 @@ public static string GetAssemblyInfoAddFormatFor([NotNull] string fileExtension)
3543
if (fileExtension == null)
3644
throw new ArgumentNullException("fileExtension");
3745

38-
// TODO: It would be nice to do something a bit more clever here, like reusing the VersionAssemblyInfo.* templates somehow. @asbjornu
39-
switch (fileExtension.ToLowerInvariant())
40-
{
41-
case ".cs":
42-
return "[assembly: {0}]";
43-
case ".vb":
44-
return "<assembly: {0}>";
45-
case ".fs":
46-
return "[<assembly: {0}>]";
47-
}
46+
string assemblyInfoAddFormat;
47+
if (!assemblyInfoAddFormats.TryGetValue(fileExtension, out assemblyInfoAddFormat))
48+
throw new NotSupportedException(string.Format("Unknown file extension '{0}'.", fileExtension));
49+
50+
return assemblyInfoAddFormat;
51+
}
52+
53+
public static bool IsSupported([NotNull] string fileExtension)
54+
{
55+
if (fileExtension == null)
56+
throw new ArgumentNullException("fileExtension");
4857

49-
throw new NotSupportedException(string.Format("Unknown file extension '{0}'.", fileExtension));
58+
return assemblyInfoAddFormats.Keys.Contains(fileExtension, StringComparer.OrdinalIgnoreCase);
5059
}
5160

5261
private static IEnumerable<FileInfo> GetEmbeddedVersionAssemblyFiles()

src/GitVersionExe/AssemblyInfoFileUpdate.cs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public AssemblyInfoFileUpdate(Arguments args, string workingDirectory, VersionVa
3434
var assemblyFileVersionRegex = new Regex(@"AssemblyFileVersion\(""[^""]*""\)");
3535
var assemblyFileVersionString = string.Format("AssemblyFileVersion(\"{0}\")", assemblyFileVersion);
3636

37-
foreach (var assemblyInfoFile in assemblyInfoFiles.Select(f => new FileInfo(f)))
37+
foreach (var assemblyInfoFile in assemblyInfoFiles)
3838
{
3939
var backupAssemblyInfo = assemblyInfoFile.FullName + ".bak";
4040
var localAssemblyInfo = assemblyInfoFile.FullName;
@@ -73,7 +73,7 @@ static string ReplaceOrAppend(Regex replaceRegex, string inputString, string rep
7373
}
7474

7575

76-
static IEnumerable<string> GetAssemblyInfoFiles(string workingDirectory, Arguments args, IFileSystem fileSystem)
76+
static IEnumerable<FileInfo> GetAssemblyInfoFiles(string workingDirectory, Arguments args, IFileSystem fileSystem)
7777
{
7878
if (args.UpdateAssemblyInfoFileName != null && args.UpdateAssemblyInfoFileName.Any(x => !string.IsNullOrWhiteSpace(x)))
7979
{
@@ -83,16 +83,18 @@ static IEnumerable<string> GetAssemblyInfoFiles(string workingDirectory, Argumen
8383

8484
if (EnsureVersionAssemblyInfoFile(args, fileSystem, fullPath))
8585
{
86-
yield return fullPath;
86+
yield return new FileInfo(fullPath);
8787
}
8888
}
8989
}
9090
else
9191
{
92-
foreach (var item in fileSystem.DirectoryGetFiles(workingDirectory, "AssemblyInfo.*", SearchOption.AllDirectories)
93-
.Where(f => f.EndsWith(".cs", StringComparison.OrdinalIgnoreCase) || f.EndsWith(".vb", StringComparison.OrdinalIgnoreCase)))
92+
foreach (var item in fileSystem.DirectoryGetFiles(workingDirectory, "AssemblyInfo.*", SearchOption.AllDirectories))
9493
{
95-
yield return item;
94+
var assemblyInfoFile = new FileInfo(item);
95+
96+
if (AssemblyVersionInfoTemplates.IsSupported(assemblyInfoFile.Extension))
97+
yield return assemblyInfoFile;
9698
}
9799
}
98100
}

0 commit comments

Comments
 (0)