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