現在の git commit ハッシュを含むヘッダー ファイルを作成するために、bazel gen-rule を作成したいと考えています。
# Generate "version_info.h"
cc_library(
name = "version_info",
srcs = [],
hdrs = ["version_info.h"],
visibility = ["//visibility:private"],
)
VERSION_INFO_H_BASH = """
#ifndef VERSION_INFO_H_
#define VERSION_INFO_H_
#define COMMIT_HASH "%s"
#endif // VERSION_INFO_H_
"""
VERSION_INFO_H_PS = """
#ifndef VERSION_INFO_H_
#define VERSION_INFO_H_
#define COMMIT_HASH "{0}"
#endif // VERSION_INFO_H_
"""
genrule(
name = "generate_version_info",
outs = ["version_info.h"],
cmd_ps = ("cd what_comes_here; @'%s'@ -f \"$$(git.exe rev-parse HEAD)\" | Out-File $(OUTS)" % VERSION_INFO_H_PS),
cmd = ("cd what_comes_here"; printf '%s' \"$$(git rev-parse HEAD)\ > $(OUTS)" % VERSION_INFO_H_BASH),
visibility = ["//visibility:private"],
)
これまでのところ、Linuxバージョン(cmd)はテストしていませんが、Windows(cmd_ps)でのみテストしており、動作しますが、問題は、powershellを実行するとワークスペースディレクトリ(私のgitルート)にないことです. what_comes_hereワークスペースのルートに最初に cd するには、何を置き換える必要がありますか?