我需要为TeamCity中的持续集成设置每个分支版本控制架构。我需要做的最后一部分是Powershell脚本,用于解析C ++头文件中的版本。
我是按照以下步骤进行的
我有以下C ++头文件
#ifndef VERSION_H
#define VERSION_H
#define VERSION 4.0.1
#define BUILD_NUMBER 9999
//git SHA
#define GIT_SHA NotCommittedChanges
#endif //VERSION_H
和Powershell脚本应该读取VERSION并设置
$content = Get-Content version.h
$version = ParseDefine('VERSION', $content)
$buildNumber =[string]::Concat($version, ".", '%build.number%')
Write-Host "##teamcity[buildNumber '$buildNumber']"
我需要实现ParseDefine函数,但是powershell的每一行都是我的痛苦...
答案 0 :(得分:0)
最后,我最终在PowerShell解决方案中部分使用了C#,这对我来说最简单:
$csharp = @"
public class Reader
{
public static string ReadCDefine(string content, string key)
{
foreach (string line in System.IO.File.ReadAllLines(content))
{
string lineT = line.Trim();
string def = "#define " + key + " ";
if (lineT.StartsWith(def))
{
return line.Substring(def.Length).Trim();
}
}
return null;
}
}
"@
Add-Type -TypeDefinition "$csharp"
$version = [Reader]::ReadCDefine("version.h", "VERSION")
$buildNumber =[string]::Concat($version,".", '%build.number%')
Write-Host "##teamcity[buildNumber '$buildNumber']"