【发布时间】:2020-02-21 08:50:23
【问题描述】:
我对使用 yaml 和 golang 比较陌生。目前,我正在创建一个解析 rpm 包以检查子系统依赖关系的 golang 程序。它扩展了go-rpmutils library。
到目前为止,这是我在主函数中处理条件的代码:
func main() {
// Parse the rpm
rpm, err := rpmutils.ReadRpm("file.rpm")
if err != nil {
panic(err)
}
// Get RPM Deps
dependencies, err := rpm.Header.GetStrings(rpmutils.REQUIRENAME)
if err != nil {
panic(err)
}
// Check for specific dep condition
for _, p := range dependencies {
if strings.HasPrefix(p, "prefix1") && p != "string-including-prefix1" {
fmt.Printf("\t%s\n", p)
defer os.Exit(1)
}
}
}
我能够输出依赖关系,但想设置几个 if else 条件以用于特定子系统依赖关系存在的情况。
在一个单独的 yaml 文件中,我有:
allowed-deps:
-dep1
-dep2
-dep3
third-party-deps:
-dep4
-dep5
-dep6
internal-deps:
-dep7
-dep8
-dep9
我想将 for 循环中 var p 的值与 yaml 文件中的值进行比较。比如:
- 如果 p 仅等于 allowed-deps 中的值,则打印“successfully built rpm”并且不提示 os.Exit(1)
- 如果 p 等于任何第三方部门,则打印“err msg for third-party deps”和 os.Exit(1)
- 如果 p 等于任何内部依赖,则打印“another err mssg”和 os.Exit(1)
我该怎么做?
【问题讨论】: