version/main.go

58 lines
1.1 KiB
Go
Raw Normal View History

2025-04-20 01:52:40 +03:00
package main
2025-04-20 01:04:48 +03:00
2025-04-20 02:00:13 +03:00
import (
"fmt"
"io/ioutil"
"os"
"os/exec"
)
2025-04-20 02:25:31 +03:00
const warning = "//WARNING! DO NOT EDIT THIS FILE BY HAND. IT IS AUTO GENERATED.\n"
2025-04-20 02:11:52 +03:00
const header = "package main\nconst gitVersion = \""
2025-04-20 02:00:13 +03:00
2025-04-20 02:25:31 +03:00
const code = `
import (
"fmt"
"os"
"github.com/spf13/pflag"
)
func init() {
pflag.ErrHelp = nil
versionFlagSet := pflag.NewFlagSet("version", pflag.ContinueOnError)
versionFlagSet.ParseErrorsWhitelist.UnknownFlags = true
versionFlagSet.SetOutput(nil)
versionIsAsked := versionFlagSet.BoolP("version", "v", false, "Prints version of this application.")
versionFlagSet.BoolP("help", "h", false, "") // This line is needed to supress (redefine) built-in help flag.
err := versionFlagSet.Parse(os.Args)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
if *versionIsAsked {
2025-04-20 02:29:47 +03:00
fmt.Println(gitVersion)
2025-04-20 02:25:31 +03:00
os.Exit(0)
}
}
`
2025-04-20 02:00:13 +03:00
func main() {
cmd := exec.Command("git", "describe", "--tags", "--abbrev=0")
out, err := cmd.Output()
if err != nil {
fmt.Println(err)
os.Exit(0)
}
version := string(out)
version = version[:len(version)-1]
2025-04-20 02:25:31 +03:00
content := warning + header + version + "\"" + code
2025-04-20 02:00:13 +03:00
ioutil.WriteFile("version.go", []byte(content), 0644)
2025-04-20 01:04:48 +03:00
}