Skip to content
Snippets Groups Projects
Commit a24a188961ce authored by Florent Aide's avatar Florent Aide
Browse files

add template for restapi/version.go, injection thx to christophe de vienne

parent 6634e1f0eaac
No related branches found
No related tags found
No related merge requests found
......@@ -72,6 +72,10 @@
target: "{{ joinFilePath .Target .ServerPackage }}"
file_name: "configure_{{ .Name }}.go"
skip_exists: true
- name: version
source: server/versionapi.gotmpl
target: "{{ joinFilePath .Target .ServerPackage }}"
file_name: version.go
models:
# built-in templates
......
......@@ -9,7 +9,7 @@
)
var (
Version string
Version = restapi.GetVersion()
)
type ConfigFile struct {
......
// This file is safe to edit. Once it exists it will not be overwritten
{{ if .Copyright -}}// {{ comment .Copyright -}}{{ end }}
package {{ .APIPackage }}
import (
"encoding/json"
{{ imports .DefaultImports }}
{{ imports .Imports }}
)
var (
VCSCommit string
VersionTag = "dev"
injectVersion = orusapi.InjectVersion(VersionTag, VCSCommit)
)
func GetSwaggerJSON() json.RawMessage {
return injectVersion(SwaggerJSON)
}
func GetFlatSwaggerJSON() json.RawMessage {
return injectVersion(FlatSwaggerJSON)
}
func GetVersion() string {
return orusapi.GetVersion(GetSwaggerJSON())
}
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
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment