1
0
mirror of https://shylinux.com/x/icebergs synced 2025-05-02 19:47:02 +08:00
This commit is contained in:
harveyshao 2022-01-22 23:37:19 +08:00
parent 439d60c124
commit d5c117738f
22 changed files with 122 additions and 102 deletions

View File

@ -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)

View File

@ -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 {

View File

@ -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)
}

View File

@ -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) {
}},

View File

@ -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)

View File

@ -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),

View File

@ -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)
})

View File

@ -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...)

View File

@ -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"))
})
}},

View File

@ -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

View File

@ -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))

View File

@ -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

View File

@ -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)
}},

View File

@ -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

View File

@ -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])

View File

@ -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 (

View File

@ -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()
}},

View File

@ -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
View File

@ -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()) == "" {

View File

@ -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) }

View File

@ -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",

View File

@ -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 {