package orusapi import ( "encoding/json" "regexp" ) var versionAttrRe = regexp.MustCompile(`"version": ?"[0-9.]+"`) func JSONFixVersionAttribute(versionTag, vcsCommit string) func(data []byte) []byte { return func(data []byte) []byte { if versionTag == "" { return data } s := string(data[:len(data)-1]) + "-" + versionTag if vcsCommit != "" { s += "." + vcsCommit } s += `"` return []byte(s) } } func InjectVersion(versionTag, vcsCommit string) func(json.RawMessage) json.RawMessage { jsonFixVersionAttribute := JSONFixVersionAttribute(versionTag, vcsCommit) return func(swaggerJSON json.RawMessage) json.RawMessage { return versionAttrRe.ReplaceAllFunc(swaggerJSON, jsonFixVersionAttribute) } } type swaggerVersion struct { Info struct { Version string `json:"version"` } `json:"info"` } func GetVersion(swaggerJSON json.RawMessage) string { var sv swaggerVersion if err := json.Unmarshal(swaggerJSON, &sv); err != nil { panic(err) } return sv.Info.Version }