В настоящее время я работаю над шагом рабочего процесса Bitrise, и я пытаюсь разрешить этот шаг, чтобы дать пользователю возможность предоставить список необязательных пар ключ/значение YAML для ввода определенного шага, который в настоящее время пытается реализовать как:
my_step@1:
inputs:
- uri_actions:
- button_text: Some text
uri: www.google.com
- button_text: Some text 2
uri: www.google2.com
- button_text: Some text 3
uri: www.google3.com
а затем пытаемся разобрать в Go как структуры:
type config struct {
UriActionList []UriAction `env:"uri_actions"`
}
type UriAction struct {
ButtonText string `env:"button_text"`
Uri string `env:"uri"`
}
а также пытались сопоставить структуру config
как варианты
type config struct {
UriActionList map[UriAction]string `env:"uri_actions"`
}
Шаг Bitrise использует stepconf
для автоматического анализа рабочего процесса пользователей и сопоставления YAML с объявленным structs
:
func main() {
var cfg config
if err := stepconf.Parse(&cfg); err != nil {
fmt.Fprintf(os.Stderr, "Error: %s\n", err)
os.Exit(1)
}
stepconf.Print(cfg)
}
Но ни один из них не играет хорошо вообще ..
Это мое первое знакомство с Go и разработка собственного шага Bitrise, так что же я делаю не так? Или есть более цивилизованный способ добиться этого?