Skip to content
Snippets Groups Projects
version.go 1009 B
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)
Axel Prel's avatar
Axel Prel committed

	return func(swaggerJSON json.RawMessage) json.RawMessage {
		return versionAttrRe.ReplaceAllFunc(swaggerJSON, jsonFixVersionAttribute)
	}
}

type swaggerVersion struct {
	Info struct {
Axel Prel's avatar
Axel Prel committed
		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)
	}
Axel Prel's avatar
Axel Prel committed