1 # Script for reading generated version values and updating metadata properties
2 
3 #read major / minor version values from version.h (generated by cmake via version.h.in)
4 $majorVer=99
5 $minorVer=99
6 $patchVer=0
7 $buildNum=0
8 
9 #define regular expressions to be used when checking for #define statements
10 $versionSniffingRegex = "(\s*#define\s+(\S+)\s+)(\d+)"
11 
12 #read generated file, load values from this with regular expression
13 Get-Content ".\version.h" |  Where-Object { $_ -match $versionSniffingRegex } | ForEach-Object {
14 	switch ($Matches[2])
15 	{
16 		"SRT_VERSION_MAJOR" { $majorVer = $Matches[3] }
17 		"SRT_VERSION_MINOR" { $minorVer = $Matches[3] }
18 		"SRT_VERSION_PATCH" { $patchVer = $Matches[3] }
19 		"SRT_VERSION_BUILD" { $buildNum = $Matches[3] }
20 	}
21 }
22 
23 $FileDescriptionBranchCommitValue = "SRT Local Build"
24 
25 if($Env:APPVEYOR){
26 	#make AppVeyor update with this new version number
27 	Update-AppveyorBuild -Version "$majorVer.$minorVer.$patchVer.$buildNum"
28 	$FileDescriptionBranchCommitValue = "$Env:APPVEYOR_REPO_NAME - $($Env:APPVEYOR_REPO_BRANCH) ($($Env:APPVEYOR_REPO_COMMIT.substring(0,8)))"
29 }
30 if($Env:TEAMCITY_VERSION){
31 	#make TeamCity update with this new version number
32 	Write-Output "##teamcity[buildNumber '$majorVer.$minorVer.$patchVer.$buildNum']"
33 	Write-Output "##teamcity[setParameter name='MajorVersion' value='$majorVer']"
34 	Write-Output "##teamcity[setParameter name='MinorVersion' value='$minorVer']"
35 	Write-Output "##teamcity[setParameter name='PatchVersion' value='$patchVer']"
36 	Write-Output "##teamcity[setParameter name='BuildVersion' value='$buildNum']"
37 	$FileDescriptionBranchCommitValue = "$majorVer.$minorVer.$patchVer.$buildNum - ($($Env:BUILD_VCS_NUMBER.substring(0,8)))"
38 }
39 
40 #find C++ resource files and update file description with branch / commit details
41 $FileDescriptionStringRegex = '(\bVALUE\s+\"FileDescription\"\s*\,\s*\")([^\"]*\\\")*[^\"]*(\")'
42 
43 Get-ChildItem -Path "../srtcore/srt_shared.rc" | ForEach-Object {
44     $fileName = $_
45     Write-Output "Processing metadata changes for file: $fileName"
46 
47     $FileLines = Get-Content -path $fileName
48 
49     for($i=0;$i -lt $FileLines.Count;$i++)
50     {
51         $FileLines[$i] = $FileLines[$i] -Replace $FileDescriptionStringRegex, "`${1}$FileDescriptionBranchCommitValue`${3}"
52     }
53 
54     [System.IO.File]::WriteAllLines($fileName.FullName, $FileLines)
55 }
56 
57