|
|
@@ -0,0 +1,58 @@
|
|
|
+package git
|
|
|
+
|
|
|
+import (
|
|
|
+ "os"
|
|
|
+ "os/exec"
|
|
|
+ "path/filepath"
|
|
|
+ "strings"
|
|
|
+)
|
|
|
+
|
|
|
+const (
|
|
|
+ VersionUndefined = "undefined"
|
|
|
+)
|
|
|
+
|
|
|
+func getRepoRoot() string {
|
|
|
+ GOPATH := os.Getenv("GOPATH")
|
|
|
+ return filepath.Join(GOPATH, "src", "github.com", "v2ray", "v2ray-core")
|
|
|
+}
|
|
|
+
|
|
|
+func RevParse(args ...string) (string, error) {
|
|
|
+ args = append([]string{"rev-parse"}, args...)
|
|
|
+ cmd := exec.Command("git", args...)
|
|
|
+ cmd.Dir = getRepoRoot()
|
|
|
+ output, err := cmd.Output()
|
|
|
+ if err != nil {
|
|
|
+ return "", err
|
|
|
+ }
|
|
|
+ return strings.TrimSpace(string(output)), nil
|
|
|
+}
|
|
|
+
|
|
|
+func NameRev(args ...string) (string, error) {
|
|
|
+ args = append([]string{"name-rev"}, args...)
|
|
|
+ cmd := exec.Command("git", args...)
|
|
|
+ cmd.Dir = getRepoRoot()
|
|
|
+ output, err := cmd.Output()
|
|
|
+ if err != nil {
|
|
|
+ return "", err
|
|
|
+ }
|
|
|
+ return strings.TrimSpace(string(output)), nil
|
|
|
+}
|
|
|
+
|
|
|
+func RepoVersion(rev string) (string, error) {
|
|
|
+ rev, err := RevParse(rev)
|
|
|
+ if err != nil {
|
|
|
+ return "", err
|
|
|
+ }
|
|
|
+ version, err := NameRev("name-rev", "--tags", "--name-only", rev)
|
|
|
+ if err != nil {
|
|
|
+ return "", err
|
|
|
+ }
|
|
|
+ if strings.HasSuffix(version, "^0") {
|
|
|
+ version = version[:len(version)-2]
|
|
|
+ }
|
|
|
+ return version, nil
|
|
|
+}
|
|
|
+
|
|
|
+func RepoVersionHead() (string, error) {
|
|
|
+ return RepoVersion("HEAD")
|
|
|
+}
|