Ale jo tak ste me ukecali:
config := help.SetArgs()
setLog(config)
f, err := os.OpenFile(config.OutFile, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0644)
if err != nil {
log.Errorf("Cannon open output file: %s", config.OutFile)
}
defer f.Close()
.
.
.
t := setTemplate(config)
err = t.Execute(f, endpoints)
if err != nil {
log.Fatalf("Error during template occurred: %s", err)
}
a setTemplate vypada nejak takhle:
.
.
log.Infof ("Using template file %s", config.Template)
t, err := template.ParseFiles(config.Template)
if err != nil {
log.Fatalf("Unable to parse template %s ", config.Template)
}
return t
.
.
Cely je to o tom ze se stahne swagger definice a udela se config podle pouzity technologie (nginx, krakend whatsever). Pouzivali jsme to na poc api gateway, kde bylo nutny rychle generovat config mapy. Myslenka je takova ze vezmou vsechny endpointy ktery to najde ze swaggeru, prida se nakej kontext a udela se z toho novy pole (var endpoints) a to se podle go templaty vyrenderuje do nakyho konfiguraku. Jako vsechno funguje cajk, templata je vetsinou nakej range. To pridani radku je blby v tom ze buhvi proc z nakyho duvodu to openshift/kubernetes nema rad a kdyz v configmape najde white line nebo nakej divnej tak se pak cela tak configmapa uplne rozsype. Je funkcni ale strasne se v ni cte o ad-hoc upravach ani nemluvim. Neni to zadnej showstoper je me to spis trochu sere.