From bdd36c292db11719c0a7db7d3e927ae839b84c46 Mon Sep 17 00:00:00 2001 From: shylinux Date: Thu, 14 Oct 2021 03:20:41 +0800 Subject: [PATCH] opt info --- info.go | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 info.go diff --git a/info.go b/info.go new file mode 100644 index 00000000..87ec7514 --- /dev/null +++ b/info.go @@ -0,0 +1,62 @@ +package ice + +import ( + "io" + "strings" + + kit "shylinux.com/x/toolkits" +) + +var Info = struct { + HostName string + PathName string + UserName string + PassWord string + + NodeType string + NodeName string + CtxShare string + CtxRiver string + + Make struct { + Time string + Hash string + Remote string + Branch string + Version string + HostName string + UserName string + } + + Pack map[string][]byte + names map[string]interface{} +}{ + Pack: map[string][]byte{}, + names: map[string]interface{}{}, +} + +func Dump(w io.Writer, name string, cb func(string)) bool { + for _, key := range []string{name, strings.TrimPrefix(name, USR_VOLCANOS)} { + if b, ok := Info.Pack[key]; ok { + if cb != nil { + cb(name) + } + w.Write(b) + return true + } + } + return false +} +func Name(name string, value interface{}) string { + if s, ok := Info.names[name]; ok { + last := "" + switch s := s.(type) { + case *Context: + last = s.Name + } + panic(kit.Format("%s %s %v", ErrExists, name, last)) + } + + Info.names[name] = value + return name +}