1
0
mirror of https://shylinux.com/x/icebergs synced 2025-06-26 10:27:31 +08:00
This commit is contained in:
IT 老营长 @云轩领航-创始人 2024-05-16 08:19:24 +08:00
parent f359c438fc
commit 272c91f469
4 changed files with 64 additions and 179 deletions

View File

@ -295,7 +295,6 @@ const SPACE = "space"
func init() {
Index.MergeCommands(ice.Commands{
"m": {Help: "模块", Actions: ApiWhiteAction(), Hand: func(m *ice.Message, arg ...string) { m.Cmdy(nfs.REQUIRE_MODULES, arg) }},
"p": {Help: "资源", Actions: ApiWhiteAction(), Hand: func(m *ice.Message, arg ...string) {
if kit.IsIn(arg[0], ice.SRC, ice.USR) {
ShareLocalFile(m, arg...)
@ -303,8 +302,20 @@ func init() {
m.Cmdy(PP(ice.REQUIRE), arg)
}
}},
"s": {Help: "空间", Actions: ApiWhiteAction(), Hand: func(m *ice.Message, arg ...string) { m.Cmdy(CHAT_POD, arg) }},
"m": {Help: "模块", Actions: ApiWhiteAction(), Hand: func(m *ice.Message, arg ...string) {
p := path.Join(nfs.USR_MODULES, path.Join(arg...))
kit.If(!nfs.Exists(m, p), func() {
if kit.IsIn(m.Option(ice.MSG_USERROLE), aaa.TECH, aaa.ROOT) {
kit.If(!nfs.Exists(m, nfs.USR_PACKAGE), func() {
m.Cmd(nfs.SAVE, nfs.USR_PACKAGE, kit.Formats(kit.Dict(mdb.NAME, "usr", nfs.VERSION, "0.0.1")))
})
m.Cmd(cli.SYSTEM, "npm", "install", arg[0], kit.Dict(cli.CMD_DIR, ice.USR))
}
})
m.RenderDownload(p)
}},
"c": {Help: "命令", Actions: ApiWhiteAction(), Hand: func(m *ice.Message, arg ...string) { m.Cmdy(CHAT_CMD, arg) }},
"s": {Help: "空间", Actions: ApiWhiteAction(), Hand: func(m *ice.Message, arg ...string) { m.Cmdy(CHAT_POD, arg) }},
SPACE: {Name: "space name cmds auto", Help: "空间站", Actions: ice.MergeActions(ice.Actions{
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) {
cli.NodeInfo(m, ice.Info.Pathname, WORKER)

View File

@ -19,16 +19,7 @@ import (
func _inner_list(m *ice.Message, ext, file, dir string) {
file = kit.Split(file, "?")[0]
kit.If(aaa.Right(m, dir, file), func() {
m.Cmdy(nfs.CAT, path.Join(dir, file))
return
kit.If(nfs.IsSourceFile(m, ext), func() {
m.Cmdy(nfs.CAT, path.Join(dir, file))
}, func() {
_inner_show(m.RenderResult().SetResult(), ext, file, dir)
kit.If(m.Result() == "", func() { m.Cmdy(nfs.CAT, path.Join(dir, file)) })
})
})
kit.If(aaa.Right(m, dir, file), func() { m.Cmdy(nfs.CAT, path.Join(dir, file)) })
}
func _inner_show(m *ice.Message, ext, file, dir string) {
kit.If(aaa.Right(m, dir, file), func() { m.Cmdy(mdb.RENDER, ext, file, dir) })
@ -66,13 +57,6 @@ func _inner_line(m *ice.Message, file, text string) (string, int) {
return "", 0
}
const (
SPLIT = lex.SPLIT
SPACE = lex.SPACE
OPERATOR = lex.OPERATOR
PREFIX = lex.PREFIX
SUFFIX = lex.SUFFIX
)
const (
INCLUDE = "include"
COMMENT = "comment"
@ -90,8 +74,7 @@ const INNER = "inner"
func init() {
Index.MergeCommands(ice.Commands{
INNER: {Name: "inner path=src/ file=main.go line=1 auto", Help: "源代码", Role: aaa.VOID, Actions: ice.MergeActions(ice.Actions{
mdb.INPUTS: {Hand: func(m *ice.Message, arg ...string) { m.Cmdy(FAVOR, mdb.INPUTS, arg) }},
INNER: {Name: "inner path=src/ file=main.go line=1 auto", Help: "源代码", Role: aaa.VOID, Actions: ice.Actions{
mdb.PLUGIN: {Hand: func(m *ice.Message, arg ...string) {
if m.Cmdy(mdb.PLUGIN, arg); m.Result() == "" {
m.Cmdy(mdb.PLUGIN, m.Option(lex.PARSE, strings.ToLower(kit.Split(path.Base(arg[1]), nfs.PT)[0])), arg[1:])
@ -104,32 +87,22 @@ func init() {
NAVIGATE: {Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(NAVIGATE, kit.Ext(m.Option(mdb.FILE)), m.Option(nfs.FILE), m.Option(nfs.PATH))
}},
}), Hand: func(m *ice.Message, arg ...string) {
if kit.HasPrefix(arg[0], nfs.VOLCANOS, nfs.REQUIRE, nfs.P, ice.HTTP) {
if !kit.HasPrefix(arg[0], ice.HTTP) {
ls := nfs.SplitPath(m, arg[0])
m.Options(nfs.PATH, ls[0], nfs.FILE, ls[1])
}
REPOS: {Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(REPOS, ice.OptionFields(nfs.PATH)).Sort(nfs.PATH)
}},
}, Hand: func(m *ice.Message, arg ...string) {
if kit.HasPrefix(arg[0], nfs.P) {
ls := nfs.SplitPath(m, arg[0])
m.Echo(m.Cmdx(web.SPIDE, ice.OPS, web.SPIDE_RAW, http.MethodGet, arg[0]))
m.Options("mode", "simple", lex.PARSE, kit.Ext(kit.ParseURL(arg[0]).Path))
m.Options(nfs.PATH, ls[0], nfs.FILE, ls[1], "mode", "simple", lex.PARSE, kit.Ext(kit.ParseURL(arg[0]).Path))
ctx.DisplayLocal(m, "")
} else if arg[0] = strings.Split(arg[0], mdb.FS)[0]; !strings.HasSuffix(arg[0], nfs.PS) && len(arg) == 1 {
arg[1] = kit.Slice(strings.Split(arg[0], nfs.PS), -1)[0]
arg[0] = strings.TrimSuffix(arg[0], arg[1])
m.ProcessRewrite(nfs.PATH, arg[0], nfs.FILE, arg[1])
} else if len(arg) < 2 {
nfs.Dir(m, nfs.PATH)
} else if strings.Contains(arg[1], nfs.DF) {
ls := strings.Split(arg[1], nfs.DF)
m.ProcessRewrite(nfs.LINE, ls[0], nfs.FILE, ls[1])
} else {
arg[1] = strings.Split(arg[1], mdb.FS)[0]
_inner_list(m, kit.Ext(arg[1]), arg[1], arg[0])
m.Options(nfs.PATH, arg[0], nfs.FILE, arg[1], nfs.LINE, kit.Select("", arg, 2))
if ctx.DisplayLocal(m, ""); !strings.HasPrefix(arg[0], ice.USR_INSTALL) {
m.Option(REPOS, kit.Join(m.Cmd(REPOS, ice.OptionFields(nfs.PATH)).Sort(nfs.PATH).Appendv(nfs.PATH)))
}
m.StatusTime(mdb.TIME, ice.Info.Make.Time, nfs.FILE, arg[1], nfs.LINE, kit.Select("1", arg, 2))
m.Options(nfs.PATH, arg[0], nfs.FILE, arg[1], nfs.LINE, kit.Select("1", arg, 2))
ctx.DisplayLocal(m, "")
}
}},
})
@ -143,9 +116,7 @@ func PlugAction(arg ...ice.Any) ice.Actions {
cmd.List = ice.SplitCmd(cmd.Name, cmd.Actions)
}
}
kit.For([]string{mdb.PLUGIN, mdb.RENDER, mdb.ENGINE}, func(cmd string) {
m.Cmd(cmd, mdb.CREATE, m.CommandKey(), m.ShortKey())
})
kit.For([]string{mdb.PLUGIN, mdb.RENDER, mdb.ENGINE}, func(cmd string) { m.Cmd(cmd, mdb.CREATE, m.CommandKey(), m.ShortKey()) })
LoadPlug(m, m.CommandKey())
}},
mdb.PLUGIN: {Hand: func(m *ice.Message, arg ...string) { m.Echo(mdb.Config(m, PLUG)) }},
@ -164,24 +135,7 @@ func LoadPlug(m *ice.Message, lang ...string) {
for _, lang := range lang {
m.Conf(nfs.CAT, kit.Keym(nfs.SOURCE, kit.Ext(lang)), ice.TRUE)
mdb.Confm(m, lang, kit.Keym(PLUG, PREPARE), func(k string, v ice.Any) {
kit.For(kit.Simple(v), func(v string) { m.Conf(lang, kit.Keym(PLUG, KEYWORD, v), k) })
kit.For(kit.Simple(v), func(v string) { m.Conf(lang, kit.Keym(PLUG, "keyword", v), k) })
})
}
}
func TagsList(m *ice.Message, cmds ...string) {
for _, l := range strings.Split(m.Cmdx(cli.SYSTEM, kit.Default(cmds, CTAGS, "--excmd=number", "--sort=no", "-f", "-", path.Join(m.Option(nfs.PATH), m.Option(nfs.FILE)))), lex.NL) {
if strings.HasPrefix(l, "!_") {
continue
}
ls := strings.Split(l, lex.TB)
if len(ls) < 3 {
continue
}
switch ls[3] {
case "w", "m":
continue
}
m.PushRecord(kit.Dict(mdb.TYPE, ls[3], mdb.NAME, ls[0], nfs.LINE, strings.TrimSuffix(ls[2], ";\"")))
}
m.Sort(nfs.LINE)
}

View File

@ -31,8 +31,7 @@ func init() {
repos := map[string]string{}
m.Cmds(web.CODE_GIT_REPOS).Table(func(value ice.Maps) { repos[strings.Split(value[web.ORIGIN], "://")[1]] = value[nfs.VERSION] })
m.Cmd(web.CODE_MOD, mdb.RENDER, MOD, ice.GO_MOD, nfs.PWD).Table(func(value ice.Maps) { repos[value[REQUIRE]] = value[VERSION] })
m.Debug("what %v", kit.Formats(repos))
res := m.Cmdx(nfs.CAT, path.Join(nfs.USR_LOCAL_WORK, m.Option(SPACE), ice.GO_MOD), func(ls []string, text string) string {
res := m.Cmdx(nfs.CAT, path.Join(nfs.USR_LOCAL_WORK, m.Option(web.SPACE), ice.GO_MOD), func(ls []string, text string) string {
if len(ls) > 1 {
if v, ok := repos[ls[0]]; ok && !strings.Contains(v, "-") {
m.Debug("what %v %v => %v", ls[0], ls[1], v)
@ -41,12 +40,12 @@ func init() {
}
return text
})
m.Cmd(nfs.SAVE, path.Join(nfs.USR_LOCAL_WORK, m.Option(SPACE), ice.GO_MOD), res)
m.Cmd(SPACE, m.Option(SPACE), cli.SYSTEM, GO, MOD, "tidy")
m.Cmd(nfs.SAVE, path.Join(nfs.USR_LOCAL_WORK, m.Option(web.SPACE), ice.GO_MOD), res)
m.Cmd(web.SPACE, m.Option(web.SPACE), cli.SYSTEM, GO, MOD, "tidy")
}},
TAG: {Name: "tag version", Hand: func(m *ice.Message, arg ...string) {
m.Cmd(SPACE, m.Option(SPACE), cli.SYSTEM, GIT, TAG, m.Option(VERSION))
m.Cmd(SPACE, m.Option(SPACE), VIMER, COMPILE)
m.Cmd(web.SPACE, m.Option(web.SPACE), cli.SYSTEM, GIT, TAG, m.Option(VERSION))
m.Cmd(web.SPACE, m.Option(web.SPACE), VIMER, COMPILE)
m.Sleep3s()
}},
XTERM: {Hand: func(m *ice.Message, arg ...string) {

View File

@ -1,7 +1,6 @@
package code
import (
"os"
"path"
"strings"
@ -14,10 +13,7 @@ import (
"shylinux.com/x/icebergs/base/mdb"
"shylinux.com/x/icebergs/base/nfs"
"shylinux.com/x/icebergs/base/ssh"
"shylinux.com/x/icebergs/base/tcp"
"shylinux.com/x/icebergs/base/web"
"shylinux.com/x/icebergs/base/web/html"
"shylinux.com/x/icebergs/core/chat"
kit "shylinux.com/x/toolkits"
)
@ -41,6 +37,8 @@ func _vimer_make(m *ice.Message, dir string, msg *ice.Message) {
}
const (
MAIN_GO = "main.go"
MAIN_JS = "main.js"
DEMO_C = "demo.c"
DEMO_SH = "demo.sh"
DEMO_SHY = "demo.shy"
@ -49,43 +47,14 @@ const (
DEMO_JS = "demo.js"
DEMO_CSS = "demo.css"
DEMO_HTML = "demo.html"
MAIN_GO = "main.go"
MAIN_JS = "main.js"
VIMER_SAVE = "vimer.save"
)
const VIMER = "vimer"
func init() {
web.Index.MergeCommands(ice.Commands{ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { aaa.White(m, nfs.REQUIRE) }},
nfs.REQUIRE_SRC: {Hand: func(m *ice.Message, arg ...string) { web.ShareLocalFile(m, ice.SRC, path.Join(arg...)) }},
nfs.REQUIRE_USR: {Hand: func(m *ice.Message, arg ...string) { web.ShareLocalFile(m, ice.USR, path.Join(arg...)) }},
nfs.REQUIRE_MODULES: {Hand: func(m *ice.Message, arg ...string) {
p := path.Join(nfs.USR_MODULES, path.Join(arg...))
kit.If(!nfs.Exists(m, p), func() {
if kit.IsIn(m.Option(ice.MSG_USERROLE), aaa.TECH, aaa.ROOT) {
kit.If(!nfs.Exists(m, nfs.USR_PACKAGE), func() {
m.Cmd(nfs.SAVE, nfs.USR_PACKAGE, kit.Formats(kit.Dict(mdb.NAME, "usr", nfs.VERSION, "0.0.1")))
})
m.Cmd(cli.SYSTEM, "npm", INSTALL, arg[0], kit.Dict(cli.CMD_DIR, ice.USR))
}
})
m.RenderDownload(p)
}},
})
Index.MergeCommands(ice.Commands{
VIMER: {Name: "vimer path=src/ file=main.go line=1 list", Help: "编辑器", Icon: "vimer.png", Role: aaa.VOID, Meta: kit.Dict(
ctx.STYLE, INNER, ice.CTX_TRANS, kit.Dict(html.INPUT, kit.Dict(
cli.MAIN, "程序", "top", "顶域",
)),
), Actions: ice.MergeActions(ice.Actions{
mdb.SEARCH: {Hand: func(m *ice.Message, arg ...string) {
if mdb.IsSearchPreview(m, arg) {
kit.For([]string{ice.SRC_MAIN_SHY, ice.SRC_MAIN_SH, ice.SRC_MAIN_GO, ice.SRC_MAIN_JS}, func(p string) {
m.PushSearch(mdb.TYPE, nfs.FILE, mdb.NAME, path.Base(p), mdb.TEXT, p)
})
}
}},
VIMER: {Name: "vimer path=src/ file=main.go line=1 list", Help: "编辑器", Icon: "vimer.png", Role: aaa.VOID, Actions: ice.MergeActions(ice.Actions{
mdb.INPUTS: {Hand: func(m *ice.Message, arg ...string) {
switch m.Option(ctx.ACTION) {
case nfs.MODULE:
@ -100,8 +69,6 @@ func init() {
m.Push(nfs.PATH, path.Join(path.Dir(m.Option(nfs.FILE)), "trans.json"))
m.Option(nfs.DIR_REG, kit.ExtReg(SH, SHY, PY, JS, CSS, HTML))
nfs.DirDeepAll(m, nfs.SRC, nfs.PWD, nil, nfs.PATH)
case web.DREAM, XTERM, AUTOGEN:
m.Cmdy(m.Option(ctx.ACTION), mdb.INPUTS, arg)
default:
switch arg[0] {
case ice.CMD:
@ -128,8 +95,6 @@ func init() {
switch value[mdb.TYPE] {
case nfs.FILE:
push("", value[mdb.TEXT])
case tcp.GATEWAY:
push(web.SPACE, value[mdb.TEXT])
case web.LINK:
push(web.SPACE, value[mdb.TEXT])
case web.WORKER:
@ -140,69 +105,31 @@ func init() {
push(ctx.INDEX, value[mdb.TEXT])
case ssh.SHELL:
push(ssh.SHELL, value[mdb.TEXT])
case cli.OPENS:
push(cli.OPENS, value[mdb.TEXT])
}
})
for _, p := range kit.Split(kit.Select(m.Option(nfs.PATH), m.Option("paths"))) {
nfs.DirDeepAll(m.Spawn(), nfs.PWD, p, func(value ice.Maps) { push("", value[nfs.PATH]) }, nfs.PATH)
}
m.Cmd(ctx.COMMAND).Table(func(value ice.Maps) { push(ctx.INDEX, value[ctx.INDEX]) })
default:
m.Cmdy(INNER, mdb.INPUTS, arg)
}
}
}},
nfs.SAVE: {Hand: func(m *ice.Message, arg ...string) {
kit.If(m.Option(nfs.CONTENT) == "", func() { m.Option(nfs.CONTENT, m.Cmdx("", TEMPLATE)) })
m.Cmd(nfs.SAVE, path.Join(m.Option(nfs.PATH), m.Option(nfs.FILE)))
gdb.Event(m, VIMER_SAVE)
}},
nfs.TRASH: {Hand: func(m *ice.Message, arg ...string) { nfs.Trash(m, arg[0]) }},
nfs.MODULE: {Name: "module name*=hi help type*=Hash,Zone,Data,Code main*=main.go zone top", Help: "模块", Hand: func(m *ice.Message, arg ...string) {
nfs.MODULE: {Name: "module name*=hi help type*=Hash,Zone,Code main*=main.go zone top", Help: "模块", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(AUTOGEN, nfs.MODULE, arg)
}},
nfs.SCRIPT: {Name: "script file*", Help: "脚本", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(nfs.DEFS, path.Join(m.Option(nfs.PATH), m.Option(nfs.FILE)), m.Cmdx("", TEMPLATE))
}},
cli.OPENS: {Hand: func(m *ice.Message, arg ...string) { cli.Opens(m, arg...) }},
web.UPLOAD: {Hand: func(m *ice.Message, arg ...string) {
}},
mdb.RENAME: {Name: "rename to*", Hand: func(m *ice.Message, arg ...string) {
m.Cmd(nfs.MOVE, path.Join(m.Option(nfs.PATH), m.Option(nfs.TO)), path.Join(m.Option(nfs.PATH), m.Option(nfs.FILE)))
}},
cli.MAKE: {Hand: func(m *ice.Message, arg ...string) {
defer web.ToastProcess(m)()
web.PushStream(m)
m.Cmd(cli.SYSTEM, "echo")
m.Cmd(cli.SYSTEM, "date")
m.Cmd(cli.SYSTEM, cli.MAKE, m.Option(nfs.TARGET), kit.Dict(cli.CMD_DIR, m.Option(nfs.PATH)))
nfs.TRASH: {Hand: func(m *ice.Message, arg ...string) {
nfs.Trash(m, arg[0])
}},
ice.APP: {Help: "本机", Hand: func(m *ice.Message, arg ...string) {
cli.OpenCmds(m, "cd "+kit.Path(""), "vim "+path.Join(arg[0], arg[1])+" +"+arg[2]).ProcessHold()
}},
COMPILE: {Help: "编译", Hand: func(m *ice.Message, arg ...string) {
if m.Option(nfs.PATH) != "" && nfs.ExistsFile(m, path.Join(m.Option(nfs.PATH), ice.MAKEFILE)) {
web.PushStream(m).Cmdy(cli.SYSTEM, cli.MAKE, kit.Dict(cli.CMD_DIR, m.Option(nfs.PATH)))
return
} else if m.Option(nfs.PATH) == ice.USR_VOLCANOS && strings.HasPrefix(m.Option(nfs.FILE), "publish/client/mp/") {
web.PushStream(m).Cmdy(cli.SYSTEM, cli.MAKE, kit.Dict(cli.CMD_DIR, path.Join(m.Option(nfs.PATH), "publish/client/mp/")))
return
}
const app, _app = "usr/publish/Contexts.app", "Contents/MacOS/Contexts"
isWebview := func() bool { return strings.HasSuffix(os.Args[0], _app) }
cmds := []string{COMPILE, ice.SRC_MAIN_GO, ice.BIN_ICE_BIN}
if isWebview() {
m.Option(cli.ENV, "CGO_ENABLED", "1", cli.HOME, kit.Env(cli.HOME), cli.PATH, kit.Path(ice.USR_LOCAL_GO_BIN)+nfs.DF+kit.Env(cli.PATH))
cmds = []string{COMPILE, ice.SRC_WEBVIEW_GO, path.Join(app, _app)}
}
if msg := m.Cmd(cmds); cli.IsSuccess(msg) {
if m.GoSleep30ms(func() { m.Cmd(UPGRADE, cli.RESTART) }); isWebview() {
m.Cmd(cli.DAEMON, ice.BIN_ICE_BIN, cli.FOREVER, cli.DELAY, cli.TIME_300ms, cli.SYSTEM, cli.OPEN, app)
}
} else {
_vimer_make(m, nfs.PWD, msg)
}
nfs.SAVE: {Hand: func(m *ice.Message, arg ...string) {
kit.If(m.Option(nfs.CONTENT) == "", func() { m.Option(nfs.CONTENT, m.Cmdx("", TEMPLATE)) })
m.Cmd(nfs.SAVE, path.Join(m.Option(nfs.PATH), m.Option(nfs.FILE)))
gdb.Event(m, VIMER_SAVE)
}},
TEMPLATE: {Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(TEMPLATE, kit.Ext(m.Option(mdb.FILE)), m.Option(nfs.FILE), m.Option(nfs.PATH))
@ -211,38 +138,32 @@ func init() {
return
m.Cmdy(COMPLETE, kit.Ext(m.Option(mdb.FILE)), m.Option(nfs.FILE), m.Option(nfs.PATH))
}},
chat.FAVOR_INPUTS: {Hand: func(m *ice.Message, arg ...string) {
switch arg[0] {
case mdb.TYPE:
m.Push(arg[0], nfs.FILE)
case mdb.TEXT:
kit.If(m.Option(mdb.TYPE) == nfs.FILE, func() { m.Push(arg[0], ice.SRC_MAIN_SHY, ice.SRC_MAIN_GO, ice.SRC_MAIN_JS) })
}
}},
chat.FAVOR_TABLES: {Hand: func(m *ice.Message, arg ...string) {
kit.If(m.Option(mdb.TYPE) == nfs.FILE, func() { m.PushButton(kit.Dict(m.CommandKey(), "源码")) })
}},
chat.FAVOR_ACTION: {Hand: func(m *ice.Message, arg ...string) {
kit.If(m.Option(mdb.TYPE) == nfs.FILE, func() { ctx.ProcessField(m, m.ShortKey(), nfs.SplitPath(m, m.Option(mdb.TEXT))) })
}},
web.DREAM_TABLES: {Hand: func(m *ice.Message, _ ...string) {
kit.If(m.IsDebug(), func() { m.PushButton(kit.Dict(m.CommandKey(), "编程")) })
}},
}, chat.FavorAction(), web.DreamTablesAction("编程"), ctx.ConfAction(ctx.TOOLS, "xterm,compile,runtime", web.ONLINE, ice.TRUE)), Hand: func(m *ice.Message, arg ...string) {
if m.Cmdy(INNER, arg); arg[0] != ctx.ACTION {
if len(arg) == 1 {
m.PushAction(nfs.SCRIPT, mdb.RENAME, web.UPLOAD, nfs.TRASH)
}
if web.IsLocalHost(m) {
m.Action(nfs.SAVE, COMPILE, mdb.SHOW, ice.APP)
} else if m.IsMobileUA() {
m.Action(nfs.SAVE, COMPILE)
COMPILE: {Hand: func(m *ice.Message, arg ...string) {
if msg := m.Cmd(COMPILE, ice.SRC_MAIN_GO, ice.BIN_ICE_BIN); cli.IsSuccess(msg) {
m.GoSleep30ms(func() { m.Cmd(UPGRADE, cli.RESTART) })
} else {
m.Action(nfs.SAVE, COMPILE, mdb.SHOW)
_vimer_make(m, nfs.PWD, msg)
}
ctx.DisplayLocal(m, "")
ctx.Toolkit(m)
}},
ice.APP: {Hand: func(m *ice.Message, arg ...string) {
cli.OpenCmds(m, "cd "+kit.Path(""), "vim "+path.Join(arg[0], arg[1])+" +"+arg[2]).ProcessHold()
}},
}, web.DreamTablesAction("编程"), ctx.ConfAction(ctx.TOOLS, "xterm,compile,runtime", web.ONLINE, ice.TRUE)), Hand: func(m *ice.Message, arg ...string) {
if m.Cmdy(INNER, arg); arg[0] == ctx.ACTION {
return
} else if len(arg) == 1 {
m.PushAction(mdb.CREATE, mdb.RENAME, nfs.TRASH)
return
}
if m.IsMobileUA() {
m.Action(nfs.SAVE, COMPILE)
} else if web.IsLocalHost(m) {
m.Action(nfs.SAVE, COMPILE, mdb.SHOW, ice.APP)
} else {
m.Action(nfs.SAVE, COMPILE, mdb.SHOW)
}
ctx.DisplayLocal(m, "")
ctx.Toolkit(m)
}},
})
}