forked from x/ContextOS
mac opt web.cache
This commit is contained in:
parent
e5d0dabb7f
commit
f7ddd367e9
@ -2421,6 +2421,7 @@ var Index = &Context{Name: "ctx", Help: "模块中心",
|
||||
}
|
||||
|
||||
}},
|
||||
|
||||
"message": &Command{Name: "message [code] [all]|[cmd...]", Help: "查看消息", Hand: func(m *Message, c *Context, key string, arg ...string) {
|
||||
if len(arg) > 0 && arg[0] == "spawn" {
|
||||
m.Echo("%d", m.Spawn().code)
|
||||
@ -2700,6 +2701,7 @@ var Index = &Context{Name: "ctx", Help: "模块中心",
|
||||
}
|
||||
|
||||
}},
|
||||
|
||||
"context": &Command{
|
||||
Name: "context [[find [root|home]|search [root|home] [name|help] [magic|rand|first|last]] name] [list|info|cache|config|command|switch] [args]",
|
||||
Help: "查找并操作模块,\n查找起点root:根模块、back:父模块、home:本模块,\n查找方法find:路径匹配、search:模糊匹配,\n查找对象name:支持点分和正则,\n操作类型show:显示信息、switch:切换为当前、start:启动模块、spawn:分裂子模块,args:启动参数",
|
||||
@ -3232,285 +3234,38 @@ var Index = &Context{Name: "ctx", Help: "模块中心",
|
||||
m.Echo("%v", value)
|
||||
}
|
||||
}},
|
||||
"cache": &Command{
|
||||
Name: "cache [all|key [value]|key = value|key name value help|delete key]",
|
||||
Help: "查看、读写、赋值、新建、删除缓存变量",
|
||||
Hand: func(m *Message, c *Context, key string, arg ...string) {
|
||||
"cache": &Command{Name: "cache [all] |key [value]|key = value|key name value help|delete key]", Help: "查看、读写、赋值、新建、删除缓存变量", Hand: func(m *Message, c *Context, key string, arg ...string) {
|
||||
all := false
|
||||
if len(arg) > 0 && arg[0] == "all" {
|
||||
arg, all = arg[1:], true
|
||||
}
|
||||
|
||||
switch len(arg) {
|
||||
case 0:
|
||||
m.BackTrace(func(m *Message) bool {
|
||||
for k, v := range m.target.Caches {
|
||||
m.Add("append", "key", k)
|
||||
m.Add("append", "value", m.Cap(k))
|
||||
m.Add("append", "name", v.Name)
|
||||
}
|
||||
m.Sort("key", "string").Table()
|
||||
return all
|
||||
})
|
||||
m.Sort("key", "str").Table()
|
||||
return
|
||||
case 1:
|
||||
if arg[0] == "all" {
|
||||
keys := []string{}
|
||||
values := map[string]*Cache{}
|
||||
for s := m.target; s != nil; s = s.context {
|
||||
for k, v := range s.Caches {
|
||||
if _, ok := values[k]; !ok {
|
||||
keys = append(keys, k)
|
||||
values[k] = v
|
||||
}
|
||||
}
|
||||
}
|
||||
sort.Strings(keys)
|
||||
for _, k := range keys {
|
||||
m.Echo("%s(%s): %s\n", k, m.Cap(k), values[k].Name)
|
||||
}
|
||||
return
|
||||
}
|
||||
case 2:
|
||||
if arg[0] == "delete" {
|
||||
if _, ok := m.target.Caches[arg[1]]; ok {
|
||||
delete(m.target.Caches, arg[1])
|
||||
}
|
||||
return
|
||||
}
|
||||
m.Cap(arg[0], arg[1])
|
||||
case 3:
|
||||
m.Cap(arg[0], arg[0], arg[2], arg[0])
|
||||
default:
|
||||
m.Cap(arg[0], arg[1:]...)
|
||||
}
|
||||
m.Echo("%s", m.Cap(arg[0]))
|
||||
|
||||
}},
|
||||
"right": &Command{
|
||||
Name: "right [share|add|del group [cache|config|command item]]",
|
||||
Help: "用户组管理,查看、添加、删除用户组或是接口",
|
||||
Form: map[string]int{"target": 1},
|
||||
Hand: func(m *Message, c *Context, key string, arg ...string) {
|
||||
owner := m.target
|
||||
if m.Has("target") {
|
||||
owner = m.Find(m.Option("target")).target
|
||||
}
|
||||
index := owner.Index
|
||||
if index == nil {
|
||||
index = map[string]*Context{}
|
||||
owner.Index = index
|
||||
}
|
||||
|
||||
aaa := m.Sess("aaa", false)
|
||||
if aaa.Cap("username") != aaa.Conf("rootname") {
|
||||
owner = index[aaa.Cap("username")]
|
||||
m.Assert(owner != nil)
|
||||
}
|
||||
|
||||
share := owner
|
||||
if len(arg) > 0 {
|
||||
if owner.Index == nil {
|
||||
owner.Index = map[string]*Context{}
|
||||
}
|
||||
if s, ok := owner.Index[arg[0]]; ok {
|
||||
share = s
|
||||
} else {
|
||||
share = &Context{Name: arg[0], context: owner}
|
||||
if _, ok = index[arg[0]]; m.Assert(!ok) {
|
||||
owner.Index[arg[0]] = share
|
||||
index[arg[0]] = share
|
||||
}
|
||||
}
|
||||
arg = arg[1:]
|
||||
}
|
||||
|
||||
if len(arg) == 0 {
|
||||
for k, x := range share.Caches {
|
||||
m.Add("append", "ccc", "cache")
|
||||
m.Add("append", "key", k)
|
||||
m.Add("append", "name", x.Name)
|
||||
m.Add("append", "arg", "")
|
||||
m.Add("append", "value", "")
|
||||
}
|
||||
for k, x := range share.Configs {
|
||||
m.Add("append", "ccc", "config")
|
||||
m.Add("append", "key", k)
|
||||
m.Add("append", "name", x.Name)
|
||||
m.Add("append", "arg", "")
|
||||
m.Add("append", "value", "")
|
||||
}
|
||||
for k, x := range share.Commands {
|
||||
m.Add("append", "ccc", "command")
|
||||
m.Add("append", "key", k)
|
||||
m.Add("append", "name", x.Name)
|
||||
|
||||
m.Add("append", "arg", "")
|
||||
m.Add("append", "value", "")
|
||||
for a, val := range x.Shares {
|
||||
for _, v := range val {
|
||||
m.Add("append", "ccc", "command")
|
||||
m.Add("append", "key", k)
|
||||
m.Add("append", "name", x.Name)
|
||||
|
||||
m.Add("append", "arg", a)
|
||||
m.Add("append", "value", v)
|
||||
}
|
||||
}
|
||||
}
|
||||
for k, x := range share.Index {
|
||||
m.Add("append", "ccc", "context")
|
||||
m.Add("append", "key", k)
|
||||
m.Add("append", "name", x.Name)
|
||||
m.Add("append", "arg", x.context.Name)
|
||||
m.Add("append", "value", "")
|
||||
}
|
||||
m.Table()
|
||||
m.Echo(m.Cap(arg[0], arg[1:]...))
|
||||
return
|
||||
}
|
||||
|
||||
switch arg[0] {
|
||||
case "check":
|
||||
if len(arg) == 1 {
|
||||
m.Echo("ok")
|
||||
break
|
||||
}
|
||||
switch arg[1] {
|
||||
case "cache":
|
||||
if _, ok := share.Caches[arg[2]]; ok {
|
||||
m.Echo("ok")
|
||||
return
|
||||
}
|
||||
case "config":
|
||||
if _, ok := share.Configs[arg[2]]; ok {
|
||||
m.Echo("ok")
|
||||
return
|
||||
}
|
||||
case "command":
|
||||
if x, ok := share.Commands[arg[2]]; ok {
|
||||
if len(arg) == 3 {
|
||||
m.Echo("ok")
|
||||
break
|
||||
}
|
||||
for i := 3; i < len(arg)-1; i += 2 {
|
||||
if len(x.Shares[arg[i]]) > 0 {
|
||||
match := false
|
||||
for _, v := range x.Shares[arg[i]] {
|
||||
ma, e := regexp.MatchString(v, arg[i+1])
|
||||
m.Assert(e)
|
||||
if ma {
|
||||
match = ma
|
||||
break
|
||||
}
|
||||
}
|
||||
if !match {
|
||||
m.Echo("no")
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
m.Echo("ok")
|
||||
}
|
||||
}
|
||||
case "add":
|
||||
switch arg[1] {
|
||||
case "cache":
|
||||
if x, ok := owner.Caches[arg[2]]; ok {
|
||||
if share.Caches == nil {
|
||||
share.Caches = map[string]*Cache{}
|
||||
}
|
||||
share.Caches[arg[2]] = x
|
||||
m.Log("info", "%s.cache(%s)->%s", owner.Name, arg[2], share.Name)
|
||||
}
|
||||
case "config":
|
||||
if x, ok := owner.Configs[arg[2]]; ok {
|
||||
if share.Configs == nil {
|
||||
share.Configs = map[string]*Config{}
|
||||
}
|
||||
share.Configs[arg[2]] = x
|
||||
}
|
||||
m.Log("info", "%s.config(%s)->%s", owner.Name, arg[2], share.Name)
|
||||
case "command":
|
||||
if _, ok := owner.Commands[arg[2]]; ok {
|
||||
if share.Commands == nil {
|
||||
share.Commands = map[string]*Command{}
|
||||
}
|
||||
if _, ok := share.Commands[arg[2]]; !ok {
|
||||
share.Commands[arg[2]] = &Command{Shares: map[string][]string{}}
|
||||
}
|
||||
m.Log("info", "%s.command(%s)->%s", owner.Name, arg[2], share.Name)
|
||||
for i := 3; i < len(arg)-1; i += 2 {
|
||||
m.Log("info", "%s.command(%s, %s, %s)->%s", owner.Name, arg[2], arg[i], arg[i+1], share.Name)
|
||||
share.Commands[arg[2]].Shares[arg[i]] = append(share.Commands[arg[2]].Shares[arg[i]], arg[i+1])
|
||||
}
|
||||
}
|
||||
}
|
||||
case "del":
|
||||
switch arg[1] {
|
||||
case "cache":
|
||||
cs := []*Context{share}
|
||||
for i := 0; i < len(cs); i++ {
|
||||
for _, x := range cs[i].Index {
|
||||
cs = append(cs, x)
|
||||
}
|
||||
delete(cs[i].Caches, arg[2])
|
||||
}
|
||||
case "config":
|
||||
cs := []*Context{share}
|
||||
for i := 0; i < len(cs); i++ {
|
||||
for _, x := range cs[i].Index {
|
||||
cs = append(cs, x)
|
||||
}
|
||||
delete(cs[i].Configs, arg[2])
|
||||
}
|
||||
case "command":
|
||||
cs := []*Context{share}
|
||||
for i := 0; i < len(cs); i++ {
|
||||
for _, x := range cs[i].Index {
|
||||
cs = append(cs, x)
|
||||
}
|
||||
if len(arg) == 3 {
|
||||
delete(cs[i].Commands, arg[2])
|
||||
} else if len(arg) == 4 {
|
||||
delete(cs[i].Commands[arg[2]].Shares, arg[3])
|
||||
} else if len(arg) == 5 {
|
||||
delete(cs[i].Commands[arg[2]].Shares, arg[3])
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
case "show":
|
||||
switch arg[1] {
|
||||
case "cache":
|
||||
case "config":
|
||||
case "command":
|
||||
case "context":
|
||||
for friend, x := range share.Index {
|
||||
for command, c := range x.Commands {
|
||||
m.Add("append", "friend", friend)
|
||||
m.Add("append", "key", command)
|
||||
m.Add("append", "arg", "")
|
||||
m.Add("append", "value", "")
|
||||
for a, s := range c.Shares {
|
||||
for _, v := range s {
|
||||
m.Add("append", "friend", friend)
|
||||
m.Add("append", "key", command)
|
||||
m.Add("append", "arg", a)
|
||||
m.Add("append", "value", v)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}},
|
||||
"format": &Command{
|
||||
Name: "format",
|
||||
Help: "format",
|
||||
Hand: func(m *Message, c *Context, key string, arg ...string) {
|
||||
values := []interface{}{}
|
||||
for _, v := range arg[1:] {
|
||||
if v[0] == '$' {
|
||||
values = append(values, m.Cap(v[1:]))
|
||||
} else {
|
||||
values = append(values, v)
|
||||
}
|
||||
}
|
||||
m.Echo(arg[0], values...)
|
||||
m.Append("format", m.Result(0))
|
||||
}},
|
||||
|
||||
"trans": &Command{Name: "trans key index", Help: "数据转换", Hand: func(m *Message, c *Context, key string, arg ...string) {
|
||||
value := m.Data[(arg[0])]
|
||||
if arg[1] != "" {
|
||||
|
Loading…
x
Reference in New Issue
Block a user