`, arg[0])}
for _, l := range strings.Split(strings.Join(arg[1:], "\n"), "\n") {
switch list = append(list, "
"); arg[0] {
- case kit.SSH_SHELL:
+ case SSH_SHELL:
list = append(list, "
")
default:
list = append(list, "
")
diff --git a/exec.go b/exec.go
index 985754ae..e3097766 100644
--- a/exec.go
+++ b/exec.go
@@ -18,9 +18,9 @@ func (m *Message) TryCatch(msg *Message, silent bool, hand ...func(msg *Message)
default:
fileline := kit.FileLine(4, 5)
m.Log(LOG_WARN, "catch: %s %s", e, fileline)
- m.Log("chain", msg.FormatChain())
+ m.Log(kit.MDB_CHAIN, msg.FormatChain())
m.Log(LOG_WARN, "catch: %s %s", e, fileline)
- m.Log("stack", msg.FormatStack())
+ m.Log(kit.MDB_STACK, msg.FormatStack())
m.Log(LOG_WARN, "catch: %s %s", e, fileline)
if len(hand) > 1 { // 捕获异常
m.TryCatch(msg, silent, hand[1:]...)
@@ -79,7 +79,7 @@ func (m *Message) Done(b bool) bool {
func (m *Message) Call(sync bool, cb func(*Message) *Message) *Message {
wait := make(chan bool, 2)
- p := kit.Select("10s", m.Option("timeout"))
+ p := kit.Select("10s", m.Option(kit.MDB_TIMEOUT))
t := time.AfterFunc(kit.Duration(p), func() {
m.Warn(true, "%s timeout %v", p, m.Detailv())
wait <- false
@@ -126,9 +126,9 @@ func (m *Message) Go(cb interface{}, args ...interface{}) *Message {
func (m *Message) Watch(key string, arg ...string) *Message {
if len(arg) == 0 {
- arg = append(arg, m.Prefix("auto"))
+ arg = append(arg, m.Prefix(AUTO))
}
- m.Cmd("gdb.event", "action", "listen", "event", key, "cmd", strings.Join(arg, " "))
+ m.Cmd("gdb.event", "action", "listen", "event", key, CMD, strings.Join(arg, SP))
return m
}
func (m *Message) Event(key string, arg ...string) *Message {
@@ -137,8 +137,8 @@ func (m *Message) Event(key string, arg ...string) *Message {
}
func (m *Message) Right(arg ...interface{}) bool {
return m.Option(MSG_USERROLE) == "root" || !m.Warn(m.Cmdx("aaa.role", "right",
- m.Option(MSG_USERROLE), strings.ReplaceAll(kit.Keys(arg...), "/", ".")) != "ok",
- ErrNotRight, m.Option(MSG_USERROLE), " of ", strings.Join(kit.Simple(arg), "."), " at ", kit.FileLine(2, 3))
+ m.Option(MSG_USERROLE), strings.ReplaceAll(kit.Keys(arg...), "/", PT)) != OK,
+ ErrNotRight, m.Option(MSG_USERROLE), " of ", strings.Join(kit.Simple(arg), PT), " at ", kit.FileLine(2, 3))
}
func (m *Message) Space(arg interface{}) []string {
if arg == nil || arg == "" || kit.Format(arg) == m.Conf("cli.runtime", "node.name") {
@@ -147,9 +147,9 @@ func (m *Message) Space(arg interface{}) []string {
return []string{"web.space", kit.Format(arg)}
}
func (m *Message) PodCmd(arg ...interface{}) bool {
- if pod := m.Option("pod"); pod != "" {
- m.Option("pod", "")
- if m.Option("_upload") != "" {
+ if pod := m.Option(POD); pod != "" {
+ m.Option(POD, "")
+ if m.Option(MSG_UPLOAD) != "" {
msg := m.Cmd("cache", "upload")
m.Option(MSG_UPLOAD, msg.Append(kit.MDB_HASH), msg.Append(kit.MDB_NAME), msg.Append(kit.MDB_SIZE))
}
diff --git a/go.mod b/go.mod
index 39cd3543..58865898 100644
--- a/go.mod
+++ b/go.mod
@@ -4,8 +4,6 @@ go 1.11
require (
github.com/gorilla/websocket v1.4.2
- github.com/kr/pty v1.1.8
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e
- golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2
- shylinux.com/x/toolkits v0.3.4
+ shylinux.com/x/toolkits v0.3.5
)
diff --git a/go.sum b/go.sum
index 95cf1101..24e67076 100644
--- a/go.sum
+++ b/go.sum
@@ -1,19 +1,4 @@
-github.com/creack/pty v1.1.7 h1:6pwm8kMQKCmgUg0ZHTm5+/YvRK0s3THD/28+T6/kk4A=
-github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
-github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
-github.com/kr/pty v1.1.8 h1:AkaSdXYQOWeaO3neb8EM634ahkXXe3jYbVh/F9lq+GI=
-github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw=
-github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e h1:MRM5ITcdelLK2j1vwZ3Je0FKVCfqOLp5zO6trqMLYs0=
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e/go.mod h1:XV66xRDqSt+GTGFMVlhk3ULuV0y9ZmzeVGR4mloJI3M=
-golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 h1:It14KIkyBFYkHkwZ7k45minvA9aorojkyjGk9KJ5B/w=
-golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
-golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/sys v0.0.0-20201119102817-f84b799fce68 h1:nxC68pudNYkKU6jWhgrqdreuFiOQWj1Fs7T3VrH4Pjw=
-golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E=
-golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-shylinux.com/x/toolkits v0.3.3 h1:yNH54CANAv7cPT264tpnDt9G2BVfGwLC9y3rxtU6pkg=
-shylinux.com/x/toolkits v0.3.3/go.mod h1:8LbYHe7oxBIqb6s4MSOD+4d28QvPdvkyCVtwB/JW7AA=
+shylinux.com/x/toolkits v0.3.5 h1:J0KlCuIPiJc074+5T0nUJawp3MJGH8VQKzqlpRsVQ70=
+shylinux.com/x/toolkits v0.3.5/go.mod h1:8LbYHe7oxBIqb6s4MSOD+4d28QvPdvkyCVtwB/JW7AA=
diff --git a/init.go b/init.go
index 0037f8d6..3b37511f 100644
--- a/init.go
+++ b/init.go
@@ -17,7 +17,7 @@ func (f *Frame) Spawn(m *Message, c *Context, arg ...string) Server {
return &Frame{}
}
func (f *Frame) Begin(m *Message, arg ...string) Server {
- m.Log(LOG_BEGIN, "ice")
+ m.Log(LOG_BEGIN, ICE)
defer m.Cost("begin ice")
list := map[*Context]*Message{m.target: m}
@@ -31,7 +31,7 @@ func (f *Frame) Begin(m *Message, arg ...string) Server {
return f
}
func (f *Frame) Start(m *Message, arg ...string) bool {
- m.Log(LOG_START, "ice")
+ m.Log(LOG_START, ICE)
defer m.Cost("start ice")
m.Cap(CTX_STATUS, CTX_START)
@@ -41,11 +41,9 @@ func (f *Frame) Start(m *Message, arg ...string) bool {
return true
}
func (f *Frame) Close(m *Message, arg ...string) bool {
- m.TryCatch(m, true, func(m *Message) {
- m.target.wg.Wait()
- })
+ m.TryCatch(m, true, func(m *Message) { m.target.wg.Wait() })
- m.Log(LOG_CLOSE, "ice")
+ m.Log(LOG_CLOSE, ICE)
defer m.Cost("close ice")
list := map[*Context]*Message{m.target: m}
@@ -59,7 +57,7 @@ func (f *Frame) Close(m *Message, arg ...string) bool {
}
var Index = &Context{Name: "ice", Help: "冰山模块", Caches: map[string]*Cache{
- CTX_FOLLOW: {Value: "ice"}, CTX_STREAM: {Value: "shy"}, CTX_STATUS: {Value: CTX_BEGIN},
+ CTX_FOLLOW: {Value: ICE}, CTX_STREAM: {Value: SHY}, CTX_STATUS: {Value: CTX_BEGIN},
}, Configs: map[string]*Config{
HELP: {Value: kit.Data("index", _help)},
}, Commands: map[string]*Command{
diff --git a/logs.go b/logs.go
index d1c3bc09..1decacf9 100644
--- a/logs.go
+++ b/logs.go
@@ -2,7 +2,6 @@ package ice
import (
"encoding/json"
- "fmt"
"runtime"
"strings"
"time"
@@ -52,8 +51,8 @@ func (m *Message) log(level string, str string, arg ...interface{}) *Message {
}
// 输出日志
- log.Info(fmt.Sprintf("%02d %9s %s%s %s%s", m.code,
- fmt.Sprintf("%4s->%-4s", m.source.Name, m.target.Name), prefix, level, str, suffix))
+ log.Info(kit.Format("%02d %9s %s%s %s%s", m.code,
+ kit.Format("%4s->%-4s", m.source.Name, m.target.Name), prefix, level, str, suffix))
return m
}
func (m *Message) join(arg ...interface{}) string {
@@ -146,7 +145,7 @@ func (m *Message) FormatStack() string {
frame, more := frames.Next()
file := strings.Split(frame.File, "/")
name := strings.Split(frame.Function, "/")
- meta = append(meta, fmt.Sprintf("\n%s:%d\t%s", file[len(file)-1], frame.Line, name[len(name)-1]))
+ meta = append(meta, kit.Format("\n%s:%d\t%s", file[len(file)-1], frame.Line, name[len(name)-1]))
if !more {
break
}
@@ -163,16 +162,16 @@ func (m *Message) FormatChain() string {
for i := len(ms) - 1; i >= 0; i-- {
msg := ms[i]
- meta = append(meta, fmt.Sprintf("%s ", msg.Format("prefix")))
+ meta = append(meta, kit.Format("%s ", msg.Format("prefix")))
if len(msg.meta[MSG_DETAIL]) > 0 {
- meta = append(meta, fmt.Sprintf("detail:%d %v", len(msg.meta[MSG_DETAIL]), msg.meta[MSG_DETAIL]))
+ meta = append(meta, kit.Format("%s:%d %v", MSG_DETAIL, len(msg.meta[MSG_DETAIL]), msg.meta[MSG_DETAIL]))
}
if len(msg.meta[MSG_OPTION]) > 0 {
- meta = append(meta, fmt.Sprintf("option:%d %v\n", len(msg.meta[MSG_OPTION]), msg.meta[MSG_OPTION]))
+ meta = append(meta, kit.Format("%s:%d %v\n", MSG_OPTION, len(msg.meta[MSG_OPTION]), msg.meta[MSG_OPTION]))
for _, k := range msg.meta[MSG_OPTION] {
if v, ok := msg.meta[k]; ok {
- meta = append(meta, fmt.Sprintf(" %s: %d %v\n", k, len(v), v))
+ meta = append(meta, kit.Format(" %s: %d %v\n", k, len(v), v))
}
}
} else {
@@ -180,30 +179,30 @@ func (m *Message) FormatChain() string {
}
if len(msg.meta[MSG_APPEND]) > 0 {
- meta = append(meta, fmt.Sprintf(" append:%d %v\n", len(msg.meta[MSG_APPEND]), msg.meta[MSG_APPEND]))
+ meta = append(meta, kit.Format(" %s:%d %v\n", MSG_APPEND, len(msg.meta[MSG_APPEND]), msg.meta[MSG_APPEND]))
for _, k := range msg.meta[MSG_APPEND] {
if v, ok := msg.meta[k]; ok {
- meta = append(meta, fmt.Sprintf(" %s: %d %v\n", k, len(v), v))
+ meta = append(meta, kit.Format(" %s: %d %v\n", k, len(v), v))
}
}
}
if len(msg.meta[MSG_RESULT]) > 0 {
- meta = append(meta, fmt.Sprintf(" result:%d %v\n", len(msg.meta[MSG_RESULT]), msg.meta[MSG_RESULT]))
+ meta = append(meta, kit.Format(" %s:%d %v\n", MSG_RESULT, len(msg.meta[MSG_RESULT]), msg.meta[MSG_RESULT]))
}
}
return strings.Join(meta, "")
}
func (m *Message) FormatTime() string {
- return m.Format("time")
+ return m.Format(kit.MDB_TIME)
}
func (m *Message) FormatMeta() string {
- return m.Format("meta")
+ return m.Format(kit.MDB_META)
}
func (m *Message) FormatSize() string {
- return m.Format("size")
+ return m.Format(kit.MDB_SIZE)
}
func (m *Message) FormatCost() string {
- return m.Format("cost")
+ return m.Format(kit.MDB_COST)
}
func (m *Message) Format(key interface{}) string {
switch key := key.(type) {
@@ -211,33 +210,31 @@ func (m *Message) Format(key interface{}) string {
json.Unmarshal(key, &m.meta)
case string:
switch key {
- case "cost":
+ case kit.MDB_COST:
return kit.FmtTime(kit.Int64(time.Since(m.time)))
- case "meta":
+ case kit.MDB_SIZE:
+ if len(m.meta[MSG_APPEND]) == 0 {
+ return kit.Format("%dx%d", 0, 0)
+ } else {
+ return kit.Format("%dx%d", len(m.meta[m.meta[MSG_APPEND][0]]), len(m.meta[MSG_APPEND]))
+ }
+ case kit.MDB_META:
return kit.Format(m.meta)
- case "size":
- if len(m.meta["append"]) == 0 {
- return fmt.Sprintf("%dx%d", 0, 0)
+ case kit.MDB_SHIP:
+ return kit.Format("%s->%s", m.source.Name, m.target.Name)
+ case kit.MDB_PREFIX:
+ return kit.Format("%s %d %s->%s", m.Time(), m.code, m.source.Name, m.target.Name)
+
+ case MSG_APPEND:
+ if len(m.meta[MSG_APPEND]) == 0 {
+ return kit.Format("%dx%d %s", 0, 0, "[]")
} else {
- return fmt.Sprintf("%dx%d", len(m.meta[m.meta["append"][0]]), len(m.meta["append"]))
- }
- case "append":
- if len(m.meta["append"]) == 0 {
- return fmt.Sprintf("%dx%d %s", 0, 0, "[]")
- } else {
- return fmt.Sprintf("%dx%d %s", len(m.meta[m.meta["append"][0]]), len(m.meta["append"]), kit.Format(m.meta["append"]))
+ return kit.Format("%dx%d %s", len(m.meta[m.meta[MSG_APPEND][0]]), len(m.meta[MSG_APPEND]), kit.Format(m.meta[MSG_APPEND]))
}
- case "time":
- return m.Time()
- case "ship":
- return fmt.Sprintf("%s->%s", m.source.Name, m.target.Name)
- case "prefix":
- return fmt.Sprintf("%s %d %s->%s", m.Time(), m.code, m.source.Name, m.target.Name)
-
- case "chain":
+ case kit.MDB_CHAIN:
return m.FormatChain()
- case "stack":
+ case kit.MDB_STACK:
return m.FormatStack()
}
}
@@ -245,7 +242,7 @@ func (m *Message) Format(key interface{}) string {
}
func (m *Message) Formats(key string) string {
switch key {
- case "meta":
+ case kit.MDB_META:
return kit.Formats(m.meta)
}
return m.Format(key)
diff --git a/meta.go b/meta.go
index 0bfd658f..fe2571ca 100644
--- a/meta.go
+++ b/meta.go
@@ -9,13 +9,6 @@ import (
kit "shylinux.com/x/toolkits"
)
-func (m *Message) SetResult(arg ...interface{}) *Message {
- m.Set(MSG_RESULT)
- if len(arg) > 0 {
- m.Echo(kit.Format(arg[0]), arg[1:]...)
- }
- return m
-}
func (m *Message) Set(key string, arg ...string) *Message {
switch key {
case MSG_DETAIL, MSG_RESULT:
@@ -304,7 +297,7 @@ func (m *Message) Table(cbs ...func(index int, value map[string]string, head []s
}
//计算列宽
- space := kit.Select(" ", m.Option("table.space"))
+ space := kit.Select(SP, m.Option("table.space"))
depth, width := 0, map[string]int{}
for _, k := range m.meta[MSG_APPEND] {
if len(m.meta[k]) > depth {
@@ -319,8 +312,8 @@ func (m *Message) Table(cbs ...func(index int, value map[string]string, head []s
}
// 回调函数
- rows := kit.Select("\n", m.Option("table.row_sep"))
- cols := kit.Select(" ", m.Option("table.col_sep"))
+ rows := kit.Select(NL, m.Option("table.row_sep"))
+ cols := kit.Select(SP, m.Option("table.col_sep"))
compact := m.Option("table.compact") == TRUE
cb := func(value map[string]string, field []string, index int) bool {
for i, v := range field {
@@ -374,8 +367,7 @@ func (m *Message) Detailv(arg ...interface{}) []string {
}
func (m *Message) Optionv(key string, arg ...interface{}) interface{} {
if len(arg) > 0 {
- // 写数据
- if kit.IndexOf(m.meta[MSG_OPTION], key) == -1 {
+ if kit.IndexOf(m.meta[MSG_OPTION], key) == -1 { // 写数据
m.meta[MSG_OPTION] = append(m.meta[MSG_OPTION], key)
}
@@ -391,7 +383,7 @@ func (m *Message) Optionv(key string, arg ...interface{}) interface{} {
m.data[key] = str
}
if key == MSG_FIELDS {
- for _, k := range kit.Split(strings.Join(m.meta[key], ",")) {
+ for _, k := range kit.Split(kit.Join(m.meta[key])) {
delete(m.meta, k)
}
}
@@ -399,12 +391,10 @@ func (m *Message) Optionv(key string, arg ...interface{}) interface{} {
for msg := m; msg != nil; msg = msg.message {
if list, ok := msg.data[key]; ok {
- // 读数据
- return list
+ return list // 读数据
}
if list, ok := msg.meta[key]; ok {
- // 读选项
- return list
+ return list // 读选项
}
}
return nil
diff --git a/misc.go b/misc.go
index 5f867965..76ca4836 100644
--- a/misc.go
+++ b/misc.go
@@ -31,7 +31,7 @@ func (m *Message) CSV(text string, head ...string) *Message {
}
func (m *Message) Parse(meta string, key string, arg ...string) *Message {
list := []string{}
- for _, line := range kit.Split(strings.Join(arg, " "), "\n") {
+ for _, line := range kit.Split(strings.Join(arg, SP), NL) {
ls := kit.Split(line)
for i := 0; i < len(ls); i++ {
if strings.HasPrefix(ls[i], "#") {
@@ -157,11 +157,6 @@ func (m *Message) cmd(arg ...interface{}) *Message {
case Option:
opts[val.Name] = val.Value
- case *Sort:
- defer func() { m.Sort(val.Fields, val.Method) }()
- case Sort:
- defer func() { m.Sort(val.Fields, val.Method) }()
-
default:
if reflect.Func == reflect.TypeOf(val).Kind() {
cbs = val
@@ -183,7 +178,7 @@ func (m *Message) cmd(arg ...interface{}) *Message {
ok := false
run := func(msg *Message, ctx *Context, cmd *Command, key string, arg ...string) {
if ok = true; cbs != nil {
- msg.Option(list[0]+".cb", cbs)
+ msg.Option(kit.Keycb(list[0]), cbs)
}
for k, v := range opts {
msg.Option(k, v)
@@ -242,7 +237,7 @@ func (c *Context) _cmd(m *Message, cmd *Command, key string, k string, h *Action
return m
}
- if k == "run" && m.Warn(!m.Right(arg), ErrNotRight, arg) {
+ if k == RUN && m.Warn(!m.Right(arg), ErrNotRight, arg) {
return m
}
@@ -250,8 +245,8 @@ func (c *Context) _cmd(m *Message, cmd *Command, key string, k string, h *Action
if len(h.List) > 0 && k != "search" {
order := false
for i, v := range h.List {
- name := kit.Format(kit.Value(v, "name"))
- value := kit.Format(kit.Value(v, "value"))
+ name := kit.Format(kit.Value(v, kit.MDB_NAME))
+ value := kit.Format(kit.Value(v, kit.MDB_VALUE))
if i == 0 && len(arg) > 0 && arg[0] != name {
order = true
@@ -285,13 +280,13 @@ func (c *Context) split(name string) (list []interface{}) {
)
item, button := kit.Dict(), false
- ls := kit.Split(name, " ", ":=@")
+ ls := kit.Split(name, SP, ":=@")
for i := 1; i < len(ls); i++ {
switch ls[i] {
case "text":
list = append(list, kit.List(kit.MDB_TYPE, TEXTAREA, kit.MDB_NAME, "text")...)
case "auto":
- list = append(list, kit.List(kit.MDB_TYPE, BUTTON, kit.MDB_NAME, "list", kit.MDB_VALUE, "auto")...)
+ list = append(list, kit.List(kit.MDB_TYPE, BUTTON, kit.MDB_NAME, "list", kit.MDB_VALUE, AUTO)...)
list = append(list, kit.List(kit.MDB_TYPE, BUTTON, kit.MDB_NAME, "back")...)
button = true
case "page":
@@ -307,7 +302,7 @@ func (c *Context) split(name string) (list []interface{}) {
i++
case "=":
if value := kit.Select("", ls, i+1); strings.Contains(value, ",") {
- vs := strings.Split(value, ",")
+ vs := kit.Split(value)
if strings.Count(value, vs[0]) > 1 {
item["values"] = vs[1:]
} else {
@@ -320,7 +315,7 @@ func (c *Context) split(name string) (list []interface{}) {
}
i++
case "@":
- item["action"] = kit.Select("", ls, i+1)
+ item[kit.MDB_ACTION] = kit.Select("", ls, i+1)
i++
default:
diff --git a/misc/chrome/cache.go b/misc/chrome/cache.go
index 38ea0e70..1a027dc9 100644
--- a/misc/chrome/cache.go
+++ b/misc/chrome/cache.go
@@ -30,7 +30,7 @@ func init() {
h := m.Cmdx(mdb.INSERT, m.Prefix(CACHE), "", mdb.HASH, m.OptionSimple("type,name,text,link"))
value := kit.GetMeta(m.Confm(CACHE, kit.Keys(kit.MDB_HASH, h)))
m.Option(kit.Keycb(web.DOWNLOAD), func(size, total int) {
- value[kit.MDB_TOTAL], value[kit.MDB_SIZE], value[kit.SSH_STEP] = total, size, kit.Format(size*100/total)
+ value[kit.MDB_TOTAL], value[kit.MDB_SIZE], value[kit.MDB_STEP] = total, size, kit.Format(size*100/total)
})
msg := m.Cmd("web.spide", web.SPIDE_DEV, web.SPIDE_CACHE, web.SPIDE_GET, m.Option(kit.MDB_LINK))
@@ -42,7 +42,7 @@ func init() {
m.Cmdy(mdb.DELETE, m.Prefix(CACHE), "", mdb.HASH, kit.MDB_HASH, m.Option(kit.MDB_HASH))
}},
mdb.PRUNES: {Name: "prunes", Help: "清理", Hand: func(m *ice.Message, arg ...string) {
- m.Cmdy(mdb.PRUNES, m.Prefix(CACHE), "", mdb.HASH, kit.SSH_STEP, "100")
+ m.Cmdy(mdb.PRUNES, m.Prefix(CACHE), "", mdb.HASH, kit.MDB_STEP, "100")
}},
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
m.Fields(len(arg), m.Conf(CACHE, kit.META_FIELD))
diff --git a/misc/git/repos.go b/misc/git/repos.go
index 266dfb0e..e90a6a90 100644
--- a/misc/git/repos.go
+++ b/misc/git/repos.go
@@ -16,7 +16,7 @@ func _repos_path(name string) string {
if strings.Contains(name, ":\\") {
return name
}
- return kit.Select(path.Join(kit.SSH_USR, name), "./", name == path.Base(kit.Pwd()))
+ return kit.Select(path.Join(ice.USR, name), "./", name == path.Base(kit.Pwd()))
}
func _repos_insert(m *ice.Message, name string, dir string) {
if s, e := os.Stat(m.Option(cli.CMD_DIR, path.Join(dir, ".git"))); e == nil && s.IsDir() {
@@ -52,14 +52,14 @@ func init() {
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
m.Conf(REPOS, kit.MDB_HASH, "")
_repos_insert(m, path.Base(kit.Pwd()), kit.Pwd())
- m.Cmd(nfs.DIR, kit.SSH_USR, "name,path").Table(func(index int, value map[string]string, head []string) {
+ m.Cmd(nfs.DIR, ice.USR, "name,path").Table(func(index int, value map[string]string, head []string) {
_repos_insert(m, value[kit.MDB_NAME], value[kit.MDB_PATH])
})
}},
REPOS: {Name: "repos name path auto create", Help: "代码库", Action: map[string]*ice.Action{
mdb.CREATE: {Name: "create repos branch name path", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
m.Option(kit.MDB_NAME, kit.Select(strings.TrimSuffix(path.Base(m.Option(kit.SSH_REPOS)), ".git"), m.Option(kit.MDB_NAME)))
- m.Option(kit.MDB_PATH, kit.Select(path.Join(kit.SSH_USR, m.Option(kit.MDB_NAME)), m.Option(kit.MDB_PATH)))
+ m.Option(kit.MDB_PATH, kit.Select(path.Join(ice.USR, m.Option(kit.MDB_NAME)), m.Option(kit.MDB_PATH)))
m.Option(kit.SSH_REPOS, kit.Select(m.Conf(REPOS, kit.Keym(kit.SSH_REPOS))+"/"+m.Option(kit.MDB_NAME), m.Option(kit.SSH_REPOS)))
if s, e := os.Stat(path.Join(m.Option(kit.MDB_PATH), ".git")); e == nil && s.IsDir() {
diff --git a/misc/git/spide.go b/misc/git/spide.go
index f79033a1..df1df04d 100644
--- a/misc/git/spide.go
+++ b/misc/git/spide.go
@@ -30,6 +30,8 @@ func _spide_go(m *ice.Message, file string) {
case "w", "e":
return
ls[0] = "-" + ls[0] + ":" + strings.TrimPrefix(ls[len(ls)-1], "type:")
+ case "-":
+ return
case "m":
if strings.HasPrefix(ls[5], "ctype") {
ls[0] = strings.TrimPrefix(ls[5], "ctype:") + ":" + ls[0]
@@ -74,9 +76,9 @@ func init() {
}
if arg[0] == path.Base(kit.Pwd()) {
- m.Option(nfs.DIR_ROOT, path.Join(kit.SSH_SRC))
+ m.Option(nfs.DIR_ROOT, path.Join(ice.SRC))
} else {
- m.Option(nfs.DIR_ROOT, path.Join(kit.SSH_USR, arg[0]))
+ m.Option(nfs.DIR_ROOT, path.Join(ice.USR, arg[0]))
}
if len(arg) == 1 { // 目录列表
diff --git a/base/ssh/channel.go b/misc/ssh/channel.go
similarity index 93%
rename from base/ssh/channel.go
rename to misc/ssh/channel.go
index c7a0076d..103ccab6 100644
--- a/base/ssh/channel.go
+++ b/misc/ssh/channel.go
@@ -6,13 +6,13 @@ import (
"os/exec"
"strings"
+ "golang.org/x/crypto/ssh"
ice "shylinux.com/x/icebergs"
"shylinux.com/x/icebergs/base/aaa"
"shylinux.com/x/icebergs/base/ctx"
"shylinux.com/x/icebergs/base/mdb"
"shylinux.com/x/icebergs/base/tcp"
kit "shylinux.com/x/toolkits"
- "golang.org/x/crypto/ssh"
)
func _ssh_exec(m *ice.Message, cmd string, arg []string, env []string, input io.Reader, output io.Writer, done func()) {
@@ -71,6 +71,11 @@ func init() {
CHANNEL: {Name: "channel", Help: "通道", Value: kit.Data()},
},
Commands: map[string]*ice.Command{
+ ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
+ m.Richs(CHANNEL, "", kit.MDB_FOREACH, func(key string, value map[string]interface{}) {
+ kit.Value(value, kit.Keym(kit.MDB_STATUS), tcp.CLOSE)
+ })
+ }},
CHANNEL: {Name: "channel hash id auto command prunes", Help: "通道", Action: map[string]*ice.Action{
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(mdb.DELETE, CHANNEL, "", mdb.HASH, kit.MDB_HASH, m.Option(kit.MDB_HASH))
diff --git a/base/ssh/connect.go b/misc/ssh/connect.go
similarity index 100%
rename from base/ssh/connect.go
rename to misc/ssh/connect.go
diff --git a/base/ssh/service.go b/misc/ssh/service.go
similarity index 100%
rename from base/ssh/service.go
rename to misc/ssh/service.go
diff --git a/base/ssh/service_darwin.go b/misc/ssh/service_darwin.go
similarity index 100%
rename from base/ssh/service_darwin.go
rename to misc/ssh/service_darwin.go
diff --git a/base/ssh/service_linux.go b/misc/ssh/service_linux.go
similarity index 100%
rename from base/ssh/service_linux.go
rename to misc/ssh/service_linux.go
diff --git a/base/ssh/service_windows.go b/misc/ssh/service_windows.go
similarity index 100%
rename from base/ssh/service_windows.go
rename to misc/ssh/service_windows.go
diff --git a/base/ssh/session.go b/misc/ssh/session.go
similarity index 92%
rename from base/ssh/session.go
rename to misc/ssh/session.go
index 0da3090a..ab130ea7 100644
--- a/base/ssh/session.go
+++ b/misc/ssh/session.go
@@ -3,12 +3,12 @@ package ssh
import (
"io"
+ "golang.org/x/crypto/ssh"
ice "shylinux.com/x/icebergs"
"shylinux.com/x/icebergs/base/ctx"
"shylinux.com/x/icebergs/base/mdb"
"shylinux.com/x/icebergs/base/tcp"
kit "shylinux.com/x/toolkits"
- "golang.org/x/crypto/ssh"
)
func _ssh_session(m *ice.Message, h string, client *ssh.Client) (*ssh.Session, error) {
@@ -62,6 +62,11 @@ func init() {
SESSION: {Name: SESSION, Help: "会话", Value: kit.Data()},
},
Commands: map[string]*ice.Command{
+ ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
+ m.Richs(SESSION, "", kit.MDB_FOREACH, func(key string, value map[string]interface{}) {
+ kit.Value(value, kit.Keym(kit.MDB_STATUS), tcp.CLOSE)
+ })
+ }},
SESSION: {Name: "session hash id auto command prunes", Help: "会话", Action: map[string]*ice.Action{
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(mdb.DELETE, SESSION, "", mdb.HASH, kit.MDB_HASH, m.Option(kit.MDB_HASH))
diff --git a/option.go b/option.go
index 1b80b879..394b0413 100644
--- a/option.go
+++ b/option.go
@@ -10,11 +10,6 @@ import (
kit "shylinux.com/x/toolkits"
)
-type Sort struct {
- Fields string
- Method string
-}
-
type Option struct {
Name string
Value interface{}
@@ -61,7 +56,7 @@ func (m *Message) OptionSimple(key ...string) (res []string) {
}
func (m *Message) OptionTemplate() string {
res := []string{`class="story"`}
- for _, key := range kit.Split("style") {
+ for _, key := range kit.Split(kit.MDB_STYLE) {
if m.Option(key) != "" {
res = append(res, kit.Format(`s="%s"`, key, m.Option(key)))
}
@@ -71,12 +66,12 @@ func (m *Message) OptionTemplate() string {
res = append(res, kit.Format(`data-%s="%s"`, key, m.Option(key)))
}
}
- kit.Fetch(m.Optionv("extra"), func(key string, value string) {
+ kit.Fetch(m.Optionv(kit.MDB_EXTRA), func(key string, value string) {
if value != "" {
res = append(res, kit.Format(`data-%s="%s"`, key, value))
}
})
- return strings.Join(res, " ")
+ return kit.Join(res, SP)
}
func (m *Message) Fields(length int, fields ...string) string {
@@ -89,7 +84,7 @@ func (m *Message) Upload(dir string) {
m.Cmdy("web.cache", "watch", up[0], p)
} else {
// 下拉文件
- m.Cmdy("web.spide", "dev", "save", p, "GET",
+ m.Cmdy("web.spide", DEV, SAVE, p, "GET",
kit.MergeURL2(m.Option(MSG_USERWEB), path.Join("/share/cache", up[0])))
}
}
@@ -164,25 +159,25 @@ func (m *Message) ProcessRefresh300ms() { m.ProcessRefresh("300ms") }
func (m *Message) ProcessRefresh3s() { m.ProcessRefresh("3s") }
func (m *Message) ProcessDisplay(arg ...interface{}) {
m.Process(PROCESS_DISPLAY)
- m.Option("_display", arg...)
+ m.Option(MSG_DISPLAY, arg...)
}
func (m *Message) ProcessCommand(cmd string, val []string, arg ...string) {
- if len(arg) > 0 && arg[0] == "run" {
+ if len(arg) > 0 && arg[0] == RUN {
m.Cmdy(cmd, arg[1:])
return
}
m.Cmdy("command", cmd)
- m.ProcessField(cmd, "run")
- m.Push("arg", kit.Format(val))
+ m.ProcessField(cmd, RUN)
+ m.Push(ARG, kit.Format(val))
}
func (m *Message) ProcessCommandOpt(arg ...string) {
- m.Push("opt", kit.Format(m.OptionSimple(arg...)))
+ m.Push(OPT, kit.Format(m.OptionSimple(arg...)))
}
func (m *Message) ProcessField(arg ...interface{}) {
m.Process(PROCESS_FIELD)
- m.Option("_prefix", arg...)
+ m.Option(FIELD_PREFIX, arg...)
}
func (m *Message) ProcessInner() { m.Process(PROCESS_INNER) }
func (m *Message) ProcessAgain() { m.Process(PROCESS_AGAIN) }
diff --git a/render.go b/render.go
index b70746b7..f5dfff46 100644
--- a/render.go
+++ b/render.go
@@ -32,7 +32,7 @@ func Render(m *Message, cmd string, args ...interface{}) string {
list = append(list, kit.Format(`
`,
k, kit.Select(k, kit.Value(m._cmd.Meta, kit.Keys("_trans", k)), m.Option(MSG_LANGUAGE) != "en")))
}
- return kit.Join(list, " ")
+ return kit.Join(list, SP)
case RENDER_IMAGES: // src [size]
return kit.Format(`

`, arg[0], kit.Select("120", arg, 1))
@@ -94,9 +94,9 @@ func (m *Message) PushAction(list ...interface{}) {
})
}
func (m *Message) PushPodCmd(cmd string, arg ...string) {
- if strings.Contains(m.OptionFields(), "pod") {
+ if strings.Contains(m.OptionFields(), POD) {
m.Table(func(index int, value map[string]string, head []string) {
- m.Push("pod", m.Option(MSG_USERPOD))
+ m.Push(POD, m.Option(MSG_USERPOD))
})
}
@@ -107,7 +107,7 @@ func (m *Message) PushPodCmd(cmd string, arg ...string) {
break
}
m.Cmd("web.space", value[kit.MDB_NAME], m.Prefix(cmd), arg).Table(func(index int, val map[string]string, head []string) {
- val["pod"] = kit.Keys(value[kit.MDB_NAME], val["pod"])
+ val[POD] = kit.Keys(value[kit.MDB_NAME], val[POD])
m.Push("", val, head)
})
}
@@ -117,13 +117,13 @@ func (m *Message) PushSearch(args ...interface{}) {
data := kit.Dict(args...)
for _, k := range kit.Split(m.OptionFields()) {
switch k {
- case "pod":
+ case POD:
m.Push(k, "")
// m.Push(k, kit.Select(m.Option(MSG_USERPOD), data[kit.SSH_POD]))
- case "ctx":
+ case CTX:
m.Push(k, m.Prefix())
- case "cmd":
- m.Push(k, kit.Format(data["cmd"]))
+ case CMD:
+ m.Push(k, kit.Format(data[CMD]))
case kit.MDB_TIME:
m.Push(k, kit.Select(m.Time(), data[k]))
default:
@@ -139,7 +139,7 @@ func (m *Message) PushSearchWeb(cmd string, name string) {
if value[kit.MDB_NAME] == "" {
text = kit.MergeURL(value[kit.MDB_TEXT] + url.QueryEscape(name))
}
- m.PushSearch("cmd", cmd, kit.MDB_TYPE, kit.Select("", value[kit.MDB_TYPE]), kit.MDB_NAME, name, kit.MDB_TEXT, text)
+ m.PushSearch(CMD, cmd, kit.MDB_TYPE, kit.Select("", value[kit.MDB_TYPE]), kit.MDB_NAME, name, kit.MDB_TEXT, text)
})
}
@@ -193,5 +193,5 @@ func (m *Message) RenderDownload(args ...interface{}) *Message {
return m.Render(RENDER_DOWNLOAD, args...)
}
func (m *Message) RenderIndex(serve, repos string, file ...string) *Message {
- return m.RenderDownload(path.Join(m.Conf(serve, kit.Keym(repos, kit.SSH_PATH)), kit.Select(m.Conf(serve, kit.Keym(repos, kit.SSH_INDEX)), path.Join(file...))))
+ return m.RenderDownload(path.Join(m.Conf(serve, kit.Keym(repos, kit.MDB_PATH)), kit.Select(m.Conf(serve, kit.Keym(repos, kit.MDB_INDEX)), path.Join(file...))))
}
diff --git a/type.go b/type.go
index f5325841..32e9b873 100644
--- a/type.go
+++ b/type.go
@@ -140,7 +140,7 @@ func (c *Context) Merge(s *Context) *Context {
}
kit.Value(v.Meta, kit.Keys("_trans", k), help[0])
if len(help) > 1 {
- kit.Value(v.Meta, kit.Keys("title", k), help[1])
+ kit.Value(v.Meta, kit.Keys(kit.MDB_TITLE, k), help[1])
}
if a.Hand == nil {
continue