package version

import (
	"fmt"
	"runtime"

	"github.com/pingcap/log"
	"go.uber.org/zap"
)

// Version information.
var (
	ReleaseVersion = "None"
	BuildTS        = "None"
	GitHash        = "None"
	GitBranch      = "None"
	goVersion      = runtime.Version()
)

// LogInfo logs version information.
func LogInfo() {
	oldLevel := log.GetLevel()
	log.SetLevel(zap.InfoLevel)
	defer log.SetLevel(oldLevel)

	log.L().Info("release info",
		zap.String("release-version", ReleaseVersion),
		zap.String("git-hash", GitHash),
		zap.String("git-branch", GitBranch),
		zap.String("go-version", goVersion),
		zap.String("utc-build-time", BuildTS))
}

// Info returns version information.
func Info() string {
	return fmt.Sprintf(`Release Version: %s
Git Commit Hash: %s
Git Branch: %s
Go Version: %s
UTC Build Time: %s`, ReleaseVersion, GitHash, GitBranch, goVersion, BuildTS)
}
