first commit
This commit is contained in:
118
src/app/version/version.go
Normal file
118
src/app/version/version.go
Normal file
@ -0,0 +1,118 @@
|
||||
// Package version defines current build app information
|
||||
package version
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"runtime"
|
||||
"strings"
|
||||
)
|
||||
|
||||
//go:generate go-enum -f=$GOFILE --lower --marshal
|
||||
|
||||
// AppName stores the Application Name
|
||||
const (
|
||||
AppName = "qfixpt"
|
||||
poweredBy = "Powered by Quantex Technologies"
|
||||
quantexEnvironment = "QUANTEX_ENVIRONMENT"
|
||||
)
|
||||
|
||||
var (
|
||||
// See tools/build.sh script to see how these variables are set
|
||||
versionBase = "0.1" //nolint:gochecknoglobals // Should be global cos this is set on the build with version info
|
||||
buildHash string //nolint:gochecknoglobals // Idem
|
||||
buildBranch string //nolint:gochecknoglobals // Idem
|
||||
builtTime string //nolint:gochecknoglobals // Idem
|
||||
hostname string //nolint:gochecknoglobals // Idem
|
||||
)
|
||||
|
||||
// EnvironmentType environments
|
||||
// ENUM(
|
||||
// prod
|
||||
// open-demo
|
||||
// demo
|
||||
// dev
|
||||
// )
|
||||
type EnvironmentType int //nolint:recvcheck // The methods of this are autogenerated
|
||||
|
||||
var environment EnvironmentType //nolint:gochecknoglobals // Just keept this global to avoid having to create an instance
|
||||
|
||||
func init() {
|
||||
aux := os.Getenv(quantexEnvironment)
|
||||
if aux == "" {
|
||||
panic("QUANTEX_ENVIRONMENT is not set")
|
||||
}
|
||||
|
||||
env, err := ParseEnvironmentType(aux)
|
||||
if err != nil {
|
||||
panic("Invalid QUANTEX_ENVIRONMENT value: " + aux + " " + err.Error())
|
||||
}
|
||||
|
||||
environment = env
|
||||
}
|
||||
|
||||
// Base returns the version base name
|
||||
func Base() string {
|
||||
return versionBase
|
||||
}
|
||||
|
||||
// BuildHash returns the build hash
|
||||
func BuildHash() string {
|
||||
return buildHash
|
||||
}
|
||||
|
||||
// BuildBranch returns the build branch
|
||||
func BuildBranch() string {
|
||||
return buildBranch
|
||||
}
|
||||
|
||||
// Hostname returns the build time
|
||||
func Hostname() string {
|
||||
return hostname
|
||||
}
|
||||
|
||||
// Name returns the version name
|
||||
func Name() string {
|
||||
bh := buildHash
|
||||
if len(buildHash) >= 8 {
|
||||
bh = buildHash[0:8]
|
||||
}
|
||||
|
||||
return versionBase + "-" + bh
|
||||
}
|
||||
|
||||
// BuiltTime returns the build time
|
||||
func BuiltTime() string {
|
||||
return builtTime
|
||||
}
|
||||
|
||||
// Environment returns service environment
|
||||
func Environment() EnvironmentType {
|
||||
return environment
|
||||
}
|
||||
|
||||
// Environment returns service environment
|
||||
func BuildFullInfo() string {
|
||||
bt := strings.Replace(builtTime, "-", " ", -1)
|
||||
bh := buildHash
|
||||
|
||||
if len(buildHash) >= 8 {
|
||||
bh = buildHash[0:8]
|
||||
}
|
||||
|
||||
return fmt.Sprintf("v%s-%s-%s, built on %s ", versionBase, buildBranch, bh, bt)
|
||||
}
|
||||
|
||||
// Info returns the complete version information
|
||||
func Info() string {
|
||||
sb := strings.Builder{}
|
||||
// revive:disable No need to handle errors here
|
||||
sb.WriteString(fmt.Sprintf("v%s \n", versionBase))
|
||||
sb.WriteString(fmt.Sprintln(" Build ", BuildFullInfo()))
|
||||
sb.WriteString(fmt.Sprintln(" ", poweredBy, ""))
|
||||
sb.WriteString(fmt.Sprintf(" Go %s \n", runtime.Version()))
|
||||
sb.WriteString(fmt.Sprintf(" Environment %s \n", environment))
|
||||
sb.WriteString(fmt.Sprintf(" Built from %s \n", hostname))
|
||||
// revive:enable
|
||||
return sb.String()
|
||||
}
|
||||
Reference in New Issue
Block a user