From d5c117738f670c5e63063055837167aa6a9094dc Mon Sep 17 00:00:00 2001 From: harveyshao Date: Sat, 22 Jan 2022 23:37:19 +0800 Subject: [PATCH] opt init --- base/aaa/user.go | 2 +- base/cli/runtime.go | 2 -- base/cli/system.go | 14 +++++++++++++- base/ctx/command.go | 4 +--- base/lex/matrix.go | 22 +++++++++++----------- base/web/serve.go | 2 +- base/yac/matrix.go | 22 +++++++++++----------- core/chat/files.go | 2 +- core/chat/room.go | 6 +++--- core/code/c.go | 29 ++++++++++++++++------------- core/code/compile.go | 3 --- core/code/js.go | 18 +++++++++--------- core/code/python.go | 6 +++--- core/code/sh.go | 12 ++++++------ core/code/shy.go | 12 ++++++------ core/mall/asset.go | 12 ++++++------ core/team/task.go | 8 ++++---- core/wiki/draw.go | 2 +- init.go | 24 ++++++++++++++++-------- misc/git/git.go | 3 ++- misc/vim/vimrc.go | 11 +++++------ type.go | 8 ++++++-- 22 files changed, 122 insertions(+), 102 deletions(-) diff --git a/base/aaa/user.go b/base/aaa/user.go index 06234f9a..f0a2af56 100644 --- a/base/aaa/user.go +++ b/base/aaa/user.go @@ -44,7 +44,7 @@ func _user_search(m *ice.Message, name, text string) { } func UserRoot(m *ice.Message, arg ...string) { // password username userrole - userrole := kit.Select(ice.Info.UserName, arg, 2) + userrole := kit.Select(ROOT, arg, 2) username := kit.Select(ice.Info.UserName, arg, 1) m.Option(ice.MSG_USERROLE, userrole) m.Option(ice.MSG_USERNAME, username) diff --git a/base/cli/runtime.go b/base/cli/runtime.go index 1ee07d56..be0daddf 100644 --- a/base/cli/runtime.go +++ b/base/cli/runtime.go @@ -63,8 +63,6 @@ func _runtime_init(m *ice.Message) { NodeInfo(m, "worker", m.Conf(RUNTIME, kit.Keys(BOOT, PATHNAME))) runtime.GOMAXPROCS(kit.Int(kit.Select("1", m.Conf(RUNTIME, kit.Keys(HOST, "GOMAXPROCS"))))) - m.Debug("what home %v", os.Getenv(HOME)) - m.Debug("what path %v", os.Getenv(PATH)) } func _runtime_hostinfo(m *ice.Message) { if f, e := os.Open("/proc/cpuinfo"); e == nil { diff --git a/base/cli/system.go b/base/cli/system.go index 1e6394b2..eb115552 100644 --- a/base/cli/system.go +++ b/base/cli/system.go @@ -3,6 +3,7 @@ package cli import ( "bytes" "io" + "io/ioutil" "os" "os/exec" "path" @@ -33,12 +34,23 @@ func _system_cmd(m *ice.Message, arg ...string) *exec.Cmd { for _, p := range strings.Split(env[i+1], ice.DF) { if _, err := os.Stat(path.Join(p, arg[0])); err == nil { cmd.Path = path.Join(p, arg[0]) - m.Debug("what %v", cmd.Path) break } } } } + + // 定制目录 + if buf, err := ioutil.ReadFile(ice.ETC_PATH); err == nil && len(buf) > 0 { + for _, p := range strings.Split(string(buf), ice.NL) { + if _, e := os.Stat(path.Join(p, arg[0])); e == nil { + cmd.Path = kit.Path(path.Join(p, arg[0])) + break + } + } + } + m.Debug("cmd: %v", cmd.Path) + if len(cmd.Env) > 0 { m.Log_EXPORT(CMD_ENV, cmd.Env) } diff --git a/base/ctx/command.go b/base/ctx/command.go index e2cb8d9b..70a59567 100644 --- a/base/ctx/command.go +++ b/base/ctx/command.go @@ -83,9 +83,7 @@ func init() { m.Cmd(mdb.SEARCH, mdb.CREATE, m.CommandKey(), m.PrefixKey()) }}, mdb.SEARCH: {Name: "search type name text", Help: "搜索", Hand: func(m *ice.Message, arg ...string) { - if arg[0] == COMMAND { - _command_search(m, arg[0], kit.Select("", arg, 1), kit.Select("", arg, 2)) - } + _command_search(m, arg[0], kit.Select("", arg, 1), kit.Select("", arg, 2)) }}, INDEX: {Name: "index", Help: "索引", Hand: func(m *ice.Message, arg ...string) { }}, diff --git a/base/lex/matrix.go b/base/lex/matrix.go index 5ccefb0b..5cd2f4ee 100644 --- a/base/lex/matrix.go +++ b/base/lex/matrix.go @@ -359,11 +359,11 @@ func (mat *Matrix) show(m *ice.Message) { m.Status(NLANG, mat.nlang, NCELL, mat.ncell, NPAGE, len(mat.page), NHASH, len(mat.hash)) } func _lex_load(m *ice.Message) { - m.Richs(m.Prefix(MATRIX), "", mdb.FOREACH, func(key string, value map[string]interface{}) { + m.Richs(m.PrefixKey(), "", mdb.FOREACH, func(key string, value map[string]interface{}) { value = kit.GetMeta(value) mat := NewMatrix(m, kit.Int(kit.Select("32", value[NLANG])), kit.Int(kit.Select("256", value[NCELL]))) - m.Grows(m.Prefix(MATRIX), kit.Keys(mdb.HASH, key), "", "", func(index int, value map[string]interface{}) { + m.Grows(m.PrefixKey(), kit.Keys(mdb.HASH, key), "", "", func(index int, value map[string]interface{}) { mat.Train(m, kit.Format(value[NPAGE]), kit.Format(value[NHASH]), kit.Format(value[mdb.TEXT])) }) value[MATRIX] = mat @@ -394,7 +394,7 @@ func init() { }}, mdb.CREATE: {Name: "create nlang=32 ncell=128", Help: "创建", Hand: func(m *ice.Message, arg ...string) { mat := NewMatrix(m, kit.Int(kit.Select("32", m.Option(NLANG))), kit.Int(kit.Select("128", m.Option(NCELL)))) - h := m.Rich(m.Prefix(MATRIX), "", kit.Data(mdb.TIME, m.Time(), MATRIX, mat, NLANG, mat.nlang, NCELL, mat.ncell)) + h := m.Rich(m.PrefixKey(), "", kit.Data(mdb.TIME, m.Time(), MATRIX, mat, NLANG, mat.nlang, NCELL, mat.ncell)) switch cb := m.OptionCB(MATRIX).(type) { case func(string, *Matrix): cb(h, mat) @@ -402,12 +402,12 @@ func init() { m.Echo(h) }}, mdb.INSERT: {Name: "insert hash npage=num nhash=num text=123", Help: "添加", Hand: func(m *ice.Message, arg ...string) { - m.Richs(m.Prefix(MATRIX), "", m.Option(mdb.HASH), func(key string, value map[string]interface{}) { + m.Richs(m.PrefixKey(), "", m.Option(mdb.HASH), func(key string, value map[string]interface{}) { value = kit.GetMeta(value) mat, _ := value[MATRIX].(*Matrix) m.Echo("%d", mat.Train(m, m.Option(NPAGE), m.Option(NHASH), m.Option(mdb.TEXT))) - m.Grow(m.Prefix(MATRIX), kit.Keys(mdb.HASH, key), kit.Dict( + m.Grow(m.PrefixKey(), kit.Keys(mdb.HASH, key), kit.Dict( mdb.TIME, m.Time(), NPAGE, m.Option(NPAGE), NHASH, m.Option(NHASH), mdb.TEXT, m.Option(mdb.TEXT), )) @@ -416,10 +416,10 @@ func init() { }) }}, mdb.REMOVE: {Name: "create", Help: "删除", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(mdb.DELETE, m.Prefix(MATRIX), "", mdb.HASH, mdb.HASH, m.Option(mdb.HASH)) + m.Cmdy(mdb.DELETE, m.PrefixKey(), "", mdb.HASH, mdb.HASH, m.Option(mdb.HASH)) }}, PARSE: {Name: "parse hash npage text=123", Help: "解析", Hand: func(m *ice.Message, arg ...string) { - m.Richs(m.Prefix(MATRIX), "", m.Option(mdb.HASH), func(key string, value map[string]interface{}) { + m.Richs(m.PrefixKey(), "", m.Option(mdb.HASH), func(key string, value map[string]interface{}) { value = kit.GetMeta(value) mat, _ := value[MATRIX].(*Matrix) @@ -432,7 +432,7 @@ func init() { m.ProcessInner() }}, "show": {Name: "show", Help: "矩阵", Hand: func(m *ice.Message, arg ...string) { - m.Richs(m.Prefix(MATRIX), "", kit.Select(m.Option(mdb.HASH), arg, 0), func(key string, value map[string]interface{}) { + m.Richs(m.PrefixKey(), "", kit.Select(m.Option(mdb.HASH), arg, 0), func(key string, value map[string]interface{}) { value = kit.GetMeta(value) value[MATRIX].(*Matrix).show(m) }) @@ -441,19 +441,19 @@ func init() { }, Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) { if m.Action(mdb.CREATE); len(arg) == 0 { // 矩阵列表 m.Fields(len(arg), "time,hash,npage,nhash") - m.Cmdy(mdb.SELECT, m.Prefix(MATRIX), "", mdb.HASH) + m.Cmdy(mdb.SELECT, m.PrefixKey(), "", mdb.HASH) m.PushAction(mdb.INSERT, "show", mdb.REMOVE) return } if m.Action(mdb.INSERT, "show"); len(arg) == 1 { // 词法列表 m.Fields(len(arg[1:]), "time,npage,nhash,text") - m.Cmdy(mdb.SELECT, m.Prefix(MATRIX), kit.Keys(mdb.HASH, arg[0]), mdb.LIST) + m.Cmdy(mdb.SELECT, m.PrefixKey(), kit.Keys(mdb.HASH, arg[0]), mdb.LIST) m.PushAction(PARSE) return } - m.Richs(m.Prefix(MATRIX), "", arg[0], func(key string, value map[string]interface{}) { + m.Richs(m.PrefixKey(), "", arg[0], func(key string, value map[string]interface{}) { value = kit.GetMeta(value) mat, _ := value[MATRIX].(*Matrix) diff --git a/base/web/serve.go b/base/web/serve.go index 48fad8bd..2f2c02a4 100644 --- a/base/web/serve.go +++ b/base/web/serve.go @@ -241,7 +241,7 @@ func init() { LOGIN, ice.TRUE, SHARE, ice.TRUE, SPACE, ice.TRUE, ice.VOLCANOS, ice.TRUE, ice.PUBLISH, ice.TRUE, ice.INTSHELL, ice.TRUE, ice.REQUIRE, ice.TRUE, - ice.HELP, ice.TRUE, + "cmd", ice.TRUE, ice.HELP, ice.TRUE, ), LOGHEADERS, ice.FALSE, DOMAIN, "", nfs.PATH, kit.Dict(ice.PS, ice.USR_VOLCANOS), diff --git a/base/yac/matrix.go b/base/yac/matrix.go index 6cae988d..4e00e926 100644 --- a/base/yac/matrix.go +++ b/base/yac/matrix.go @@ -310,11 +310,11 @@ func (mat *Matrix) show(m *ice.Message) { } func _yac_load(m *ice.Message) { - m.Richs(m.Prefix(MATRIX), "", mdb.FOREACH, func(key string, value map[string]interface{}) { + m.Richs(m.PrefixKey(), "", mdb.FOREACH, func(key string, value map[string]interface{}) { value = kit.GetMeta(value) mat := NewMatrix(m, kit.Int(kit.Select("32", value[NLANG])), kit.Int(kit.Select("32", value[NCELL]))) - m.Grows(m.Prefix(MATRIX), kit.Keys(mdb.HASH, key), "", "", func(index int, value map[string]interface{}) { + m.Grows(m.PrefixKey(), kit.Keys(mdb.HASH, key), "", "", func(index int, value map[string]interface{}) { page := mat.index(m, NPAGE, kit.Format(value[NPAGE])) hash := mat.index(m, NHASH, kit.Format(value[NHASH])) if mat.mat[page] == nil { @@ -351,7 +351,7 @@ func init() { ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { _yac_load(m) }}, mdb.CREATE: {Name: "create name=shy nlang=32 ncell=32", Help: "创建", Hand: func(m *ice.Message, arg ...string) { mat := NewMatrix(m, kit.Int(kit.Select("32", m.Option(NLANG))), kit.Int(kit.Select("32", m.Option(NCELL)))) - h := m.Rich(m.Prefix(MATRIX), "", kit.Data( + h := m.Rich(m.PrefixKey(), "", kit.Data( mdb.TIME, m.Time(), mdb.NAME, m.Option(mdb.NAME), MATRIX, mat, NLANG, mat.nlang, NCELL, mat.ncell, )) @@ -362,7 +362,7 @@ func init() { m.Echo(h) }}, mdb.INSERT: {Name: "insert name=shy npage=num nhash=num text=123", Help: "添加", Hand: func(m *ice.Message, arg ...string) { - m.Richs(m.Prefix(MATRIX), "", m.Option(mdb.NAME), func(key string, value map[string]interface{}) { + m.Richs(m.PrefixKey(), "", m.Option(mdb.NAME), func(key string, value map[string]interface{}) { value = kit.GetMeta(value) mat, _ := value[MATRIX].(*Matrix) @@ -376,7 +376,7 @@ func init() { m.Option(mdb.TEXT, strings.ReplaceAll(m.Option(mdb.TEXT), "\\", "\\\\")) text := kit.Split(m.Option(mdb.TEXT), " ", " ", " ") mat.train(m, page, hash, text, 1) - m.Grow(m.Prefix(MATRIX), kit.Keys(mdb.HASH, key), kit.Dict( + m.Grow(m.PrefixKey(), kit.Keys(mdb.HASH, key), kit.Dict( mdb.TIME, m.Time(), NPAGE, m.Option(NPAGE), NHASH, m.Option(NHASH), mdb.TEXT, text, )) @@ -385,10 +385,10 @@ func init() { }) }}, mdb.REMOVE: {Name: "create", Help: "删除", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(mdb.DELETE, m.Prefix(MATRIX), "", mdb.HASH, mdb.NAME, m.Option(mdb.NAME)) + m.Cmdy(mdb.DELETE, m.PrefixKey(), "", mdb.HASH, mdb.NAME, m.Option(mdb.NAME)) }}, PARSE: {Name: "parse name npage text=123", Help: "解析", Hand: func(m *ice.Message, arg ...string) { - m.Richs(m.Prefix(MATRIX), "", m.Option(mdb.NAME), func(key string, value map[string]interface{}) { + m.Richs(m.PrefixKey(), "", m.Option(mdb.NAME), func(key string, value map[string]interface{}) { value = kit.GetMeta(value) mat, _ := value[MATRIX].(*Matrix) @@ -409,7 +409,7 @@ func init() { m.ProcessInner() }}, "show": {Name: "show", Help: "矩阵", Hand: func(m *ice.Message, arg ...string) { - m.Richs(m.Prefix(MATRIX), "", kit.Select(m.Option(mdb.NAME), arg, 0), func(key string, value map[string]interface{}) { + m.Richs(m.PrefixKey(), "", kit.Select(m.Option(mdb.NAME), arg, 0), func(key string, value map[string]interface{}) { value = kit.GetMeta(value) value[MATRIX].(*Matrix).show(m) }) @@ -419,20 +419,20 @@ func init() { m.Option(ice.CACHE_LIMIT, -1) if m.Action(mdb.CREATE); len(arg) == 0 { // 矩阵列表 m.Fields(len(arg), "time,name,npage,nhash") - m.Cmdy(mdb.SELECT, m.Prefix(MATRIX), "", mdb.HASH) + m.Cmdy(mdb.SELECT, m.PrefixKey(), "", mdb.HASH) m.PushAction(mdb.INSERT, "show", mdb.REMOVE) return } if m.Action(mdb.INSERT, "show"); len(arg) == 1 { // 词法列表 m.Fields(len(arg[1:]), "time,npage,nhash,text") - m.Cmdy(mdb.SELECT, m.Prefix(MATRIX), kit.Keys(mdb.HASH, kit.Hashs(arg[0])), mdb.LIST) + m.Cmdy(mdb.SELECT, m.PrefixKey(), kit.Keys(mdb.HASH, kit.Hashs(arg[0])), mdb.LIST) m.PushAction(PARSE) return } // 词法矩阵 - m.Richs(m.Prefix(MATRIX), "", arg[0], func(key string, value map[string]interface{}) { + m.Richs(m.PrefixKey(), "", arg[0], func(key string, value map[string]interface{}) { value = kit.GetMeta(value) value[MATRIX].(*Matrix).show(m) }) diff --git a/core/chat/files.go b/core/chat/files.go index 08af52b2..2e43861d 100644 --- a/core/chat/files.go +++ b/core/chat/files.go @@ -23,7 +23,7 @@ func init() { msg := m.Cmdy(web.CACHE, web.UPLOAD) up = kit.Simple(msg.Append(mdb.HASH), msg.Append(mdb.NAME), msg.Append(nfs.SIZE)) } - m.Cmdy(mdb.INSERT, m.Prefix(FILES), "", mdb.HASH, mdb.TYPE, kit.Ext(up[1]), mdb.NAME, up[1], nfs.SIZE, up[2], mdb.DATA, up[0]) + m.Cmdy(mdb.INSERT, m.PrefixKey(), "", mdb.HASH, mdb.TYPE, kit.Ext(up[1]), mdb.NAME, up[1], nfs.SIZE, up[2], mdb.DATA, up[0]) }}, }, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { mdb.HashSelect(m, arg...) diff --git a/core/chat/room.go b/core/chat/room.go index d9797f8b..302b2572 100644 --- a/core/chat/room.go +++ b/core/chat/room.go @@ -25,11 +25,11 @@ func init() { }, Commands: map[string]*ice.Command{ ROOM: {Name: "room zone id auto", Help: "room", Action: ice.MergeAction(map[string]*ice.Action{ mdb.CREATE: {Name: "create zone", Help: "创建", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(mdb.INSERT, m.Prefix(ROOM), "", mdb.HASH, m.OptionSimple(mdb.ZONE)) + m.Cmdy(mdb.INSERT, m.PrefixKey(), "", mdb.HASH, m.OptionSimple(mdb.ZONE)) }}, mdb.INSERT: {Name: "insert zone type=hi name=hello text=world", Help: "发送", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(mdb.INSERT, m.Prefix(ROOM), "", mdb.ZONE, m.Option(mdb.ZONE), arg[2:]) - m.Cmdy(mdb.SELECT, m.Prefix(ROOM), kit.KeyHash(m.Option(mdb.ZONE)), mdb.HASH, ice.Option{"fields", "time,space"}).Table(func(index int, value map[string]string, head []string) { + m.Cmdy(mdb.INSERT, m.PrefixKey(), "", mdb.ZONE, m.Option(mdb.ZONE), arg[2:]) + m.Cmdy(mdb.SELECT, m.PrefixKey(), kit.KeyHash(m.Option(mdb.ZONE)), mdb.HASH, ice.Option{"fields", "time,space"}).Table(func(index int, value map[string]string, head []string) { m.Cmdy(web.SPACE, value[web.SPACE], "toast", m.Option("text"), m.Option("name")) }) }}, diff --git a/core/code/c.go b/core/code/c.go index a7e9917e..891df36f 100644 --- a/core/code/c.go +++ b/core/code/c.go @@ -50,20 +50,15 @@ const C = "c" func init() { Index.Register(&ice.Context{Name: C, Help: "系统", Commands: map[string]*ice.Command{ - ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - for _, cmd := range []string{mdb.SEARCH, mdb.ENGINE, mdb.RENDER, mdb.PLUGIN} { - for _, k := range []string{H, C, CC} { - m.Cmd(cmd, mdb.CREATE, k, m.Prefix(C)) - } - } - for _, cmd := range []string{mdb.SEARCH, mdb.RENDER, mdb.PLUGIN} { - for _, k := range []string{MAN1, MAN2, MAN3, MAN8} { - m.Cmd(cmd, mdb.CREATE, k, m.Prefix(MAN)) - } - } - LoadPlug(m, C, MAN) - }}, C: {Name: C, Help: "系统", Action: ice.MergeAction(map[string]*ice.Action{ + ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { + for _, cmd := range []string{mdb.SEARCH, mdb.ENGINE, mdb.RENDER, mdb.PLUGIN} { + for _, k := range []string{H, C, CC} { + m.Cmd(cmd, mdb.CREATE, k, m.PrefixKey()) + } + } + LoadPlug(m, C) + }}, mdb.SEARCH: {Hand: func(m *ice.Message, arg ...string) { if arg[0] == mdb.FOREACH { return @@ -86,6 +81,14 @@ func init() { }}, }, PlugAction())}, MAN: {Name: MAN, Help: "手册", Action: ice.MergeAction(map[string]*ice.Action{ + ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { + for _, cmd := range []string{mdb.SEARCH, mdb.RENDER, mdb.PLUGIN} { + for _, k := range []string{MAN1, MAN2, MAN3, MAN8} { + m.Cmd(cmd, mdb.CREATE, k, m.PrefixKey()) + } + } + LoadPlug(m, MAN) + }}, mdb.SEARCH: {Hand: func(m *ice.Message, arg ...string) { if arg[0] == mdb.FOREACH { return diff --git a/core/code/compile.go b/core/code/compile.go index 1b6a3930..2cebcc3c 100644 --- a/core/code/compile.go +++ b/core/code/compile.go @@ -57,9 +57,6 @@ func init() { kit.Keys(kit.Select(ice.ICE, kit.TrimExt(main), main != ice.SRC_MAIN_GO), goos, arch)) } - m.Debug("what home %v", os.Getenv(cli.HOME)) - m.Debug("what path %v", os.Getenv(cli.PATH)) - // 执行编译 _autogen_version(m.Spawn()) m.Optionv(cli.CMD_ENV, kit.Simple(m.Configv(cli.ENV), cli.HOME, os.Getenv(cli.HOME), cli.PATH, os.Getenv(cli.PATH), cli.GOOS, goos, cli.GOARCH, arch)) diff --git a/core/code/js.go b/core/code/js.go index a59f1161..3754f6bc 100644 --- a/core/code/js.go +++ b/core/code/js.go @@ -21,16 +21,16 @@ const VUE = "vue" func init() { Index.Register(&ice.Context{Name: JS, Help: "前端", Commands: map[string]*ice.Command{ - ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - for _, cmd := range []string{mdb.SEARCH, mdb.ENGINE, mdb.RENDER, mdb.PLUGIN} { - m.Cmd(cmd, mdb.CREATE, JSON, m.Prefix(JS)) - m.Cmd(cmd, mdb.CREATE, VUE, m.Prefix(JS)) - m.Cmd(cmd, mdb.CREATE, JS, m.Prefix(JS)) - m.Cmd(cmd, mdb.CREATE, TS, m.Prefix(JS)) - } - LoadPlug(m, JS) - }}, JS: {Name: "js", Help: "前端", Action: ice.MergeAction(map[string]*ice.Action{ + ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { + for _, cmd := range []string{mdb.SEARCH, mdb.ENGINE, mdb.RENDER, mdb.PLUGIN} { + m.Cmd(cmd, mdb.CREATE, JSON, m.PrefixKey()) + m.Cmd(cmd, mdb.CREATE, VUE, m.PrefixKey()) + m.Cmd(cmd, mdb.CREATE, JS, m.PrefixKey()) + m.Cmd(cmd, mdb.CREATE, TS, m.PrefixKey()) + } + LoadPlug(m, JS) + }}, mdb.SEARCH: {Hand: func(m *ice.Message, arg ...string) { if arg[0] == mdb.FOREACH { return diff --git a/core/code/python.go b/core/code/python.go index a7f60f54..c1d6612c 100644 --- a/core/code/python.go +++ b/core/code/python.go @@ -17,10 +17,10 @@ func init() { PYTHON, "python", "pip", "pip", )}, }, Commands: map[string]*ice.Command{ - ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - m.Cmd(mdb.ENGINE, mdb.CREATE, mdb.TYPE, "py", mdb.NAME, m.Prefix(PYTHON)) - }}, PYTHON: {Name: "python path auto order build download", Help: "脚本命令", Action: ice.MergeAction(map[string]*ice.Action{ + ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { + m.Cmd(mdb.ENGINE, mdb.CREATE, mdb.TYPE, "py", mdb.NAME, m.PrefixKey()) + }}, ice.RUN: {Name: "run", Help: "运行", Hand: func(m *ice.Message, arg ...string) { m.Cmdy(cli.SYSTEM, m.Config(PYTHON), arg) }}, diff --git a/core/code/sh.go b/core/code/sh.go index 6cbb9785..80bf1878 100644 --- a/core/code/sh.go +++ b/core/code/sh.go @@ -11,13 +11,13 @@ const SH = "sh" func init() { Index.Register(&ice.Context{Name: SH, Help: "命令", Commands: map[string]*ice.Command{ - ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - for _, cmd := range []string{mdb.SEARCH, mdb.ENGINE, mdb.RENDER, mdb.PLUGIN} { - m.Cmd(cmd, mdb.CREATE, SH, m.Prefix(SH)) - } - LoadPlug(m, SH) - }}, SH: {Name: SH, Help: "命令", Action: ice.MergeAction(map[string]*ice.Action{ + ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { + for _, cmd := range []string{mdb.SEARCH, mdb.ENGINE, mdb.RENDER, mdb.PLUGIN} { + m.Cmd(cmd, mdb.CREATE, SH, m.PrefixKey()) + } + LoadPlug(m, SH) + }}, mdb.SEARCH: {Hand: func(m *ice.Message, arg ...string) { if arg[0] == mdb.FOREACH { return diff --git a/core/code/shy.go b/core/code/shy.go index d6bc698d..6b3d082d 100644 --- a/core/code/shy.go +++ b/core/code/shy.go @@ -13,13 +13,13 @@ const SHY = "shy" func init() { Index.Register(&ice.Context{Name: SHY, Help: "脚本", Commands: map[string]*ice.Command{ - ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - for _, cmd := range []string{mdb.SEARCH, mdb.ENGINE, mdb.RENDER, mdb.PLUGIN} { - m.Cmd(cmd, mdb.CREATE, SHY, m.Prefix(SHY)) - } - LoadPlug(m, SHY) - }}, SHY: {Name: SHY, Help: "脚本", Action: ice.MergeAction(map[string]*ice.Action{ + ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { + for _, cmd := range []string{mdb.SEARCH, mdb.ENGINE, mdb.RENDER, mdb.PLUGIN} { + m.Cmd(cmd, mdb.CREATE, SHY, m.PrefixKey()) + } + LoadPlug(m, SHY) + }}, mdb.SEARCH: {Hand: func(m *ice.Message, arg ...string) { if arg[0] == SHY { _go_find(m, kit.Select(MAIN, arg, 1), arg[2]) diff --git a/core/mall/asset.go b/core/mall/asset.go index 29d6cbeb..ebb4ce14 100644 --- a/core/mall/asset.go +++ b/core/mall/asset.go @@ -30,17 +30,17 @@ func _asset_check(m *ice.Message, account string) { m.OptionCB(mdb.SELECT, func(key string, value map[string]interface{}) { amount += kit.Int(kit.Value(value, AMOUNT)) }) - m.Cmd(mdb.SELECT, m.Prefix(ASSET), "", mdb.ZONE, account, ice.OptionFields(m.Config(mdb.FIELD))) + m.Cmd(mdb.SELECT, m.PrefixKey(), "", mdb.ZONE, account, ice.OptionFields(m.Config(mdb.FIELD))) - m.Cmdy(mdb.MODIFY, m.Prefix(ASSET), "", mdb.HASH, ACCOUNT, account, AMOUNT, amount) + m.Cmdy(mdb.MODIFY, m.PrefixKey(), "", mdb.HASH, ACCOUNT, account, AMOUNT, amount) } func _asset_insert(m *ice.Message, account string, arg ...string) { - m.Cmdy(mdb.INSERT, m.Prefix(ASSET), "", mdb.HASH, ACCOUNT, account) - m.Cmdy(mdb.INSERT, m.Prefix(ASSET), "", mdb.ZONE, account, arg) + m.Cmdy(mdb.INSERT, m.PrefixKey(), "", mdb.HASH, ACCOUNT, account) + m.Cmdy(mdb.INSERT, m.PrefixKey(), "", mdb.ZONE, account, arg) m.OptionFields("time,account,amount,count") - amount := kit.Int(m.Cmd(mdb.SELECT, m.Prefix(ASSET), "", mdb.HASH, ACCOUNT, account).Append(AMOUNT)) + amount := kit.Int(m.Cmd(mdb.SELECT, m.PrefixKey(), "", mdb.HASH, ACCOUNT, account).Append(AMOUNT)) amount += kit.Int(_sub_value(m, AMOUNT, arg...)) - m.Cmdy(mdb.MODIFY, m.Prefix(ASSET), "", mdb.HASH, ACCOUNT, account, AMOUNT, amount) + m.Cmdy(mdb.MODIFY, m.PrefixKey(), "", mdb.HASH, ACCOUNT, account, AMOUNT, amount) } const ( diff --git a/core/team/task.go b/core/team/task.go index f0b2a6a0..5e92a03f 100644 --- a/core/team/task.go +++ b/core/team/task.go @@ -63,8 +63,8 @@ func init() { }, Commands: map[string]*ice.Command{ TASK: {Name: "task zone id auto insert export import", Help: "任务", Action: ice.MergeAction(map[string]*ice.Action{ mdb.INSERT: {Name: "insert zone type=once,step,week name text begin_time@date close_time@date", Help: "添加", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(mdb.INSERT, m.Prefix(TASK), "", mdb.HASH, m.OptionSimple(mdb.ZONE)) - m.Cmdy(mdb.INSERT, m.Prefix(TASK), "", mdb.ZONE, m.Option(mdb.ZONE), + m.Cmdy(mdb.INSERT, m.PrefixKey(), "", mdb.HASH, m.OptionSimple(mdb.ZONE)) + m.Cmdy(mdb.INSERT, m.PrefixKey(), "", mdb.ZONE, m.Option(mdb.ZONE), BEGIN_TIME, m.Time(), CLOSE_TIME, m.Time("30m"), STATUS, PREPARE, LEVEL, 3, SCORE, 3, arg) m.ProcessRefresh30ms() @@ -78,12 +78,12 @@ func init() { }}, mdb.EXPORT: {Name: "export", Help: "导出", Hand: func(m *ice.Message, arg ...string) { m.OptionFields(mdb.ZONE, "time,id,type,name,text,level,status,score,begin_time,close_time") - m.Cmdy(mdb.EXPORT, m.Prefix(TASK), "", mdb.ZONE) + m.Cmdy(mdb.EXPORT, m.PrefixKey(), "", mdb.ZONE) m.ProcessRefresh30ms() }}, mdb.IMPORT: {Name: "import", Help: "导入", Hand: func(m *ice.Message, arg ...string) { m.OptionFields(mdb.ZONE) - m.Cmdy(mdb.IMPORT, m.Prefix(TASK), "", mdb.ZONE) + m.Cmdy(mdb.IMPORT, m.PrefixKey(), "", mdb.ZONE) m.ProcessRefresh30ms() }}, diff --git a/core/wiki/draw.go b/core/wiki/draw.go index 801d52f9..23042830 100644 --- a/core/wiki/draw.go +++ b/core/wiki/draw.go @@ -19,7 +19,7 @@ func init() { }, Commands: map[string]*ice.Command{ DRAW: {Name: "draw path=src/main.svg pid refresh:button=auto edit save actions", Help: "思维导图", Meta: kit.Dict(ice.DisplayLocal("")), Action: ice.MergeAction(map[string]*ice.Action{ ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { - m.Cmd(mdb.RENDER, mdb.CREATE, mdb.TYPE, "svg", mdb.NAME, m.Prefix(DRAW)) + m.Cmd(mdb.RENDER, mdb.CREATE, mdb.TYPE, "svg", mdb.NAME, m.PrefixKey()) }}, mdb.RENDER: {Name: "render", Help: "渲染", Hand: func(m *ice.Message, arg ...string) { m.Echo("") diff --git a/init.go b/init.go index c9f24a12..c834fe10 100644 --- a/init.go +++ b/init.go @@ -2,6 +2,7 @@ package ice import ( "os" + "path" "strings" "sync" "time" @@ -97,22 +98,29 @@ var Pulse = &Message{ source: Index, target: Index, Hand: true, } +func init() { Index.root, Pulse.root = Index, Pulse } + func Run(arg ...string) string { - if arg = append(arg, os.Args[1:]...); os.Getenv("ctx_arg") != "" { - arg = append(arg, kit.Split(os.Getenv("ctx_arg"))...) - } - if len(arg) == 0 { - arg = append(arg, HELP) + if len(arg) == 0 { // 进程参数 + if arg = append(arg, os.Args[1:]...); os.Getenv("ctx_arg") != "" { + arg = append(arg, kit.Split(os.Getenv("ctx_arg"))...) + } } - Index.root, Pulse.root = Index, Pulse switch Index.Merge(Index).Begin(Pulse.Spawn(), arg...); kit.Select("", arg, 0) { - case SERVE, SPACE: + case SERVE, SPACE: // 启动服务 if log.LogDisable = false; Index.Start(Pulse, arg...) { Pulse.TryCatch(Pulse, true, func(Pulse *Message) { Index.wg.Wait() }) os.Exit(kit.Int(Pulse.Option(EXIT))) } - default: + default: // 执行命令 + if _, ok := Info.names[path.Base(os.Args[0])]; ok { + arg = kit.Simple(path.Base(os.Args[0]), arg) + } + if len(arg) == 0 { + arg = append(arg, HELP) + } + Pulse.Cmd(INIT) defer Pulse.Cmd(EXIT) if Pulse.Cmdy(arg); strings.TrimSpace(Pulse.Result()) == "" { diff --git a/misc/git/git.go b/misc/git/git.go index caf9d112..70707840 100644 --- a/misc/git/git.go +++ b/misc/git/git.go @@ -23,7 +23,8 @@ var Index = &ice.Context{Name: GIT, Help: "代码库", Configs: map[string]*ice. }}, }, code.InstallAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Cmdy(code.INSTALL, nfs.SOURCE, m.Config(nfs.SOURCE), arg) + m.Echo("hello world %v", arg) }}, }} -func init() { code.Index.Register(Index, &web.Frame{}, REPOS) } +func init() { code.Index.Register(Index, &web.Frame{}, REPOS, GIT) } diff --git a/misc/vim/vimrc.go b/misc/vim/vimrc.go index aefd5e22..240944bc 100644 --- a/misc/vim/vimrc.go +++ b/misc/vim/vimrc.go @@ -13,10 +13,10 @@ func init() { Index.Merge(&ice.Context{Commands: map[string]*ice.Command{ VIMRC: {Name: "vimrc", Help: "收藏夹", Action: ice.MergeAction(map[string]*ice.Action{ ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { - m.Cmd(mdb.PLUGIN, mdb.CREATE, VIMRC, m.Prefix(VIMRC)) - m.Cmd(mdb.RENDER, mdb.CREATE, VIMRC, m.Prefix(VIMRC)) - m.Cmd(mdb.PLUGIN, mdb.CREATE, VIM, m.Prefix(VIMRC)) - m.Cmd(mdb.RENDER, mdb.CREATE, VIM, m.Prefix(VIMRC)) + m.Cmd(mdb.PLUGIN, mdb.CREATE, VIMRC, m.PrefixKey()) + m.Cmd(mdb.RENDER, mdb.CREATE, VIMRC, m.PrefixKey()) + m.Cmd(mdb.PLUGIN, mdb.CREATE, VIM, m.PrefixKey()) + m.Cmd(mdb.RENDER, mdb.CREATE, VIM, m.PrefixKey()) code.LoadPlug(m, VIMRC) }}, }, code.PlugAction())}, @@ -24,8 +24,7 @@ func init() { VIMRC: {Name: VIMRC, Help: "收藏夹", Value: kit.Data( code.PLUG, kit.Dict( code.SPLIT, kit.Dict("space", " \t", "operator", "{[(&.,;!|<>)]}"), - code.PREFIX, kit.Dict("\"", "comment"), - code.PREPARE, kit.Dict( + code.PREFIX, kit.Dict("\"", "comment"), code.PREPARE, kit.Dict( code.KEYWORD, kit.Simple( "source", "finish", "set", "let", "end", diff --git a/type.go b/type.go index 228ab4b6..8434300b 100644 --- a/type.go +++ b/type.go @@ -85,7 +85,7 @@ func (c *Context) Register(s *Context, x Server, n ...string) *Context { name(n, s) } - if c.Contexts == nil { + if s.Merge(s); c.Contexts == nil { c.Contexts = map[string]*Context{} } c.Contexts[s.Name] = s @@ -130,9 +130,11 @@ func (c *Context) Merge(s *Context) *Context { } for k, a := range cmd.Action { - if p, ok := c.Commands[k]; ok && s != c { + // if p, ok := c.Commands[k]; ok && s != c { + if p, ok := c.Commands[k]; ok { switch last, next := p.Hand, a.Hand; k { case CTX_INIT: + fmt.Printf("what %v %v last: %v next: %v\n", s.Name, c.Name, kit.FileLine(last, 3), kit.FileLine(next, 3)) p.Hand = func(m *Message, c *Context, _key string, arg ...string) { last(m, c, _key, arg...) m._key, m._cmd = key, cmd @@ -166,6 +168,8 @@ func (c *Context) Merge(s *Context) *Context { cmd.Meta[k] = a.List } } + delete(cmd.Action, CTX_INIT) + delete(cmd.Action, CTX_EXIT) } if c.Configs == nil {