如何阅读powershell的C头#define

时间:2017-05-15 19:59:59

标签: powershell teamcity version

我需要为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的每一行都是我的痛苦...

1 个答案:

答案 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']"