talos/pkg/version/version.go
Andrey Smirnov 1572966686 feat: bring in install-cni & pod-checkpointer from extras packages
This introduces newly built multi-arch images from
`talos-systems/extras`.

Also fixed default installer image if config is missing.

Signed-off-by: Andrey Smirnov <smirnov.andrey@gmail.com>
2020-10-08 14:45:00 -07:00

80 lines
1.7 KiB
Go

// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
package version
import (
"bytes"
"fmt"
"runtime"
"text/template"
machineapi "github.com/talos-systems/talos/pkg/machinery/api/machine"
)
var (
// Name is set at build time.
Name string
// Tag is set at build time.
Tag string
// SHA is set at build time.
SHA string
// Built is set at build time.
Built string
// PkgsVersion is set at build time.
PkgsVersion string
// ExtrasVersion is set at build time.
ExtrasVersion string
)
const versionTemplate = ` Tag: {{ .Tag }}
SHA: {{ .Sha }}
Built: {{ .Built }}
Go version: {{ .GoVersion }}
OS/Arch: {{ .Os }}/{{ .Arch }}
`
// NewVersion prints verbose version information.
func NewVersion() *machineapi.VersionInfo {
return &machineapi.VersionInfo{
Tag: Tag,
Sha: SHA,
Built: Built,
GoVersion: runtime.Version(),
Os: runtime.GOOS,
Arch: runtime.GOARCH,
}
}
// PrintLongVersion prints verbose version information.
func PrintLongVersion() {
printLong(NewVersion())
}
// PrintLongVersionFromExisting prints verbose version information.
func PrintLongVersionFromExisting(v *machineapi.VersionInfo) {
printLong(v)
}
func printLong(v *machineapi.VersionInfo) {
var wr bytes.Buffer
tmpl, err := template.New("version").Parse(versionTemplate)
if err != nil {
return
}
err = tmpl.Execute(&wr, v)
if err != nil {
return
}
fmt.Println(wr.String())
}
// PrintShortVersion prints the tag and SHA.
func PrintShortVersion() {
fmt.Printf("%s %s-%s\n", Name, Tag, SHA)
}