63 lines
1.2 KiB
Go
63 lines
1.2 KiB
Go
|
package cmd
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"github.com/containous/flaeg"
|
||
|
"github.com/containous/traefik/version"
|
||
|
"io"
|
||
|
"os"
|
||
|
"runtime"
|
||
|
"text/template"
|
||
|
)
|
||
|
|
||
|
var versionTemplate = `Version: {{.Version}}
|
||
|
Codename: {{.Codename}}
|
||
|
Go version: {{.GoVersion}}
|
||
|
Built: {{.BuildTime}}
|
||
|
OS/Arch: {{.Os}}/{{.Arch}}`
|
||
|
|
||
|
// NewVersionCmd builds a new Version command
|
||
|
func NewVersionCmd() *flaeg.Command {
|
||
|
|
||
|
//version Command init
|
||
|
return &flaeg.Command{
|
||
|
Name: "version",
|
||
|
Description: `Print version`,
|
||
|
Config: struct{}{},
|
||
|
DefaultPointersConfig: struct{}{},
|
||
|
Run: func() error {
|
||
|
if err := getVersionPrint(os.Stdout); err != nil {
|
||
|
return err
|
||
|
}
|
||
|
fmt.Printf("\n")
|
||
|
return nil
|
||
|
|
||
|
},
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func getVersionPrint(wr io.Writer) error {
|
||
|
tmpl, err := template.New("").Parse(versionTemplate)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
v := struct {
|
||
|
Version string
|
||
|
Codename string
|
||
|
GoVersion string
|
||
|
BuildTime string
|
||
|
Os string
|
||
|
Arch string
|
||
|
}{
|
||
|
Version: version.Version,
|
||
|
Codename: version.Codename,
|
||
|
GoVersion: runtime.Version(),
|
||
|
BuildTime: version.BuildDate,
|
||
|
Os: runtime.GOOS,
|
||
|
Arch: runtime.GOARCH,
|
||
|
}
|
||
|
|
||
|
return tmpl.Execute(wr, v)
|
||
|
}
|