范浩杰 3 vuotta sitten
vanhempi
commit
6c5882fa02

+ 5 - 0
.pre-commit-hooks.yaml

@@ -0,0 +1,5 @@
+- id: go-pre-version
+  name: "go-pre-version"
+  entry: go-pre-version
+  language: "golang"
+  description: "提交代码自动更新版本号"

+ 3 - 0
go-pre-commit/go-pre-version/go.mod

@@ -0,0 +1,3 @@
+module git.data-turing.com/soft/git-pre-commit/go-pre-commit/go-pre-version
+
+go 1.18

+ 47 - 0
go-pre-commit/go-pre-version/main.go

@@ -0,0 +1,47 @@
+package main
+
+import (
+	"bytes"
+	"fmt"
+	"io/ioutil"
+	"os"
+	"os/exec"
+	"strconv"
+)
+
+func main() {
+	b, err := ioutil.ReadFile("version")
+	if err != nil {
+		file, err := os.OpenFile("version", os.O_RDWR|os.O_CREATE, 0777)
+		if err != nil {
+			fmt.Println(err)
+			return
+		}
+		defer file.Close()
+		file.WriteString("v1.0.0")
+		return
+	}
+	fmt.Println("old version", string(b))
+	file, err := os.OpenFile("version", os.O_RDWR|os.O_TRUNC, 0777)
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+	defer file.Close()
+	bs := bytes.Split(b, []byte{'.'})
+	lb := bs[len(bs)-1]
+	i, err := strconv.Atoi(string(lb))
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+	bs[len(bs)-1] = []byte(fmt.Sprintf("%d", i+1))
+	tb := bytes.Join(bs, []byte{'.'})
+	fmt.Println("new version", string(tb))
+	file.Write(tb)
+	cmd := exec.Command("git", "add", "./version")
+	err = cmd.Run()
+	if err != nil {
+		fmt.Println(err)
+	}
+}