Browse Source

core/core.go: Replace "Custom" with vcs info if available (#5665)

https://github.com/XTLS/Xray-core/pull/5665#issuecomment-3890500863
风扇滑翔翼 1 month ago
parent
commit
1fe6d4a0f5
1 changed files with 29 additions and 0 deletions
  1. 29 0
      core/core.go

+ 29 - 0
core/core.go

@@ -12,6 +12,7 @@ package core
 import (
 	"fmt"
 	"runtime"
+	"runtime/debug"
 
 	"github.com/xtls/xray-core/common/serial"
 )
@@ -28,6 +29,34 @@ var (
 	intro    = "A unified platform for anti-censorship."
 )
 
+func init() {
+	// Manually injected
+	if build != "Custom" {
+		return
+	}
+	info, ok := debug.ReadBuildInfo()
+	if !ok {
+		return
+	}
+	var isDirty bool
+	var foundBuild bool
+	for _, setting := range info.Settings {
+		switch setting.Key {
+		case "vcs.revision":
+			if len(setting.Value) < 7 {
+				return
+			}
+			build = setting.Value[:7]
+			foundBuild = true
+		case "vcs.modified":
+			isDirty = setting.Value == "true"
+		}
+	}
+	if isDirty && foundBuild {
+		build += "-dirty"
+	}
+}
+
 // Version returns Xray's version as a string, in the form of "x.y.z" where x, y and z are numbers.
 // ".z" part may be omitted in regular releases.
 func Version() string {