Я довольно новичок в работе с yaml и golang. В настоящее время я создаю golang программу, которая анализирует пакет rpm для проверки зависимостей подсистемы. Он расширяет библиотеку go -rpmutils .
Пока это код, который у меня есть в моей основной функции для обработки условий:
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 для указания времени. c существуют зависимости подсистемы.
В отдельном файле yaml у меня есть:
allowed-deps:
-dep1
-dep2
-dep3
third-party-deps:
-dep4
-dep5
-dep6
internal-deps:
-dep7
-dep8
-dep9
Я бы хотел сравнить значение var p из for для l oop со значениями в файле yaml. Так, например:
- , если p равно только значениям из допустимых значений deps, выведите «успешно построенные rpm» и не запрашивайте os.Exit (1)
- , если p равно любому из для сторонних deps выведите «err msg для сторонних deps» и os.Exit (1)
- , если p равно любым внутренним deps, выведите «another err mssg» и os.Exit (1) )
Как я могу go сделать это?