luis 7 years ago
commit
75eaf0920f
2 changed files with 72 additions and 0 deletions
  1. 13 0
      README.md
  2. 59 0
      main.go

+ 13 - 0
README.md

@@ -0,0 +1,13 @@
+Simple version generation tool
+================================
+
+
+Usage:
+```bash
+go get dev.hexasoftware.com/hxs/genversion
+# generate a file containing Version variable fetched from git tags
+genversion -package main -out version.go
+```
+
+Requires:   
+	*	git

+ 59 - 0
main.go

@@ -0,0 +1,59 @@
+package main
+
+import (
+	"flag"
+	"fmt"
+	"log"
+	"os"
+	"os/exec"
+	"regexp"
+	"strings"
+	"time"
+)
+
+func main() {
+	var pkg string
+	var dst string
+	flag.StringVar(&pkg, "package", "", "Set package name")
+	flag.StringVar(&dst, "out", "", "Output file")
+	flag.Parse()
+
+	if pkg == "" {
+		log.Println("Missing argument -package")
+		flag.Usage()
+		return
+	}
+	if dst == "" {
+		log.Println("Missing argument -out")
+		flag.Usage()
+		return
+	}
+
+	tag, err := exec.Command("git", "describe", "--tags").Output()
+	if err != nil {
+		log.Fatal("Error Getting tag", err)
+	}
+	re := regexp.MustCompile(`\r?\n`)
+	vtag := re.ReplaceAll(tag, []byte(" "))
+
+	version := fmt.Sprintf("%s - built: %s", strings.TrimSpace(string(vtag)), time.Now().UTC().Format("2006-01-02 15:04:05 UTC"))
+
+	fmt.Printf("Version: %s\n", version)
+
+	f, err := os.OpenFile(dst, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644)
+	if err != nil {
+		fmt.Println("Error opening file", err)
+		return
+	}
+
+	fmt.Fprintf(f, "package %s\n", pkg)
+
+	fmt.Fprintln(f, "\nconst (")
+	fmt.Fprintf(f, "  //Version contains version of the package\n")
+	fmt.Fprintf(f, "  Version = \"%s\"\n", version)
+	fmt.Fprintln(f, ")")
+
+	f.Sync()
+	f.Close()
+
+}