Monorepo for Tangled tangled.org
6

Configure Feed

Select the types of activity you want to include in your feed.

1package xrpc 2 3import ( 4 "fmt" 5 "net/http" 6 "runtime/debug" 7 8 "tangled.org/core/api/tangled" 9 "tangled.org/core/consts" 10) 11 12// version is set during build time. 13var version string 14 15var knotCapabilities = []string{string(consts.CapKnotACL)} 16 17func (x *Xrpc) Version(w http.ResponseWriter, r *http.Request) { 18 if version == "" { 19 info, ok := debug.ReadBuildInfo() 20 if !ok { 21 http.Error(w, "failed to read build info", http.StatusInternalServerError) 22 return 23 } 24 25 modVer := info.Main.Version 26 if modVer == "" || modVer == "(devel)" { 27 modVer = "(devel)" 28 } 29 30 var sha string 31 var modified bool 32 for _, setting := range info.Settings { 33 switch setting.Key { 34 case "vcs.revision": 35 sha = setting.Value 36 case "vcs.modified": 37 modified = setting.Value == "true" 38 } 39 } 40 41 if sha == "" { 42 version = modVer 43 } else if modified { 44 version = fmt.Sprintf("%s (%s with modifications)", modVer, sha) 45 } else { 46 version = fmt.Sprintf("%s (%s)", modVer, sha) 47 } 48 } 49 50 response := tangled.KnotVersion_Output{ 51 Version: version, 52 Capabilities: knotCapabilities, 53 } 54 55 x.writeJson(w, response) 56}