2018-08-18 01:31:45 +08:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"log"
|
|
|
|
"os"
|
|
|
|
"os/exec"
|
|
|
|
"runtime"
|
|
|
|
"strings"
|
|
|
|
"text/template"
|
|
|
|
)
|
|
|
|
|
|
|
|
const Homepage = "https://github.com/yi-jiayu/secure"
|
|
|
|
|
|
|
|
var tmpl = template.Must(template.New("version.go").Parse(`//go:generate go run generate/versioninfo.go
|
2018-08-18 21:56:10 +08:00
|
|
|
// Code generated by go generate; DO NOT EDIT.
|
2018-08-18 01:31:45 +08:00
|
|
|
|
|
|
|
package main
|
|
|
|
|
|
|
|
const Version = "secure {{ .Version }} ({{ .GOOS }}-{{ .GOARCH }}) {{ .GoVersion }}\n{{ .Homepage }}"
|
|
|
|
`))
|
|
|
|
|
|
|
|
type VersionInfo struct {
|
|
|
|
Version string
|
|
|
|
GOOS string
|
|
|
|
GOARCH string
|
|
|
|
GoVersion string
|
|
|
|
Homepage string
|
|
|
|
}
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
describeCmd := exec.Command("git", "describe", "--tags", "--always")
|
2018-08-18 21:56:10 +08:00
|
|
|
output, err := describeCmd.Output()
|
2018-08-18 01:31:45 +08:00
|
|
|
if err != nil {
|
|
|
|
log.Fatal(fmt.Errorf("error describing commit: %v", err))
|
|
|
|
}
|
2018-08-18 21:56:10 +08:00
|
|
|
version := strings.TrimSpace(string(output))
|
2018-08-18 01:31:45 +08:00
|
|
|
|
|
|
|
goos := os.Getenv("GOOS")
|
|
|
|
if goos == "" {
|
|
|
|
goos = runtime.GOOS
|
|
|
|
}
|
|
|
|
|
|
|
|
goarch := os.Getenv("GOARCH")
|
|
|
|
if goarch == "" {
|
|
|
|
goarch = runtime.GOARCH
|
|
|
|
}
|
|
|
|
|
|
|
|
goVersion := runtime.Version()
|
|
|
|
|
|
|
|
vi := VersionInfo{
|
2018-08-18 21:56:10 +08:00
|
|
|
Version: version,
|
2018-08-18 01:31:45 +08:00
|
|
|
GOARCH: goarch,
|
|
|
|
GOOS: goos,
|
|
|
|
GoVersion: goVersion,
|
|
|
|
Homepage: Homepage,
|
|
|
|
}
|
|
|
|
|
|
|
|
f, err := os.Create("version.go")
|
|
|
|
if err != nil {
|
|
|
|
log.Fatal(fmt.Errorf("error creating version.go: %v", err))
|
|
|
|
}
|
|
|
|
|
|
|
|
err = tmpl.Execute(f, vi)
|
|
|
|
if err != nil {
|
|
|
|
log.Fatal(fmt.Errorf("error executing template: %v", err))
|
|
|
|
}
|
|
|
|
}
|