diff --git a/base/aaa/sess.go b/base/aaa/sess.go index 568a716b..6a1830fd 100644 --- a/base/aaa/sess.go +++ b/base/aaa/sess.go @@ -75,7 +75,7 @@ func SessCreate(m *ice.Message, username string) string { return m.Option(ice.MSG_SESSID, m.Cmdx(SESS, mdb.CREATE, username)) } func SessCheck(m *ice.Message, sessid string) bool { - return m.Cmdy(SESS, CHECK, sessid).Option(ice.MSG_USERNAME) != "" + return sessid != "" && m.Cmdy(SESS, CHECK, sessid).Option(ice.MSG_USERNAME) != "" } func UserLogout(m *ice.Message) { m.Cmd(SESS, mdb.REMOVE, kit.Dict(mdb.HASH, m.Option(ice.MSG_SESSID))) diff --git a/base/aaa/user.go b/base/aaa/user.go index db47d657..c719d33d 100644 --- a/base/aaa/user.go +++ b/base/aaa/user.go @@ -100,6 +100,9 @@ func UserInfo(m *ice.Message, name ice.Any, key, meta string) (value string) { return } func UserRole(m *ice.Message, username ice.Any) (role string) { + if username == "" { + return VOID + } if role = VOID; username == ice.Info.UserName { return ROOT } diff --git a/base/ctx/command.go b/base/ctx/command.go index 2533a128..8faf2490 100644 --- a/base/ctx/command.go +++ b/base/ctx/command.go @@ -124,7 +124,7 @@ func CmdAction(args ...ice.Any) ice.Actions { m.Cmdy(CONFIG, arg[0]) return } - if aaa.Right(m, arg) && !PodCmd(m, arg) { + if !PodCmd(m, arg) && aaa.Right(m, arg) { m.Cmdy(arg) } }}, diff --git a/base/mdb/zone.go b/base/mdb/zone.go index 46a4c58b..ac6c70d7 100644 --- a/base/mdb/zone.go +++ b/base/mdb/zone.go @@ -192,6 +192,9 @@ func ZoneRemove(m *ice.Message, arg ...Any) { } func ZoneInsert(m *ice.Message, arg ...Any) { args := kit.Simple(arg...) + if len(args) == 0 { + args = m.OptionSimple(ZoneShort(m), m.Config(FIELD)) + } m.Cmdy(INSERT, m.PrefixKey(), "", ZONE, args[1], ZoneArgs(m, args[2:])) } func ZoneModify(m *ice.Message, arg ...Any) { diff --git a/core/chat/website.go b/core/chat/website.go index 2055924b..2511dc13 100644 --- a/core/chat/website.go +++ b/core/chat/website.go @@ -174,6 +174,9 @@ func init() { if r.Method != http.MethodGet { return false } + if !strings.HasPrefix(r.Header.Get(web.UserAgent), "Mozilla") { + return false + } if strings.HasPrefix(r.URL.Path, CHAT_WEBSITE) { _website_render(m, w, r, kit.Ext(r.URL.Path), m.Cmdx(nfs.CAT, strings.Replace(r.URL.Path, CHAT_WEBSITE, SRC_WEBSITE, 1)), path.Base(r.URL.Path)) return true diff --git a/misc/bash/bash.go b/misc/bash/bash.go index 888df1b4..85bf61d4 100644 --- a/misc/bash/bash.go +++ b/misc/bash/bash.go @@ -6,21 +6,16 @@ import ( "shylinux.com/x/icebergs/base/nfs" "shylinux.com/x/icebergs/base/web" "shylinux.com/x/icebergs/core/code" - kit "shylinux.com/x/toolkits" ) const BASH = "bash" -var Index = &ice.Context{Name: BASH, Help: "命令行", Configs: ice.Configs{ - BASH: {Name: BASH, Help: "命令行", Value: kit.Data( - nfs.SOURCE, "http://mirrors.tencent.com/macports/distfiles/bash/5.1_1/bash-5.1.tar.gz", - )}, -}, Commands: ice.Commands{ +var Index = &ice.Context{Name: BASH, Help: "命令行", Commands: ice.Commands{ BASH: {Name: "bash path auto order build download", Help: "命令行", Actions: ice.MergeActions(ice.Actions{ cli.ORDER: {Name: "order", Help: "加载", Hand: func(m *ice.Message, arg ...string) { m.Cmdy(code.INSTALL, cli.ORDER, m.Config(nfs.SOURCE), "_install/bin") }}, - }, code.InstallAction()), Hand: func(m *ice.Message, arg ...string) { + }, code.InstallAction(nfs.SOURCE, "http://mirrors.tencent.com/macports/distfiles/bash/5.1_1/bash-5.1.tar.gz")), Hand: func(m *ice.Message, arg ...string) { m.Cmdy(code.INSTALL, nfs.SOURCE, m.Config(nfs.SOURCE), arg) }}, }} diff --git a/misc/bash/bash.shy b/misc/bash/bash.shy index 9d3b8aa6..b3b7101c 100644 --- a/misc/bash/bash.shy +++ b/misc/bash/bash.shy @@ -28,9 +28,11 @@ cd ./_install ` chapter "应用" +field "文件夹" web.chat.files +field "命令行" web.code.bash.bash field "会话流" web.code.bash.sess field "同步流" web.code.bash.sync field "收藏夹" web.code.bash.favor field "回收站" web.code.bash.trash -field "文件夹" web.chat.files +field "回收站" web.code.bash.grant diff --git a/misc/bash/download.go b/misc/bash/download.go index cac97c3b..df201f2b 100644 --- a/misc/bash/download.go +++ b/misc/bash/download.go @@ -5,7 +5,6 @@ import ( "shylinux.com/x/icebergs/base/mdb" "shylinux.com/x/icebergs/base/nfs" "shylinux.com/x/icebergs/base/web" - "shylinux.com/x/icebergs/core/chat" kit "shylinux.com/x/toolkits" ) @@ -13,16 +12,16 @@ func init() { Index.MergeCommands(ice.Commands{ "/download": {Name: "/download", Help: "下载", Hand: func(m *ice.Message, arg ...string) { if len(arg) == 0 || arg[0] == "" { - m.Cmdy(chat.FILES).Table() + m.Cmdy("web.chat.files").Table() return // 文件列表 } // 下载文件 - m.Cmdy(web.CACHE, m.Cmd(chat.FILES, arg[0]).Append(mdb.DATA)) + m.Cmdy(web.CACHE, m.Cmd("web.chat.files", arg[0]).Append(mdb.DATA)) m.Render(kit.Select(ice.RENDER_DOWNLOAD, ice.RENDER_RESULT, m.Append(nfs.FILE) == ""), m.Append(mdb.TEXT)) }}, "/upload": {Name: "/upload", Help: "上传", Hand: func(m *ice.Message, arg ...string) { - msg := m.Cmd(chat.FILES, web.UPLOAD) // 上传文件 + msg := m.Cmd("web.chat.files", web.UPLOAD) // 上传文件 for _, k := range []string{mdb.DATA, mdb.TIME, mdb.TYPE, mdb.NAME, nfs.SIZE} { m.Echo("%s: %s\n", k, msg.Append(k)) } diff --git a/misc/bash/favor.go b/misc/bash/favor.go index 352cf234..f9ee76a0 100644 --- a/misc/bash/favor.go +++ b/misc/bash/favor.go @@ -21,9 +21,7 @@ func init() { } }) }}, - }, Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(FAVOR).Table() - }}, + }, Hand: func(m *ice.Message, arg ...string) { m.Cmdy(FAVOR).Table() }}, FAVOR: {Name: "favor zone id auto", Help: "收藏夹", Actions: ice.MergeActions(ice.Actions{ mdb.INSERT: {Name: "insert zone=系统命令 type=shell name=1 text=pwd pwd=/home", Help: "添加"}, cli.SYSTEM: {Name: "system", Help: "命令", Hand: func(m *ice.Message, arg ...string) { diff --git a/misc/bash/grant.go b/misc/bash/grant.go index defd2a59..5e82d230 100644 --- a/misc/bash/grant.go +++ b/misc/bash/grant.go @@ -3,32 +3,26 @@ package bash import ( ice "shylinux.com/x/icebergs" "shylinux.com/x/icebergs/base/mdb" + kit "shylinux.com/x/toolkits" ) const GRANT = "grant" func init() { Index.MergeCommands(ice.Commands{ - "grant": {Name: "grant hash auto", Help: "授权", Actions: ice.MergeActions(ice.Actions{ + GRANT: {Name: "grant hash auto", Help: "授权", Actions: ice.MergeActions(ice.Actions{ "confirm": {Name: "confirm", Help: "同意", Hand: func(m *ice.Message, arg ...string) { - m.Cmd(SESS, mdb.MODIFY, GRANT, m.Option(ice.MSG_USERNAME), ice.Option{mdb.HASH, m.Option("hash")}) + m.Cmd(SESS, mdb.MODIFY, GRANT, m.Option(ice.MSG_USERNAME)) }}, - "revert": {Name: "confirm", Help: "撤销", Hand: func(m *ice.Message, arg ...string) { - m.Cmd(SESS, mdb.MODIFY, GRANT, "", ice.Option{mdb.HASH, m.Option("hash")}) - }}, - "remove": {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) { - m.Cmd(SESS, mdb.REMOVE, mdb.HASH, m.Option(mdb.HASH)) + "revert": {Name: "revert", Help: "撤销", Hand: func(m *ice.Message, arg ...string) { + m.Cmd(SESS, mdb.MODIFY, GRANT, "") }}, }, mdb.HashAction()), Hand: func(m *ice.Message, arg ...string) { - if m.Cmdy(SESS, arg); len(arg) > 0 && m.Append("grant") == "" { - m.Process("_confirm", "授权设备") + if m.Cmdy(SESS, arg); len(arg) > 0 && m.Append(GRANT) == "" { + m.ProcessConfirm("授权设备") } m.Tables(func(value ice.Maps) { - if value["grant"] == "" { - m.PushButton("confirm", mdb.REMOVE) - } else { - m.PushButton("revert", mdb.REMOVE) - } + m.PushButton(kit.Select("revert", "confirm", value[GRANT] == ""), mdb.REMOVE) }) }}, }) diff --git a/misc/bash/run.go b/misc/bash/run.go index 4fb46b6b..f2256278 100644 --- a/misc/bash/run.go +++ b/misc/bash/run.go @@ -13,12 +13,10 @@ import ( kit "shylinux.com/x/toolkits" ) -func _run_action(m *ice.Message, cmd *ice.Command, code string, arg ...string) { - m.Set(ice.MSG_RESULT) - m.Echo("#/bin/bash\n") +func _run_action(m *ice.Message, cmd *ice.Command, script string, arg ...string) { + m.SetResult().Echo("#/bin/bash\n") - list := []string{} - args := []string{} + list, args := []string{}, []string{} kit.Fetch(cmd.Meta["_trans"], func(k string, v string) { list = append(list, k) args = append(args, kit.Format(` %s)`, k)) @@ -39,6 +37,7 @@ ish_sys_dev_run_source() { done } `, kit.Join(list, ice.SP), arg[0], kit.Join(args, ice.NL)) + m.Echo(` ish_sys_dev_run_action() { select action in %s; do @@ -52,48 +51,41 @@ ish_sys_dev_run_action() { } `, kit.Join(list, ice.SP), arg[0], kit.Join(args, ice.NL)) - m.Echo(ice.NL) - m.Echo(`ish_sys_dev_run_command() { + m.Echo(` +ish_sys_dev_run_command() { ish_sys_dev_run %s "$@" } `, arg[0]) - m.Echo(ice.NL) - if code == "" { - m.Echo("cat $1") - } else { - m.Echo(code) - } - m.Echo(ice.NL) - m.Debug(m.Result()) + m.Echo(kit.Select("cat $1", script)) } const RUN = "run" func init() { Index.MergeCommands(ice.Commands{ - "/run/": {Name: "/run/", Help: "执行", Actions: ice.MergeActions(ice.Actions{ + "/run/": {Name: "/run/", Help: "执行", Actions: ice.Actions{ ctx.COMMAND: {Name: "command", Help: "命令", Hand: func(m *ice.Message, arg ...string) { m.Search(arg[0], func(_ *ice.Context, s *ice.Context, key string, cmd *ice.Command) { - if p := strings.ReplaceAll(kit.Select("/app/cat.sh", cmd.Meta["display"]), ".js", ".sh"); strings.HasPrefix(p, ice.PS+ice.REQUIRE) { + if p := strings.ReplaceAll(kit.Select("/app/cat.sh", cmd.Meta[ctx.DISPLAY]), ".js", ".sh"); strings.HasPrefix(p, ice.PS+ice.REQUIRE) { m.Cmdy(web.SPIDE, ice.DEV, web.SPIDE_RAW, p) } else { m.Cmdy(nfs.CAT, path.Join(ice.USR_INTSHELL, p)) } - if m.Result() == "" || m.Result(1) == ice.ErrNotFound { - m.Set(ice.MSG_RESULT) + if m.IsErrNotFound() { + m.SetResult() } _run_action(m, cmd, m.Result(), arg...) }) }}, ice.RUN: {Name: "run", Help: "执行", Hand: func(m *ice.Message, arg ...string) { - if aaa.Right(m, arg) && !ctx.PodCmd(m, arg) { + if !ctx.PodCmd(m, arg) && aaa.Right(m, arg) { m.Cmdy(arg) } if m.Result() == "" { m.Table() } }}, - }, ctx.CmdAction())}, + }}, }) } diff --git a/misc/bash/sess.go b/misc/bash/sess.go index b5e581d8..4e64db4f 100644 --- a/misc/bash/sess.go +++ b/misc/bash/sess.go @@ -42,6 +42,7 @@ func init() { m.Option(ice.MSG_USERNAME, msg.Append(GRANT)) m.Option(ice.MSG_USERROLE, aaa.UserRole(m, msg.Append(GRANT))) m.Option(tcp.HOSTNAME, msg.Append(tcp.HOSTNAME)) + m.Auth(aaa.USERROLE, m.Option(ice.MSG_USERROLE), aaa.USERNAME, m.Option(ice.MSG_USERNAME)) if arg[0] == "/run/" { return } @@ -52,23 +53,20 @@ func init() { }}, "/sess": {Name: "/sess", Help: "会话", Actions: ice.Actions{ aaa.LOGOUT: {Name: "logout", Help: "退出", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(SESS, mdb.MODIFY, mdb.STATUS, aaa.LOGOUT, ice.Option{mdb.HASH, m.Option(SID)}) + mdb.HashModify(m, mdb.HASH, m.Option(SID), mdb.STATUS, aaa.LOGOUT) }}, }, Hand: func(m *ice.Message, arg ...string) { if m.Option(SID) == "" { // 终端登录 - m.Option(SID, m.Cmdx(SESS, mdb.CREATE, mdb.STATUS, aaa.LOGIN, m.OptionSimple(aaa.USERNAME, tcp.HOSTNAME, cli.PID, cli.PWD))) + m.Option(SID, mdb.HashCreate(m, mdb.STATUS, aaa.LOGIN, m.OptionSimple(aaa.USERNAME, tcp.HOSTNAME, cli.PID, cli.PWD))) } else { // 更新状态 - m.Cmdy(SESS, mdb.MODIFY, mdb.STATUS, aaa.LOGIN, ice.Option{mdb.HASH, m.Option(SID)}) + mdb.HashModify(m, mdb.HASH, m.Option(SID), mdb.STATUS, aaa.LOGIN) + m.Echo(m.Option(SID)) } - m.Echo(m.Option(SID)) }}, SESS: {Name: "sess hash auto prunes", Help: "会话流", Actions: ice.MergeActions(ice.Actions{ mdb.PRUNES: {Name: "prunes", Help: "清理", Hand: func(m *ice.Message, arg ...string) { - m.OptionFields(m.Config(mdb.FIELD)) - m.Cmdy(mdb.PRUNES, m.PrefixKey(), "", mdb.HASH, mdb.STATUS, aaa.LOGOUT) + mdb.HashPrunesValue(m, mdb.STATUS, aaa.LOGOUT) }}, - }, mdb.HashAction(mdb.FIELD, "time,hash,status,username,hostname,pid,pwd,grant")), Hand: func(m *ice.Message, arg ...string) { - mdb.HashSelect(m, arg...) - }}, + }, mdb.HashAction(mdb.FIELD, "time,hash,status,username,hostname,pid,pwd,grant"))}, }) } diff --git a/misc/bash/trash.go b/misc/bash/trash.go index c0d38c8a..4c832d1a 100644 --- a/misc/bash/trash.go +++ b/misc/bash/trash.go @@ -3,11 +3,11 @@ package bash import ( ice "shylinux.com/x/icebergs" "shylinux.com/x/icebergs/base/aaa" - "shylinux.com/x/icebergs/base/cli" "shylinux.com/x/icebergs/base/ctx" "shylinux.com/x/icebergs/base/mdb" "shylinux.com/x/icebergs/base/nfs" "shylinux.com/x/icebergs/base/tcp" + "shylinux.com/x/icebergs/base/web" ) const ( @@ -18,22 +18,21 @@ const TRASH = "trash" func init() { Index.MergeCommands(ice.Commands{ - "/trash": {Name: "/trash", Help: "回收", Actions: ice.Actions{ - mdb.INSERT: {Name: "insert from to", Help: "添加", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(TRASH, mdb.INSERT, arg) - }}, - }}, TRASH: {Name: "TRASH hash path auto prunes", Help: "回收站", Actions: ice.MergeActions(ice.Actions{ mdb.INSERT: {Name: "insert from to", Help: "添加", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(mdb.INSERT, m.PrefixKey(), "", mdb.HASH, m.OptionSimple(aaa.USERNAME, tcp.HOSTNAME, nfs.SIZE, FROM, TO)) + mdb.HashCreate(m, m.OptionSimple(aaa.USERNAME, tcp.HOSTNAME, nfs.SIZE, FROM, TO)) }}, mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(cli.SYSTEM, "rm", "-rf", m.Option(TO)) - m.Cmdy(mdb.DELETE, m.PrefixKey(), "", mdb.HASH, m.OptionSimple(mdb.HASH)) + if !m.Warn(m.Option(TO) == "", ice.ErrNotValid, TO) { + mdb.HashRemove(m, m.OptionSimple(mdb.HASH)) + nfs.RemoveAll(m, m.Option(TO)) + } }}, mdb.REVERT: {Name: "revert", Help: "恢复", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(cli.SYSTEM, "mv", m.Option(TO), m.Option(FROM)) - m.Cmdy(mdb.DELETE, m.PrefixKey(), "", mdb.HASH, m.OptionSimple(mdb.HASH)) + if !m.Warn(m.Option(FROM) == "" && m.Option(TO) == "", ice.ErrNotValid, FROM, TO) { + nfs.Rename(m, m.Option(TO), m.Option(FROM)) + mdb.HashRemove(m, m.OptionSimple(mdb.HASH)) + } }}, mdb.PRUNES: {Name: "prunes before@date", Help: "清理", Hand: func(m *ice.Message, arg ...string) { mdb.HashPrunes(m, func(value ice.Maps) bool { @@ -46,9 +45,8 @@ func init() { ctx.ProcessCommand(m, nfs.CAT, []string{}, arg...) ctx.ProcessCommandOpt(m, arg, TO) }}, - }, mdb.HashAction(mdb.FIELD, "time,hash,username,hostname,size,from,to")), Hand: func(m *ice.Message, arg ...string) { - mdb.HashSelect(m, arg...) - m.PushAction(nfs.CAT, mdb.REVERT, mdb.REMOVE) + }, mdb.HashAction(mdb.FIELD, "time,hash,username,hostname,size,from,to"), web.ApiAction("/trash")), Hand: func(m *ice.Message, arg ...string) { + mdb.HashSelect(m, arg...).PushAction(nfs.CAT, mdb.REVERT, mdb.REMOVE) }}, }) } diff --git a/misc/vim/favor.go b/misc/vim/favor.go index 7726c90d..55793a9f 100644 --- a/misc/vim/favor.go +++ b/misc/vim/favor.go @@ -17,9 +17,7 @@ func init() { Index.MergeCommands(ice.Commands{ "/favor": {Name: "/favor", Help: "收藏", Actions: ice.Actions{ mdb.SELECT: {Name: "select", Help: "主题", Hand: func(m *ice.Message, arg ...string) { - m.Cmd(FAVOR, func(value ice.Maps) { - m.Echo(value[mdb.ZONE]).Echo(ice.NL) - }) + m.Cmd(FAVOR, func(value ice.Maps) { m.Echo(value[mdb.ZONE]).Echo(ice.NL) }) }}, mdb.INSERT: {Name: "insert", Help: "添加", Hand: func(m *ice.Message, arg ...string) { m.Cmd(FAVOR, mdb.INSERT) @@ -29,6 +27,7 @@ func init() { m.Echo("%v\n", m.Option(mdb.ZONE)).Echo("%v:%v:%v:(%v): %v\n", value[nfs.FILE], value[nfs.LINE], "1", value[mdb.NAME], value[mdb.TEXT]) }) + m.Debug("waht %v", m.Result()) }}, FAVOR: {Name: "favor zone id auto", Help: "收藏夹", Actions: ice.MergeActions(ice.Actions{ mdb.INSERT: {Name: "insert zone=数据结构 type name=hi text=hello file line", Help: "添加"}, @@ -36,9 +35,7 @@ func init() { p := path.Join(m.Option(cli.PWD), m.Option(nfs.FILE)) ctx.ProcessCommand(m, code.INNER, []string{path.Dir(p) + ice.PS, path.Base(p), m.Option(nfs.LINE)}, arg...) }}, - }, mdb.ZoneAction( - mdb.SHORT, mdb.ZONE, mdb.FIELD, "time,id,type,name,text,file,line,pwd", - )), Hand: func(m *ice.Message, arg ...string) { + }, mdb.ZoneAction(mdb.SHORT, mdb.ZONE, mdb.FIELD, "time,id,type,name,text,file,line,pwd")), Hand: func(m *ice.Message, arg ...string) { if mdb.ZoneSelect(m, arg...); len(arg) == 0 { m.Action(mdb.CREATE, mdb.EXPORT, mdb.IMPORT) } else { diff --git a/misc/vim/input.go b/misc/vim/input.go index c0d297a9..f665e462 100644 --- a/misc/vim/input.go +++ b/misc/vim/input.go @@ -5,7 +5,6 @@ import ( ice "shylinux.com/x/icebergs" "shylinux.com/x/icebergs/base/cli" - "shylinux.com/x/icebergs/base/ctx" "shylinux.com/x/icebergs/base/mdb" kit "shylinux.com/x/toolkits" ) @@ -15,15 +14,15 @@ const INPUT = "input" func init() { Index.MergeCommands(ice.Commands{ "/input": {Name: "/input", Help: "输入法", Hand: func(m *ice.Message, arg ...string) { - if m.Cmdy(TAGS, ctx.ACTION, INPUT, arg[0], m.Option("pre")); m.Length() > 0 { - m.Cmd(m.PrefixKey(), mdb.INSERT, kit.SimpleKV("", "tags", arg[0], m.Result())) + if m.Cmdy(TAGS, INPUT, arg[0], m.Option("pre")); m.Length() > 0 { + mdb.HashCreate(m, kit.SimpleKV("", TAGS, arg[0], m.Result())) return // 代码补全 } if arg[0] == ice.PT { return } - if m.Cmdy("web.code.input.wubi", ctx.ACTION, INPUT, arg[0]); m.Length() > 0 { - m.Cmd(m.PrefixKey(), mdb.INSERT, kit.SimpleKV("", "wubi", arg[0], m.Result())) + if m.Cmdy("web.code.input.wubi", INPUT, arg[0]); m.Length() > 0 { + mdb.HashCreate(m, kit.SimpleKV("", "wubi", arg[0], m.Result())) return // 五笔输入 } if arg[0] = strings.TrimSpace(arg[0]); strings.HasPrefix(arg[0], "ice") { @@ -31,10 +30,10 @@ func init() { if m.Cmdy(list[1:]); m.IsErrNotFound() { m.SetResult().Cmdy(cli.SYSTEM, list[1:]) } - if len(m.Resultv()) == 0 { + if m.Result() == "" { m.Table() } - m.Cmd(m.PrefixKey(), mdb.INSERT, kit.SimpleKV("", "cmds", strings.TrimSpace(strings.Join(list[1:], ice.SP)), m.Result())) + mdb.HashCreate(m, kit.SimpleKV("", "cmds", strings.TrimSpace(strings.Join(list[1:], ice.SP)), m.Result())) return // 本地命令 } }}, diff --git a/misc/vim/tags.go b/misc/vim/tags.go index 91977eb7..6698d6e3 100644 --- a/misc/vim/tags.go +++ b/misc/vim/tags.go @@ -48,6 +48,10 @@ func init() { TAGS: {Name: "tags zone id auto", Help: "索引", Actions: ice.MergeActions(ice.Actions{ "listTags": {Name: "listTags", Help: "索引", Hand: func(m *ice.Message, arg ...string) { kit.Fetch(kit.UnMarshal(m.Option(mdb.TEXT)), func(index int, value ice.Map) { + if value == nil { + return + } + m.Debug("what %v", value) m.Cmd(TAGS, mdb.INSERT, mdb.ZONE, value[mdb.ZONE], kit.Simple(value)) }) m.ProcessRefresh300ms() diff --git a/misc/vim/vim.go b/misc/vim/vim.go index bcdf6f64..7beb6037 100644 --- a/misc/vim/vim.go +++ b/misc/vim/vim.go @@ -1,39 +1,26 @@ package vim import ( - "path" - "strings" - ice "shylinux.com/x/icebergs" "shylinux.com/x/icebergs/base/cli" "shylinux.com/x/icebergs/base/nfs" "shylinux.com/x/icebergs/base/web" "shylinux.com/x/icebergs/core/code" - kit "shylinux.com/x/toolkits" ) -func _vim_pkg(m *ice.Message, url string) string { - p := path.Join(m.Conf(code.INSTALL, kit.Keym(nfs.PATH)), path.Base(url)) - return kit.Path(m.Conf(code.INSTALL, kit.Keym(nfs.PATH)), strings.Split(m.Cmdx(cli.SYSTEM, "sh", "-c", kit.Format("tar tf %s| head -n1", p)), "/")[0]) -} - const VIM = "vim" -var Index = &ice.Context{Name: VIM, Help: "编辑器", Configs: ice.Configs{ - VIM: {Name: VIM, Help: "编辑器", Value: kit.Data( - nfs.SOURCE, "http://mirrors.tencent.com/macports/distfiles/vim/vim-8.2.2681.tar.gz", - )}, -}, Commands: ice.Commands{ +var Index = &ice.Context{Name: VIM, Help: "编辑器", Commands: ice.Commands{ VIM: {Name: "vim path auto order build download", Help: "编辑器", Actions: ice.MergeActions(ice.Actions{ cli.BUILD: {Name: "build", Help: "构建", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(code.INSTALL, cli.BUILD, _vim_pkg(m, m.Config(nfs.SOURCE)), "--enable-multibyte=yes", + m.Cmdy(code.INSTALL, cli.BUILD, m.Config(nfs.SOURCE), "--enable-multibyte=yes", "--enable-pythoninterp=yes", "--enable-luainterp=yes", "--enable-cscope=yes") }}, cli.ORDER: {Name: "order", Help: "加载", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(code.INSTALL, cli.ORDER, _vim_pkg(m, m.Config(nfs.SOURCE)), "_install/bin") + m.Cmdy(code.INSTALL, cli.ORDER, m.Config(nfs.SOURCE), "_install/bin") }}, - }, code.InstallAction()), Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(code.INSTALL, nfs.SOURCE, _vim_pkg(m, m.Config(nfs.SOURCE)), arg) + }, code.InstallAction(nfs.SOURCE, "http://mirrors.tencent.com/macports/distfiles/vim/vim-8.2.2681.tar.gz")), Hand: func(m *ice.Message, arg ...string) { + m.Cmdy(code.INSTALL, nfs.SOURCE, m.Config(nfs.SOURCE), arg) }}, }}