Newer
Older
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 {
}
func GetVersion(swaggerJSON json.RawMessage) string {
var sv swaggerVersion
if err := json.Unmarshal(swaggerJSON, &sv); err != nil {
panic(err)
}
return sv.Info.Version
}