-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathProductVersion.t4
58 lines (48 loc) · 2.48 KB
/
ProductVersion.t4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<#@ assembly name="System.DirectoryServices.AccountManagement" #>
<#@ import namespace="System.DirectoryServices.AccountManagement" #>
<#
//// VERSION CONFIGURATION /////////////////////////////////////////////////////
uint major = 1;
uint minor = 1;
uint patch = 0;
string preReleaseStage = "";
uint preReleaseLevel = 0;
string build = Environment.GetEnvironmentVariable("BUILD_NUMBER") ?? "0";
string revision = Environment.GetEnvironmentVariable("REVISION_NUMBER") ?? "0";
string specialBuild = Environment.GetEnvironmentVariable("SPECIAL_BUILD");
string gitCommit = Environment.GetEnvironmentVariable("GIT_COMMIT") ?? "";
if (gitCommit.Length > 10)
{
gitCommit = gitCommit.Substring(0, 10);
}
string user = Environment.UserName;
string machine = Environment.MachineName;
////////////////////////////////////////////////////////////////////////////////
#>
<#
IEnumerable<object> rawPreRelease = from identifier in new object[] { preReleaseStage, preReleaseLevel }
where identifier != null
&& (identifier is string && (string)identifier != ""
|| identifier is uint && (uint)identifier > 0)
select identifier;
IEnumerable<object> rawBuildMetaData;
if (build == "0" || revision == "0")
{
rawBuildMetaData = new object[] { user, machine, Environment.OSVersion.Platform, specialBuild };
}
else
{
rawBuildMetaData = new object[] { build, gitCommit, Environment.OSVersion.Platform, specialBuild };
}
rawBuildMetaData = from identifier in rawBuildMetaData
where identifier != null
&& (!(identifier is string) || (string)identifier != "" && (string)identifier != "0")
select identifier;
string productVersion = $"{major}.{minor}.{patch}"
+ (rawPreRelease.Any() ? $"-{string.Join(".", rawPreRelease)}" : "")
+ $"+{string.Join(".", rawBuildMetaData)}";
IEnumerable<object> preRelease = from identifier in rawPreRelease
select identifier is string ? $@"""{identifier}""" : (identifier.GetType().IsEnum ? $"{identifier.GetType().FullName}.{identifier}" : identifier);
IEnumerable<object> buildMetaData = from identifier in rawBuildMetaData
select identifier is string ? $@"""{identifier}""": (identifier.GetType().IsEnum ? $"{identifier.GetType().FullName}.{identifier}" : identifier);
#>