hasshelper/gen_version.go

70 lines
1.5 KiB
Go

//go:build ignore
package main
import (
"bufio"
"flag"
"fmt"
"log"
"os"
"github.com/mdomke/git-semver/v6/version"
)
func fetchVersion() string {
repoPath, err := os.Getwd()
if err != nil {
log.Fatal(err)
}
v, err := version.NewFromRepo(repoPath, "v", "v*")
if err != nil {
log.Fatal(err)
}
v = v.BumpTo(version.Devel)
v.Prefix = ""
s, err := v.Format(version.FullFormat)
if err != nil {
log.Fatal(err)
}
return s
}
func main() {
var pkgName string
var varName string
var fileName string
flag.StringVar(&pkgName, "p", "main", "Specify package name.")
flag.StringVar(&varName, "v", "gitVersion", "Specify variable name.")
flag.StringVar(&fileName, "f", "./version.go", "Specify filename.")
flag.Usage = func() {
fmt.Printf("gen_version")
flag.PrintDefaults()
}
flag.Parse()
versionStr := fetchVersion()
lines := []string{
fmt.Sprintf("package %s", pkgName),
"// Code generated automatically. DO NOT EDIT",
"",
fmt.Sprintf(
"// %s is the generated version based on the current git revision",
varName),
fmt.Sprintf("const %s = \"%s\"", varName, versionStr),
}
file, err := os.Create(fileName)
if err != nil {
log.Fatal(err)
}
writer := bufio.NewWriter(file)
for _, line := range lines {
_, err := writer.WriteString(line + "\n")
if err != nil {
log.Fatalf("Error while writing to file: %s", err.Error())
}
}
writer.Flush()
fmt.Printf("Wrote version %s to %s, variable %s in package %s\n",
versionStr, fileName, varName, pkgName)
}