Skip to content

Commit 1075270

Browse files
committed
Conflicts: src/app/FakeLib/Globbing/Globbing.fs
2 parents 4b5df64 + c39a9a7 commit 1075270

File tree

3 files changed

+51
-1
lines changed

3 files changed

+51
-1
lines changed

src/app/FakeLib/DynamicsNavFile.fs

+30
Original file line numberDiff line numberDiff line change
@@ -189,3 +189,33 @@ let splitNavisionFiles fileNames destDir =
189189
use outputFile = new StreamWriter(Path.Combine(destDir, targetFile), false)
190190
outputFile.Write(x.Source)
191191
outputFile.Close()
192+
193+
/// Gets the version number for the specified version tag in a Dynamics NAV version tag list
194+
let getTagVersionInVersionTagList (versionTag : string) (tagList : string) =
195+
let versionTag = versionTag.ToUpper()
196+
if tagList.ToUpper().Contains versionTag then
197+
let tag = splitVersionTags tagList
198+
|> Seq.find (fun x -> x.StartsWith versionTag)
199+
tag.Replace(versionTag, "")
200+
else
201+
""
202+
203+
/// Gets the version number for the specified version tag in a Dynamics NAV object
204+
let getTagVersionInObject (versionTag : string) sourceCode =
205+
let tagList = getVersionTagList sourceCode
206+
getTagVersionInVersionTagList versionTag tagList
207+
208+
/// Gets the highest version number for a specified version tag in a number of Dynamics NAV objects
209+
let getHighestTagVersionInObjects (versionTag : string) sourceCode =
210+
objectsInObjectString sourceCode
211+
|> Seq.map (fun objectSourcecode -> getTagVersionInObject versionTag objectSourcecode.Source)
212+
|> Seq.filter (fun version -> not (String.IsNullOrWhiteSpace(version)))
213+
|> Seq.max
214+
215+
/// Gets the highest version number for a specified version tag in a number of Dynamics NAV objects in a set of object files
216+
let getHighestTagVersionInFiles (versionTag : string) fileNames =
217+
fileNames
218+
|> Seq.map (fun fileName -> File.ReadAllText(fileName))
219+
|> Seq.map (fun sourceCode -> getTagVersionInObject versionTag sourceCode)
220+
|> Seq.filter (fun version -> not (String.IsNullOrWhiteSpace(version)))
221+
|> Seq.max

src/app/FakeLib/Globbing/Globbing.fs

+1-1
Original file line numberDiff line numberDiff line change
@@ -146,4 +146,4 @@ let isMatch pattern path : bool =
146146
globRegexCache.TryAdd(pattern, compiled) |> ignore
147147
compiled
148148

149-
regex.IsMatch(path)
149+
regex.IsMatch(path)

src/test/Test.FAKECore/NAVFiles/NAVVersionTagsSpecs.cs

+20
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,26 @@ static IEnumerable<string> GetMissingRequiredTags(IEnumerable<string> requiredTa
2929
}
3030
}
3131

32+
public class CanGetVersionNumbers
33+
{
34+
It should_find_version_number = () =>
35+
DynamicsNavFile.getTagVersionInVersionTagList("VU", "VU2.40.03,NTI.Nienburg,ARC5.10,MCN,NIW,PRE,AUS01").ShouldEqual("2.40.03");
36+
37+
It should_not_find_version_for_non_existing_tag = () =>
38+
DynamicsNavFile.getTagVersionInVersionTagList("NAVW1", "VU2.40.03,NTI.Nienburg,ARC5.10,MCN,NIW,PRE,AUS01").ShouldBeEmpty();
39+
40+
It should_find_the_highest_version_number = () => {
41+
var sourceCode = File.ReadAllText(@"NAVFiles/Table_3_and_4.txt");
42+
DynamicsNavFile.getHighestTagVersionInObjects("NAVW1", sourceCode).ShouldEqual("7.10");
43+
};
44+
45+
It should_find_the_highest_version_number_in_files = () =>
46+
{
47+
var files = new[] { @"NAVFiles/Codeunit_1.txt", @"NAVFiles/Table_3.txt" };
48+
DynamicsNavFile.getHighestTagVersionInFiles("NAVW1", files).ShouldEqual("7.00");
49+
};
50+
}
51+
3252
public class CanDetectInvalidTags
3353
{
3454
It should_find_invalid_IssueNo = () =>

0 commit comments

Comments
 (0)