mirror of
https://shylinux.com/x/icebergs
synced 2025-05-02 19:47:02 +08:00
opt init
This commit is contained in:
parent
439d60c124
commit
d5c117738f
@ -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)
|
||||
|
@ -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 {
|
||||
|
@ -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)
|
||||
}
|
||||
|
@ -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) {
|
||||
}},
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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),
|
||||
|
@ -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)
|
||||
})
|
||||
|
@ -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...)
|
||||
|
@ -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"))
|
||||
})
|
||||
}},
|
||||
|
@ -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
|
||||
|
@ -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))
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
}},
|
||||
|
@ -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
|
||||
|
@ -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])
|
||||
|
@ -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 (
|
||||
|
@ -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()
|
||||
}},
|
||||
|
||||
|
@ -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("<html><body>")
|
||||
|
24
init.go
24
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()) == "" {
|
||||
|
@ -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) }
|
||||
|
@ -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",
|
||||
|
8
type.go
8
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 {
|
||||
|
Loading…
x
Reference in New Issue
Block a user