70 lines
1.5 KiB
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)
|
|
}
|