diff --git a/base/ctx/ctx.go b/base/ctx/ctx.go index d13a4997..871d2970 100644 --- a/base/ctx/ctx.go +++ b/base/ctx/ctx.go @@ -29,7 +29,7 @@ var Index = &ice.Context{Name: "ctx", Help: "配置模块", // 模块列表 p.Travel(func(p *ice.Context, s *ice.Context) { if p != nil { - m.Push("ups", p.Name) + m.Push("ups", kit.Select("shy", p.Cap(ice.CTX_FOLLOW))) } else { m.Push("ups", "shy") } @@ -38,7 +38,23 @@ var Index = &ice.Context{Name: "ctx", Help: "配置模块", m.Push(ice.CTX_STREAM, s.Cap(ice.CTX_STREAM)) m.Push("help", s.Help) }) + return + } else if len(arg) == 1 { + m.Cmdy(ice.CTX_COMMAND, arg[0]+".") + } else { + m.Search(arg[0]+".", func(p *ice.Context, s *ice.Context, key string) { + msg := m.Spawn(s) + switch arg[1] { + case "command": + msg.Cmdy(ice.CTX_COMMAND, arg[0], arg[2:]) + case "config": + msg.Cmdy(ice.CTX_CONFIG, arg[2:]) + case "cache": + } + m.Copy(msg) + }) } + }}, ice.CTX_COMMAND: {Name: "command [all] [context [command run arg...]]", Help: "命令", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { all := false @@ -82,6 +98,7 @@ var Index = &ice.Context{Name: "ctx", Help: "配置模块", m.Search(chain, func(p *ice.Context, s *ice.Context, key string, cmd *ice.Command) { if len(arg) == 0 { // 命令列表 + m.Push("key", key) m.Push("name", cmd.Name) m.Push("help", kit.Format(cmd.Help)) m.Push("meta", kit.Format(cmd.Meta)) @@ -97,7 +114,7 @@ var Index = &ice.Context{Name: "ctx", Help: "配置模块", } }) }}, - ice.CTX_CONFIG: {Name: "config [all] save|load", Help: "配置", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { + ice.CTX_CONFIG: {Name: "config [all] [save|load] chain key arg...", Help: "配置", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { all := false if len(arg) > 0 && arg[0] == "all" { all, arg = true, arg[1:] @@ -154,7 +171,7 @@ var Index = &ice.Context{Name: "ctx", Help: "配置模块", } if len(arg) > 1 { // 读取配置 - m.Echo(msg.Conf(arg[0], arg[1])) + m.Echo(kit.Formats(msg.Confv(arg[0], arg[1]))) } else { // 读取配置 m.Echo(kit.Formats(msg.Confv(arg[0]))) diff --git a/base/web/web.go b/base/web/web.go index 70ddcc1d..fc258b61 100644 --- a/base/web/web.go +++ b/base/web/web.go @@ -760,6 +760,13 @@ var Index = &ice.Context{Name: "web", Help: "网络模块", default: if len(arg) == 1 { + list := []string{} + m.Cmdy(ice.WEB_SPACE, arg[0], "space").Table(func(index int, value map[string]string, head []string) { + list = append(list, arg[0]+"."+value["name"]) + }) + m.Append("name", list) + break + // 节点详情 m.Richs(ice.WEB_SPACE, nil, arg[0], func(key string, value map[string]interface{}) { m.Push("detail", value) @@ -780,7 +787,7 @@ var Index = &ice.Context{Name: "web", Help: "网络模块", id := kit.Format(c.ID()) m.Optionv(ice.MSG_SOURCE, []string{id}) m.Optionv(ice.MSG_TARGET, target[1:]) - for _, k := range []string{"top", "hot"} { + for _, k := range []string{"top", "hot", ice.MSG_USERNAME} { if m.Options(k) { m.Option(k, m.Option(k)) } @@ -863,7 +870,7 @@ var Index = &ice.Context{Name: "web", Help: "网络模块", ice.WEB_FAVOR: {Name: "favor", Help: "收藏夹", Meta: kit.Dict("remote", "you", "exports", []string{"hot", "favor"}, "detail", []string{"执行", "编辑", "收录", "导出", "下载"}), List: kit.List( - kit.MDB_INPUT, "text", "name", "hot", "action", "auto", + kit.MDB_INPUT, "text", "name", "favor", "action", "auto", kit.MDB_INPUT, "text", "name", "id", "action", "auto", kit.MDB_INPUT, "button", "value", "查看", "action", "auto", kit.MDB_INPUT, "button", "value", "返回", "cb", "Last", @@ -1068,7 +1075,7 @@ var Index = &ice.Context{Name: "web", Help: "网络模块", }}, ice.WEB_STORY: {Name: "story", Help: "故事会", Meta: kit.Dict("remote", "you", "exports", []string{"top", "story"}, "detail", []string{"归档", "共享", "导出", "下载"}), List: kit.List( - kit.MDB_INPUT, "text", "name", "top", "action", "auto", + kit.MDB_INPUT, "text", "name", "story", "action", "auto", kit.MDB_INPUT, "text", "name", "list", "action", "auto", kit.MDB_INPUT, "button", "value", "查看", "action", "auto", kit.MDB_INPUT, "button", "value", "返回", "cb", "Last", diff --git a/misc/git/git.go b/misc/git/git.go index 4fefa2f6..9c54b382 100644 --- a/misc/git/git.go +++ b/misc/git/git.go @@ -83,7 +83,8 @@ var Index = &ice.Context{Name: "git", Help: "代码管理", }}, "status": {Name: "status repos", Help: "状态", Meta: kit.Dict( "detail", []interface{}{"add", "reset", "remove", kit.Dict("name", "commit", "args", kit.List( - kit.MDB_INPUT, "text", "name", "repos", + kit.MDB_INPUT, "select", "name", "type", "values", []string{"add", "opt"}, + kit.MDB_INPUT, "text", "name", "name", "value", "some", ))}, ), List: kit.List( kit.MDB_INPUT, "text", "name", "repos", "action", "auto", @@ -97,15 +98,16 @@ var Index = &ice.Context{Name: "git", Help: "代码管理", m.Option("cmd_dir", kit.Value(value, "meta.path")) switch arg[1] { case "add": - m.Cmd(prefix, arg[1], arg[3]) + m.Cmdy(prefix, arg[1], m.Option("file")) case "reset": - m.Cmd(prefix, arg[1], arg[3]) + m.Cmdy(prefix, arg[1], m.Option("file")) case "checkout": - m.Cmd(prefix, arg[1], arg[3]) + m.Cmdy(prefix, arg[1], m.Option("file")) case "commit": + m.Cmdy(prefix, arg[1], "-m", m.Option("comment")) } }) - arg = []string{} + return } m.Richs("repos", nil, kit.Select("*", arg, 0), func(key string, value map[string]interface{}) { diff --git a/type.go b/type.go index acbce4d2..5b12e305 100644 --- a/type.go +++ b/type.go @@ -947,6 +947,13 @@ func (m *Message) Search(key interface{}, cb interface{}) *Message { switch cb := cb.(type) { case func(p *Context, s *Context, key string, cmd *Command): + if key == "" { + for k, v := range p.Commands { + cb(p.context, p, k, v) + } + break + } + for _, p = range []*Context{p, m.target, m.source} { for c := p; c != nil; c = c.context { if cmd, ok := c.Commands[key]; ok {