Browse Source

支持提交后打tag

tanglin 8 months ago
parent
commit
7b1e1e8ad7
3 changed files with 41 additions and 2 deletions
  1. 1 1
      .pre-commit-hooks.yaml
  2. 39 0
      cmd/go-pre-version/main.go
  3. 1 1
      go.mod

+ 1 - 1
.pre-commit-hooks.yaml

@@ -2,5 +2,5 @@
   name: "go-pre-version"
   entry: "go-pre-version"
   language: "golang"
-  description: "提交代码自动更新版本号"
+  description: "提交代码自动更新版本号/根据版本号打tag"
   pass_filenames: false

+ 39 - 0
cmd/go-pre-version/main.go

@@ -3,6 +3,7 @@ package main
 import (
 	"bytes"
 	"encoding/json"
+	"flag"
 	"fmt"
 	"os"
 	"os/exec"
@@ -10,7 +11,45 @@ import (
 )
 
 func main() {
+	tagversion := flag.String("tagversion", "", "tag a version")
+	flag.Parse()
+	found := false
+	flag.Visit(func(f *flag.Flag) {
+		if f.Name == "tagversion" {
+			found = true
+		}
+	})
+
 	versionFile := "version"
+
+	if found { // 将版本打上一个tag
+		fmt.Println("tagging a version", *tagversion)
+		version, err := os.ReadFile(versionFile)
+		if err != nil {
+			fmt.Printf("version file %s error: %v\n", versionFile, err)
+			os.Exit(1)
+		}
+		if len(version) == 0 {
+			fmt.Printf("version file %s empty\n", versionFile)
+			os.Exit(1)
+		}
+		fmt.Println("version is: ", string(version))
+		cmd := exec.Command("git", "tag", string(version), "-f")
+		err = cmd.Run()
+		if err != nil {
+			fmt.Printf("git tag %s error: %v\n", string(version), err)
+			os.Exit(1)
+		}
+		cmd = exec.Command("git", "push", "origin", "--tags")
+		err = cmd.Run()
+		if err != nil {
+			fmt.Printf("git push tag error: %v\n", err)
+			os.Exit(1)
+		}
+		return
+	}
+
+	// 修改版本并添加
 	b, err := os.ReadFile(versionFile)
 	if err != nil {
 		if os.IsNotExist(err) {

+ 1 - 1
go.mod

@@ -1,3 +1,3 @@
 module git.data-turing.com/soft/git-pre-commit
 
-go 1.21
+go 1.22