Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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
}
}
func GetVersion(swaggerJSON json.RawMessage) string {
var sv swaggerVersion
if err := json.Unmarshal(swaggerJSON, &sv); err != nil {
panic(err)
}
return sv.Info.Version
}