diff --git a/base/cli/runtime.go b/base/cli/runtime.go index 335999af..52799a6e 100644 --- a/base/cli/runtime.go +++ b/base/cli/runtime.go @@ -149,6 +149,7 @@ const ( CTX_OPS = "ctx_ops" CTX_POD = "ctx_pod" CTX_ARG = "ctx_arg" + CTX_ENV = "ctx_env" CTX_PID = "ctx_pid" CTX_LOG = "ctx_log" diff --git a/base/ctx/process.go b/base/ctx/process.go index c025ae3f..e92d73b4 100644 --- a/base/ctx/process.go +++ b/base/ctx/process.go @@ -48,8 +48,8 @@ func ProcessFloat(m *ice.Message, arg ...string) { func ProcessHold(m *ice.Message, text ...ice.Any) { m.Process(ice.PROCESS_HOLD, text...) } -func ProcessRefresh(m *ice.Message) { - m.ProcessRefresh("300ms") +func ProcessRefresh(m *ice.Message, arg ...string) { + m.ProcessRefresh(kit.Select("300ms", arg, 0)) } func ProcessRewrite(m *ice.Message, arg ...ice.Any) { m.ProcessRewrite(arg...) diff --git a/base/web/dream.go b/base/web/dream.go index 0db02ce0..58646b93 100644 --- a/base/web/dream.go +++ b/base/web/dream.go @@ -21,7 +21,7 @@ func _dream_list(m *ice.Message) *ice.Message { if dream, ok := list[value[mdb.NAME]]; ok { m.Push(mdb.TYPE, dream[mdb.TYPE]) m.Push(cli.STATUS, cli.START) - m.PushButton(cli.OPEN, "vimer", "xterm", cli.STOP) + m.PushButton(cli.OPEN, "xterm", "vimer", cli.STOP) m.PushAnchor(strings.Split(MergePod(m, value[mdb.NAME]), "?")[0]) text := []string{} for _, line := range kit.Split(m.Cmdx(SPACE, value[mdb.NAME], cli.SYSTEM, "git", "diff", "--shortstat"), ice.FS, ice.FS) { @@ -87,7 +87,6 @@ func _dream_show(m *ice.Message, name string) { } } } - m.Cmd(nfs.DEFS, path.Join(p, ice.ETC_MISS_SH), m.Config(nfs.SCRIPT)) // 环境变量 m.Optionv(cli.CMD_DIR, kit.Path(p)) @@ -119,7 +118,6 @@ const DREAM = "dream" func init() { Index.MergeCommands(ice.Commands{ DREAM: {Name: "dream name path auto create", Help: "梦想家", Actions: ice.MergeActions(ice.Actions{ - ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { m.Config(nfs.SCRIPT, _dream_script) }}, mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) { switch arg[0] { case nfs.REPOS: @@ -137,19 +135,20 @@ func init() { cli.START: {Name: "start", Help: "启动", Hand: func(m *ice.Message, arg ...string) { _dream_show(m, m.Option(mdb.NAME)) }}, - cli.OPEN: {Name: "open", Help: "打开", Hand: func(m *ice.Message, arg ...string) { - ProcessWebsite(m, m.Option(mdb.NAME), "", "", "") + cli.OPEN: {Name: "open", Help: "系统", Hand: func(m *ice.Message, arg ...string) { + m.ProcessOpen(MergePod(m, m.Option(mdb.NAME), "", "")) }}, - "vimer": {Name: "vimer", Help: "编辑", Hand: func(m *ice.Message, arg ...string) { + "xterm": {Name: "xterm", Help: "终端", Hand: func(m *ice.Message, arg ...string) { + ProcessWebsite(m, m.Option(mdb.NAME), "web.code.xterm", mdb.HASH, + m.Cmdx(SPACE, m.Option(mdb.NAME), "web.code.xterm", mdb.CREATE, mdb.TYPE, nfs.SH, m.OptionSimple(mdb.NAME), mdb.TEXT, "")) + }}, + "vimer": {Name: "vimer", Help: "编程", Hand: func(m *ice.Message, arg ...string) { ProcessWebsite(m, m.Option(mdb.NAME), "web.code.vimer", "", "") }}, - "xterm": {Name: "xterm", Help: "命令", Hand: func(m *ice.Message, arg ...string) { - ProcessWebsite(m, m.Option(mdb.NAME), "web.code.xterm", mdb.HASH, m.Cmdx(SPACE, m.Option(mdb.NAME), "web.code.xterm", mdb.CREATE, mdb.TYPE, nfs.SH, mdb.NAME, "xterm")) - }}, cli.STOP: {Name: "stop", Help: "停止", Hand: func(m *ice.Message, arg ...string) { m.Cmd(SPACE, mdb.MODIFY, m.OptionSimple(mdb.NAME), mdb.STATUS, cli.STOP) m.Go(func() { m.Cmd(SPACE, m.Option(mdb.NAME), ice.EXIT) }) - m.Sleep3s() + ctx.ProcessRefresh(m, "1s") }}, DREAM_STOP: {Name: "dream.stop type name", Help: "停止", Hand: func(m *ice.Message, arg ...string) { if m.CmdAppend(SPACE, m.Option(mdb.NAME), mdb.STATUS) == cli.STOP { @@ -161,9 +160,9 @@ func init() { }}, nfs.TRASH: {Name: "trash", Help: "删除", Hand: func(m *ice.Message, arg ...string) { m.Cmd(nfs.TRASH, mdb.CREATE, path.Join(ice.USR_LOCAL_WORK, m.Option(mdb.NAME))) - m.ProcessRefresh30ms() + ctx.ProcessRefresh(m) }}, - }, mdb.HashAction(nfs.SCRIPT, _dream_script)), Hand: func(m *ice.Message, arg ...string) { + }, mdb.HashAction()), Hand: func(m *ice.Message, arg ...string) { if len(arg) == 0 { if _dream_list(m); !m.IsMobileUA() { ctx.DisplayTableCard(m) @@ -174,17 +173,3 @@ func init() { }}, }) } - -var _dream_script = `#! /bin/sh - -if [ -f $PWD/.ish/plug.sh ]; then source $PWD/.ish/plug.sh; elif [ -f $HOME/.ish/plug.sh ]; then source $HOME/.ish/plug.sh; else - ctx_temp=$(mktemp); if curl -h &>/dev/null; then curl -o $ctx_temp -fsSL https://shylinux.com; else wget -O $ctx_temp -q http://shylinux.com; fi; source $ctx_temp intshell -fi - -require miss.sh -ish_miss_prepare_compile -ish_miss_prepare_develop -ish_miss_prepare_operate - -ish_miss_make; if [ -n "$*" ]; then ish_miss_serve "$@"; fi -` diff --git a/base/web/option.go b/base/web/option.go index a1c23056..1a65cea0 100644 --- a/base/web/option.go +++ b/base/web/option.go @@ -7,6 +7,7 @@ import ( ice "shylinux.com/x/icebergs" "shylinux.com/x/icebergs/base/cli" + "shylinux.com/x/icebergs/base/ctx" "shylinux.com/x/icebergs/base/gdb" "shylinux.com/x/icebergs/base/mdb" "shylinux.com/x/icebergs/base/nfs" @@ -152,3 +153,9 @@ func MergePodCmd(m Message, pod, cmd string, arg ...ice.Any) string { func ProcessWebsite(m *ice.Message, pod, cmd string, arg ...ice.Any) { m.ProcessOpen(MergePodCmd(m, pod, cmd, arg...)) } +func ProcessIframe(m *ice.Message, link string, arg ...string) { + if len(arg) == 0 || arg[0] != ice.RUN { + arg = []string{m.Cmdx("web.chat.iframe", mdb.CREATE, mdb.LINK, link)} + } + ctx.ProcessField(m, "web.chat.iframe", arg, arg...) +} diff --git a/base/web/serve.go b/base/web/serve.go index 84975971..2d48ac25 100644 --- a/base/web/serve.go +++ b/base/web/serve.go @@ -353,7 +353,9 @@ func init() { ssh.SOURCE_STDIO: {Name: "source.stdio", Help: "终端", Hand: func(m *ice.Message, arg ...string) { m.Go(func() { m.Sleep("2s") - m.Cmd(ssh.PRINTF, kit.Dict(nfs.CONTENT, ice.Render(m, ice.RENDER_QRCODE, m.Cmdx(SPACE, DOMAIN))+ice.NL)) + url := m.Cmdx(SPACE, DOMAIN) + url2 := kit.MergePOD(m.Cmd(SPIDE, ice.DEV).Append(CLIENT_URL), ice.Info.NodeName) + m.Cmd(ssh.PRINTF, kit.Dict(nfs.CONTENT, ice.Render(m, ice.RENDER_QRCODE, url)+ice.NL+kit.Select("", url2+ice.NL, url != url2))) }) }}, DOMAIN: {Name: "domain", Help: "域名", Hand: func(m *ice.Message, arg ...string) { diff --git a/base/web/space.go b/base/web/space.go index ba67d635..cb8a3d6c 100644 --- a/base/web/space.go +++ b/base/web/space.go @@ -10,6 +10,7 @@ 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/gdb" "shylinux.com/x/icebergs/base/mdb" "shylinux.com/x/icebergs/base/nfs" @@ -154,7 +155,7 @@ func _space_echo(msg *ice.Message, source, target []string, c *websocket.Conn, n msg.Optionv(ice.MSG_SOURCE, source) msg.Optionv(ice.MSG_TARGET, target) if e := c.WriteMessage(1, []byte(msg.FormatMeta())); msg.Warn(e) { // 回复失败 - mdb.HashRemove(msg, mdb.NAME, name) + msg.Go(func() { mdb.HashRemove(msg, mdb.NAME, name) }) c.Close() return } @@ -349,15 +350,20 @@ func init() { m.StatusTimeCount("nCPU", ncpu, "nmem", kit.Format("%.2fG", nmem/1000.0)) m.Debug("what %v", m.FormatMeta()) }}, - cli.OPEN: {Name: "open", Help: "打开", Hand: func(m *ice.Message, arg ...string) { - m.ProcessOpen(MergePod(m, m.Option(mdb.NAME), "", "")) + cli.OPEN: {Name: "open", Help: "系统", Hand: func(m *ice.Message, arg ...string) { + ProcessIframe(m, MergePod(m, m.Option(mdb.NAME), "", ""), arg...) }}, - "vimer": {Name: "vimer", Help: "编辑", Hand: func(m *ice.Message, arg ...string) { - m.ProcessOpen(MergePod(m, m.Option(mdb.NAME)+"/cmd/web.code.vimer", "", "")) + "xterm": {Name: "xterm", Help: "终端", Hand: func(m *ice.Message, arg ...string) { + ProcessIframe(m, MergePodCmd(m, m.Option(mdb.NAME), "web.code.xterm", mdb.HASH, + m.Cmdx(SPACE, m.Option(mdb.NAME), "web.code.xterm", mdb.CREATE, mdb.TYPE, nfs.SH, m.OptionSimple(mdb.NAME), mdb.TEXT, "")), arg...) }}, - "xterm": {Name: "xterm", Help: "命令", Hand: func(m *ice.Message, arg ...string) { - m.ProcessOpen(MergePod(m, m.Option(mdb.NAME)+"/cmd/web.code.xterm", mdb.HASH, - m.Cmdx(SPACE, m.Option(mdb.NAME), "web.code.xterm", mdb.CREATE, mdb.TYPE, nfs.SH, mdb.NAME, "xterm"))) + "vimer": {Name: "vimer", Help: "编程", Hand: func(m *ice.Message, arg ...string) { + ProcessIframe(m, MergePodCmd(m, m.Option(mdb.NAME), "web.code.vimer", "", ""), arg...) + }}, + "exit": {Name: "exit", Help: "关闭", Hand: func(m *ice.Message, arg ...string) { + m.Cmd("", m.Option(mdb.NAME), "close") + m.Cmd("", m.Option(mdb.NAME), "exit") + ctx.ProcessRefresh(m) }}, }, mdb.HashCloseAction()), Hand: func(m *ice.Message, arg ...string) { if len(arg) < 2 { // 节点列表 @@ -365,7 +371,13 @@ func init() { m.Tables(func(value ice.Maps) { switch value[mdb.TYPE] { case SERVER, WORKER: - m.PushButton(cli.OPEN, "vimer", "xterm") + m.PushButton(cli.OPEN, "xterm", "vimer") + case CHROME: + if value[mdb.NAME] == kit.Select("", kit.Split(m.Option(ice.MSG_DAEMON), ice.PT), 0) { + m.PushButton("") + } else { + m.PushButton("exit") + } default: m.PushButton("") } diff --git a/core/chat/iframe.go b/core/chat/iframe.go new file mode 100644 index 00000000..54f52ccf --- /dev/null +++ b/core/chat/iframe.go @@ -0,0 +1,26 @@ +package chat + +import ( + ice "shylinux.com/x/icebergs" + "shylinux.com/x/icebergs/base/cli" + "shylinux.com/x/icebergs/base/ctx" + "shylinux.com/x/icebergs/base/mdb" +) + +const IFRAME = "iframe" + +func init() { + Index.MergeCommands(ice.Commands{ + IFRAME: {Name: "iframe hash auto", Help: "网页", Actions: ice.MergeActions(ice.Actions{ + mdb.CREATE: {Name: "create link name type", Help: "创建"}, + }, mdb.HashAction(mdb.SHORT, mdb.LINK, mdb.FIELD, "time,hash,type,name,link")), Hand: func(m *ice.Message, arg ...string) { + if mdb.HashSelect(m, arg...); len(arg) == 0 || arg[0] == "" { + m.Action(mdb.CREATE, mdb.PRUNES) + } else { + m.StatusTime(mdb.LINK, m.Append(mdb.LINK)) + m.Action(cli.OPEN) + ctx.DisplayLocal(m, "") + } + }}, + }) +} diff --git a/core/code/autogen.go b/core/code/autogen.go index 932f391c..b32bb0bc 100644 --- a/core/code/autogen.go +++ b/core/code/autogen.go @@ -128,7 +128,8 @@ func _autogen_version(m *ice.Message) { m.Cmd(cli.SYSTEM, GIT, "remote", "add", "origin", "https://"+mod) m.Cmd("web.code.git.repos", mdb.CREATE, "repos", "https://"+mod, mdb.NAME, path.Base(mod), nfs.PATH, nfs.PWD) m.Cmd(cli.SYSTEM, GIT, "add", ice.GO_MOD, ice.SRC, ice.ETC_MISS_SH) - m.Cmd(nfs.DEFS, ".gitignore", kit.Format(`src/binpack.go + m.Cmd(nfs.DEFS, ".gitignore", kit.Format(` +src/binpack.go src/version.go etc/ bin/ @@ -143,9 +144,7 @@ usr/ m.Cmd(nfs.SAVE, ice.SRC_VERSION_GO, kit.Format(`package main -import ( - ice "shylinux.com/x/icebergs" -) +import ice "shylinux.com/x/icebergs" func init() { ice.Info.Make = ice.MakeInfo{ @@ -167,8 +166,8 @@ func init() { mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) { switch arg[0] { case cli.MAIN: - m.Option(nfs.DIR_ROOT, ice.SRC) - m.Cmdy(nfs.DIR, nfs.PWD, nfs.DIR_CLI_FIELDS, kit.Dict(nfs.DIR_REG, `.*\.go`)).RenameAppend(nfs.PATH, arg[0]) + m.Option(nfs.DIR_ROOT, m.Option(nfs.PATH)) + m.Cmdy(nfs.DIR, nfs.PWD, nfs.DIR_CLI_FIELDS, kit.Dict(nfs.DIR_REG, `.*\.go$`)).RenameAppend(nfs.PATH, arg[0]) } }}, mdb.CREATE: {Name: "create name=hi help type=Zone,Hash,Data,Code main=main.go@key zone key", Help: "模块", Hand: func(m *ice.Message, arg ...string) { @@ -177,28 +176,25 @@ func init() { m.Option(mdb.TEXT, kit.Format("`name:\"%s\" help:\"%s\"`", _defs_list(m), m.Option(mdb.HELP))) nfs.OptionFiles(m, nfs.DiskFile) - if p := path.Join(ice.SRC, m.Option(mdb.ZONE), kit.Keys(m.Option(mdb.NAME), GO)); !nfs.ExistsFile(m, p) { + if p := path.Join(m.Option(nfs.PATH), m.Option(mdb.ZONE), kit.Keys(m.Option(mdb.NAME), GO)); !nfs.ExistsFile(m, p) { _autogen_module(m, p) - _autogen_import(m, path.Join(ice.SRC, m.Option(cli.MAIN)), m.Option(mdb.ZONE), _autogen_mod(m, ice.GO_MOD)) + _autogen_import(m, path.Join(m.Option(nfs.PATH), m.Option(cli.MAIN)), m.Option(mdb.ZONE), _autogen_mod(m, ice.GO_MOD)) } - if p := path.Join(ice.SRC, m.Option(mdb.ZONE), kit.Keys(m.Option(mdb.NAME), SHY)); !nfs.ExistsFile(m, p) { + if p := path.Join(m.Option(nfs.PATH), m.Option(mdb.ZONE), kit.Keys(m.Option(mdb.NAME), SHY)); !nfs.ExistsFile(m, p) { _autogen_script(m, p) - _autogen_source(m, path.Join(ice.SRC, m.Option(cli.MAIN)), p) + _autogen_source(m, path.Join(m.Option(nfs.PATH), m.Option(cli.MAIN)), p) } m.Option(nfs.FILE, path.Join(m.Option(mdb.ZONE), kit.Keys(m.Option(mdb.NAME), GO))) _autogen_version(m.Spawn()) }}, ssh.SCRIPT: {Name: "script", Help: "脚本:生成 etc/miss.sh", Hand: func(m *ice.Message, arg ...string) { - m.Cmd(nfs.DEFS, ice.ETC_MISS_SH, m.Conf(web.DREAM, kit.Keym(nfs.SCRIPT))) + m.Cmd(nfs.DEFS, ice.ETC_MISS_SH, _miss_script) defer m.Cmdy(nfs.CAT, ice.ETC_MISS_SH) m.Cmdy(nfs.DIR, ice.ETC_MISS_SH) m.Cmdy(nfs.DIR, ice.GO_MOD) m.Cmdy(nfs.DIR, ice.GO_SUM) }}, - nfs.TRASH: {Name: "trash", Help: "删除", Hand: func(m *ice.Message, arg ...string) { - m.Cmd(nfs.TRASH, path.Join(ice.SRC, m.Option(nfs.PATH))) - }}, BINPACK: {Name: "binpack", Help: "打包:生成 src/binpack.go", Hand: func(m *ice.Message, arg ...string) { _autogen_version(m) if m.Cmd(BINPACK, mdb.CREATE); nfs.ExistsFile(m, ice.USR_RELEASE) && m.Option(ice.MSG_USERPOD) == "" { @@ -207,7 +203,7 @@ func init() { m.Cmdy(nfs.DIR, "usr/release/binpack.go") m.Cmdy(nfs.DIR, "usr/release/conf.go") } - m.Cmdy(nfs.CAT, "src/version.go") + m.Cmdy(nfs.CAT, ice.SRC_VERSION_GO) }}, RELAY: {Name: "relay alias username host port list", Help: "跳板", Hand: func(m *ice.Message, arg ...string) { m.Cmd(COMPILE, RELAY) @@ -216,7 +212,21 @@ func init() { kit.Formats(kit.Dict(m.OptionSimple("username,host,port,list")))) }}, }, Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(nfs.CAT, kit.Select("version.go", arg, 0), kit.Dict(nfs.DIR_ROOT, ice.SRC)) + m.Cmdy(nfs.CAT, kit.Select(path.Base(ice.SRC_VERSION_GO), arg, 0), kit.Dict(nfs.DIR_ROOT, ice.SRC)) }}, }) } + +var _miss_script = `#! /bin/sh + +if [ -f $PWD/.ish/plug.sh ]; then source $PWD/.ish/plug.sh; elif [ -f $HOME/.ish/plug.sh ]; then source $HOME/.ish/plug.sh; else + ctx_temp=$(mktemp); if curl -h &>/dev/null; then curl -o $ctx_temp -fsSL https://shylinux.com; else wget -O $ctx_temp -q http://shylinux.com; fi; source $ctx_temp intshell +fi + +require miss.sh +ish_miss_prepare_compile +ish_miss_prepare_develop +ish_miss_prepare_operate + +ish_miss_make; if [ -n "$*" ]; then ish_miss_serve "$@"; fi +` diff --git a/core/code/binpack.go b/core/code/binpack.go index 94703b26..340a24ca 100644 --- a/core/code/binpack.go +++ b/core/code/binpack.go @@ -72,6 +72,7 @@ func _binpack_all(m *ice.Message) { import ( "encoding/base64" + ice "shylinux.com/x/icebergs" "shylinux.com/x/icebergs/base/nfs" ) @@ -129,7 +130,7 @@ func init() { } list[dir] = true - m.Cmd(nfs.DIR, dir, nfs.PATH, kit.Dict(nfs.DIR_ROOT, nfs.PWD, nfs.DIR_REG, ".*.(shy|js)")).Tables(func(value ice.Maps) { + m.Cmd(nfs.DIR, dir, nfs.PATH, kit.Dict(nfs.DIR_ROOT, nfs.PWD, nfs.DIR_REG, `.*\.(sh|shy|js)$`)).Tables(func(value ice.Maps) { if list[value[nfs.PATH]] { return } @@ -153,8 +154,6 @@ func init() { mdb.INSERT: {Name: "insert path", Help: "添加", Hand: func(m *ice.Message, arg ...string) { mdb.HashCreate(m, nfs.PATH, m.Option(nfs.PATH)) }}, - }, mdb.HashAction(mdb.SHORT, nfs.PATH)), Hand: func(m *ice.Message, arg ...string) { - mdb.HashSelect(m) - }}, + }, mdb.HashAction(mdb.SHORT, nfs.PATH))}, }) } diff --git a/core/code/c.go b/core/code/c.go index 2f402dc1..a0bd1cba 100644 --- a/core/code/c.go +++ b/core/code/c.go @@ -47,6 +47,11 @@ func init() { mdb.ENGINE: {Hand: func(m *ice.Message, arg ...string) { _c_exec(m, arg...) }}, NAVIGATE: {Hand: func(m *ice.Message, arg ...string) { _c_tags(m, MAN, "ctags", "-a", "-R", nfs.PWD) }}, }, PlugAction(), LangAction())}, + H: {Name: "c path auto", Help: "系统", Actions: ice.MergeActions(ice.Actions{ + mdb.RENDER: {Hand: func(m *ice.Message, arg ...string) { _c_show(m, arg...) }}, + mdb.ENGINE: {Hand: func(m *ice.Message, arg ...string) { _c_exec(m, arg...) }}, + NAVIGATE: {Hand: func(m *ice.Message, arg ...string) { _c_tags(m, MAN, "ctags", "-a", "-R", nfs.PWD) }}, + }, PlugAction(), LangAction())}, MAN: {Name: MAN, Help: "手册", Actions: ice.MergeActions(ice.Actions{ mdb.RENDER: {Hand: func(m *ice.Message, arg ...string) { if len(arg) == 1 { diff --git a/core/code/code.go b/core/code/code.go index f2b7bb01..b4174009 100644 --- a/core/code/code.go +++ b/core/code/code.go @@ -22,7 +22,7 @@ var Index = &ice.Context{Name: CODE, Help: "编程中心", Commands: ice.Command func init() { web.Index.Register(Index, &web.Frame{}, INSTALL, WEBPACK, BINPACK, AUTOGEN, COMPILE, PUBLISH, UPGRADE, - FAVOR, XTERM, INNER, VIMER, BENCH, PPROF, + FAVOR, XTERM, INNER, VIMER, PPROF, BENCH, C, SH, SHY, GO, JS, ) } diff --git a/core/code/code.shy b/core/code/code.shy index 781f4040..5b06d58a 100644 --- a/core/code/code.shy +++ b/core/code/code.shy @@ -1,8 +1,8 @@ chapter "源码" - code.go code.shy +section "开发流程" install.go webpack.go binpack.go @@ -11,20 +11,23 @@ compile.go publish.go upgrade.go -oauth.go +section "编程工具" favor.go xterm.go xterm.shy inner.go vimer.go -bench.go pprof.go +bench.go +oauth.go case.go +section "编程语言" c.go sh.go shy.go +zml.go +py.go go.go js.go -py.go -zml.go + diff --git a/core/code/compile.go b/core/code/compile.go index 48245d61..daecd1c8 100644 --- a/core/code/compile.go +++ b/core/code/compile.go @@ -2,19 +2,18 @@ package code import ( "path" + "runtime" ice "shylinux.com/x/icebergs" "shylinux.com/x/icebergs/base/cli" "shylinux.com/x/icebergs/base/mdb" "shylinux.com/x/icebergs/base/nfs" - "shylinux.com/x/icebergs/base/tcp" "shylinux.com/x/icebergs/base/web" kit "shylinux.com/x/toolkits" ) func _compile_target(m *ice.Message, arg ...string) (string, string, string, string) { - arch := m.Conf(cli.RUNTIME, kit.Keys(tcp.HOST, cli.GOARCH)) - goos := m.Conf(cli.RUNTIME, kit.Keys(tcp.HOST, cli.GOOS)) + arch, goos := runtime.GOARCH, runtime.GOOS main, file := ice.SRC_MAIN_GO, "" for _, k := range arg { switch k { @@ -43,8 +42,8 @@ const COMPILE = "compile" func init() { Index.Merge(&ice.Context{Configs: ice.Configs{ - COMPILE: {Name: COMPILE, Help: "编译", Value: kit.Data(nfs.PATH, ice.USR_PUBLISH, - cli.ENV, kit.Dict("GOPROXY", "https://goproxy.cn,direct", "GOPRIVATE", "shylinux.com,github.com", "CGO_ENABLED", "0"), + COMPILE: {Value: kit.Data(nfs.PATH, ice.USR_PUBLISH, + cli.ENV, kit.Dict("GOPRIVATE", "shylinux.com,github.com", "GOPROXY", "https://goproxy.cn,direct", "CGO_ENABLED", "0"), )}, }, Commands: ice.Commands{ COMPILE: {Name: "compile arch=amd64,386,arm,arm64,mipsle os=linux,darwin,windows src=src/main.go@key run binpack relay", Help: "编译", Actions: ice.Actions{ @@ -55,7 +54,7 @@ func init() { m.Cmdy(AUTOGEN, BINPACK) }}, RELAY: {Name: "relay", Help: "跳板", Hand: func(m *ice.Message, arg ...string) { - m.Cmd(COMPILE, ice.SRC_RELAY_GO, path.Join(ice.USR_PUBLISH, RELAY)) + m.Cmdy(COMPILE, ice.SRC_RELAY_GO, path.Join(ice.USR_PUBLISH, RELAY)) }}, }, Hand: func(m *ice.Message, arg ...string) { // 下载依赖 @@ -77,7 +76,7 @@ func init() { m.Cmdy(nfs.DIR, file, nfs.DIR_WEB_FIELDS) m.Cmdy(PUBLISH, ice.CONTEXTS) m.StatusTimeCount() - m.Option(ice.MSG_PROCESS, "") + m.Process("") }}, }}) } diff --git a/core/code/favor.go b/core/code/favor.go index 54822c13..3d84cae1 100644 --- a/core/code/favor.go +++ b/core/code/favor.go @@ -17,7 +17,7 @@ func init() { INNER: {Name: "inner", Help: "源码", Hand: func(m *ice.Message, arg ...string) { ctx.Process(m, m.ActionKey(), m.OptionSplit(nfs.PATH, nfs.FILE, nfs.LINE), arg...) }}, - XTERM: {Name: "xterm", Help: "命令", Hand: func(m *ice.Message, arg ...string) { + XTERM: {Name: "xterm", Help: "终端", Hand: func(m *ice.Message, arg ...string) { ctx.Process(m, m.ActionKey(), m.OptionSimple(mdb.TYPE, mdb.NAME, mdb.TEXT), arg...) }}, }, mdb.ZoneAction(mdb.SHORT, mdb.ZONE, mdb.FIELD, "time,id,type,name,text,path,file,line")), Hand: func(m *ice.Message, arg ...string) { diff --git a/core/code/go.go b/core/code/go.go index 4b682619..47a9466a 100644 --- a/core/code/go.go +++ b/core/code/go.go @@ -135,7 +135,7 @@ const SUM = "sum" func init() { Index.MergeCommands(ice.Commands{ - GO: {Name: "go", Help: "后端", Actions: ice.MergeActions(ice.Actions{ + GO: {Name: "go path auto", Help: "后端", Actions: ice.MergeActions(ice.Actions{ ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { m.Cmd(NAVIGATE, mdb.CREATE, GODOC, m.PrefixKey()) }}, diff --git a/core/code/install.go b/core/code/install.go index 8e0a093f..882918c7 100644 --- a/core/code/install.go +++ b/core/code/install.go @@ -80,12 +80,12 @@ func _install_build(m *ice.Message, arg ...string) string { // 编译 if msg := m.Cmd(cli.SYSTEM, cli.MAKE, "-j8"); !cli.IsSuccess(msg) { - return msg.Append(cli.CMD_ERR) + return msg.Append(cli.CMD_ERR) + msg.Append(cli.CMD_OUT) } // 安装 if msg := m.Cmd(cli.SYSTEM, cli.MAKE, "PREFIX="+pp, INSTALL); !cli.IsSuccess(msg) { - return msg.Append(cli.CMD_ERR) + return msg.Append(cli.CMD_ERR) + msg.Append(cli.CMD_OUT) } return "" } @@ -178,7 +178,10 @@ const INSTALL = "install" func init() { Index.MergeCommands(ice.Commands{ - INSTALL: {Name: "install name port path:text auto download", Help: "安装", Meta: kit.Dict(), Actions: ice.MergeActions(ice.Actions{ + INSTALL: {Name: "install name port path:text auto download", Help: "安装", Actions: ice.MergeActions(ice.Actions{ + nfs.PATH: {Name: "path", Help: "路径", Hand: func(m *ice.Message, arg ...string) { + m.Echo(_install_path(m, kit.Select("", arg, 0))) + }}, web.DOWNLOAD: {Name: "download link path", Help: "下载", Hand: func(m *ice.Message, arg ...string) { _install_download(m) }}, @@ -208,9 +211,6 @@ func init() { nfs.TRASH: {Name: "trash", Help: "删除", Hand: func(m *ice.Message, arg ...string) { _install_trash(m, arg...) }}, - nfs.PATH: {Name: "path", Help: "路径", Hand: func(m *ice.Message, arg ...string) { - m.Echo(_install_path(m, kit.Select("", arg, 0))) - }}, nfs.SOURCE: {Name: "source link path", Help: "源码", Hand: func(m *ice.Message, arg ...string) { if m.Option(nfs.DIR_ROOT, path.Join(_install_path(m, ""), _INSTALL)); !nfs.ExistsFile(m, m.Option(nfs.DIR_ROOT)) { m.Option(nfs.DIR_ROOT, path.Join(_install_path(m, ""))) diff --git a/core/code/oauth.go b/core/code/oauth.go index 96d27c76..37fac4b0 100644 --- a/core/code/oauth.go +++ b/core/code/oauth.go @@ -71,7 +71,7 @@ func init() { } } }}, - "/oauth": {Name: "/oauth", Help: "授权", Actions: ice.MergeActions(ice.Actions{}, ctx.CmdAction()), Hand: func(m *ice.Message, arg ...string) { + web.P(OAUTH): {Name: "/oauth", Help: "授权", Actions: ice.MergeActions(ice.Actions{}, ctx.CmdAction()), Hand: func(m *ice.Message, arg ...string) { if m.Warn(m.Option(CODE) == "", ice.ErrNotValid) { return } diff --git a/core/code/publish.go b/core/code/publish.go index 0da3eeee..15e2d0ec 100644 --- a/core/code/publish.go +++ b/core/code/publish.go @@ -42,13 +42,14 @@ func _publish_list(m *ice.Message, arg ...string) { } func _publish_bin_list(m *ice.Message, dir string) { p := m.Option(cli.CMD_DIR, dir) - for _, ls := range strings.Split(strings.TrimSpace(m.Cmd(cli.SYSTEM, "bash", "-c", "ls |xargs file |grep executable").Append(cli.CMD_OUT)), ice.NL) { + for _, ls := range strings.Split(strings.TrimSpace(m.Cmdx(cli.SYSTEM, "bash", "-c", "ls |xargs file |grep executable")), ice.NL) { if file := strings.TrimSpace(strings.Split(ls, ":")[0]); file != "" { if s, e := nfs.StatFile(m, path.Join(p, file)); e == nil { m.Push(mdb.TIME, s.ModTime()) m.Push(nfs.SIZE, kit.FmtSize(s.Size())) - m.Push(nfs.FILE, file) + m.Push(nfs.PATH, file) m.PushDownload(mdb.LINK, file, path.Join(p, file)) + m.PushButton(nfs.TRASH) } } } @@ -72,19 +73,19 @@ func init() { m.Config(ice.CONTEXTS, _contexts) }}, web.SERVE_START: {Name: "serve.start", Help: "服务启动", Hand: func(m *ice.Message, arg ...string) { - _publish_file(m, ice.ICE_BIN) + // _publish_file(m, ice.ICE_BIN) }}, ice.VOLCANOS: {Name: "volcanos", Help: "火山架", Hand: func(m *ice.Message, arg ...string) { defer func() { m.EchoQRCode(m.Option(ice.MSG_USERWEB)) }() - defer func() { m.Cmdy(PUBLISH, ice.CONTEXTS) }() + defer func() { m.Cmdy(PUBLISH, ice.CONTEXTS, ice.MISC) }() _publish_list(m, `.*\.(html|css|js)$`) }}, ice.ICEBERGS: {Name: "icebergs", Help: "冰山架", Hand: func(m *ice.Message, arg ...string) { - defer func() { m.Cmdy(PUBLISH, ice.CONTEXTS) }() + defer func() { m.Cmdy(PUBLISH, ice.CONTEXTS, ice.CORE) }() _publish_bin_list(m, ice.USR_PUBLISH) }}, ice.INTSHELL: {Name: "intshell", Help: "神农架", Hand: func(m *ice.Message, arg ...string) { - defer func() { m.Cmdy(PUBLISH, ice.CONTEXTS) }() + defer func() { m.Cmdy(PUBLISH, ice.CONTEXTS, ice.BASE) }() _publish_list(m, `.*\.(sh|vim|conf)$`) }}, ice.CONTEXTS: {Name: "contexts", Help: "环境", Hand: func(m *ice.Message, arg ...string) { @@ -93,11 +94,11 @@ func init() { if host == tcp.LOCALHOST { host = m.Cmd(tcp.HOST).Append(aaa.IP) } - m.Option("ctx_env", kit.Select("", " "+kit.JoinKV("=", " ", "ctx_pod", m.Option(ice.MSG_USERPOD)), m.Option(ice.MSG_USERPOD) != "")) + m.Option(cli.CTX_ENV, kit.Select("", " "+kit.JoinKV("=", " ", cli.CTX_POD, m.Option(ice.MSG_USERPOD)), m.Option(ice.MSG_USERPOD) != "")) m.Option("httphost", fmt.Sprintf("%s://%s:%s", u.Scheme, host, kit.Select(kit.Select("443", "80", u.Scheme == ice.HTTP), strings.Split(u.Host, ice.DF), 1))) if len(arg) == 0 { - arg = append(arg, ice.MISC, ice.CORE, ice.BASE) + arg = append(arg, ice.MISC) } for _, k := range arg { switch k { @@ -109,7 +110,7 @@ func init() { m.Cmd(nfs.LINK, bin, m.Cmdx(cli.RUNTIME, "boot.bin")) } - case ice.CORE: + case ice.CORE, ice.BASE: if !nfs.ExistsFile(m, ".git") { repos := web.MergeURL2(m, "/x/"+kit.Select(ice.Info.PathName, m.Option(ice.MSG_USERPOD))) m.Cmd(cli.SYSTEM, "git", "init") @@ -118,7 +119,6 @@ func init() { } m.Option("remote", kit.Select(ice.Info.Make.Remote, strings.TrimSpace(m.Cmdx(cli.SYSTEM, "git", "config", "remote.origin.url")))) m.Option("pathname", strings.TrimSuffix(path.Base(m.Option("remote")), ".git")) - case ice.BASE: } if buf, err := kit.Render(m.Config(kit.Keys(ice.CONTEXTS, k)), m); m.Assert(err) { m.EchoScript(strings.TrimSpace(string(buf))) diff --git a/core/code/py.go b/core/code/py.go index 721da83b..4555a7fb 100644 --- a/core/code/py.go +++ b/core/code/py.go @@ -7,10 +7,9 @@ import ( "shylinux.com/x/icebergs/base/cli" "shylinux.com/x/icebergs/base/mdb" "shylinux.com/x/icebergs/base/nfs" - kit "shylinux.com/x/toolkits" ) -func _py_main_script(m *ice.Message, arg ...string) { +func _py_exec(m *ice.Message, arg ...string) { const PYTHON2 = "python2" if _, e := nfs.DiskFile.StatFile(path.Join(arg[2], arg[1])); e == nil { @@ -19,64 +18,34 @@ func _py_main_script(m *ice.Message, arg ...string) { } else if b, e := nfs.ReadFile(m, path.Join(arg[2], arg[1])); e == nil { m.Cmdy(cli.SYSTEM, PYTHON2, "-c", string(b)) } + if m.StatusTime(); cli.IsSuccess(m) { m.SetAppend() } - m.Echo(ice.NL) } const PY = nfs.PY func init() { - Index.Merge(&ice.Context{Commands: ice.Commands{ + Index.MergeCommands(ice.Commands{ PY: {Name: "py path auto", Help: "脚本", Actions: ice.MergeActions(ice.Actions{ ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { m.Go(func() { - m.Sleep300ms() // after runtime init + m.Sleep300ms() cli.IsAlpine(m, "python", "python2") cli.IsAlpine(m, "python2") cli.IsAlpine(m, "python3") }) - m.Cmd(mdb.ENGINE, mdb.CREATE, PY, m.PrefixKey()) - m.Cmd(mdb.RENDER, mdb.CREATE, PY, m.PrefixKey()) - m.Cmd(TEMPLATE, mdb.CREATE, m.CommandKey(), m.PrefixKey()) - }}, - TEMPLATE: {Hand: func(m *ice.Message, arg ...string) { - if kit.Ext(m.Option(mdb.FILE)) != m.CommandKey() { - return - } - m.Echo(` -print "hello world" -`) - }}, - mdb.ENGINE: {Hand: func(m *ice.Message, arg ...string) { - _py_main_script(m, arg...) }}, mdb.RENDER: {Hand: func(m *ice.Message, arg ...string) { - _py_main_script(m, arg...) + // _py_exec(m, arg...) }}, - }, PlugAction()), Hand: func(m *ice.Message, arg ...string) { - if len(arg) > 0 && kit.Ext(arg[0]) == PY { - _py_main_script(m, PY, arg[0], ice.SRC) - return - } - m.Option(nfs.DIR_DEEP, ice.TRUE) - m.Option(nfs.DIR_ROOT, ice.SRC) - m.Option(nfs.DIR_REG, ".*.(py)$") - m.Cmdy(nfs.DIR, arg) - }}, - }, Configs: ice.Configs{ - PY: {Name: PY, Help: "脚本", Value: kit.Data(PLUG, kit.Dict( - SPLIT, kit.Dict(SPACE, " ", OPERATE, "{[(.,;!|<>)]}"), - PREFIX, kit.Dict("#!", COMMENT, "# ", COMMENT), SUFFIX, kit.Dict(" {", COMMENT), - PREPARE, kit.Dict( - KEYWORD, kit.Simple( - "import", "from", "return", - ), - FUNCTION, kit.Simple( - "print", - ), - ), KEYWORD, kit.Dict(), - ))}, - }}) + mdb.ENGINE: {Hand: func(m *ice.Message, arg ...string) { + _py_exec(m, arg...) + }}, + TEMPLATE: {Hand: func(m *ice.Message, arg ...string) { + m.Echo(`print "hello world"`) + }}, + }, PlugAction(), LangAction())}, + }) } diff --git a/core/code/template.go b/core/code/template.go deleted file mode 100644 index 365a632d..00000000 --- a/core/code/template.go +++ /dev/null @@ -1,87 +0,0 @@ -package code - -import ( - "path" - - ice "shylinux.com/x/icebergs" - "shylinux.com/x/icebergs/base/cli" - "shylinux.com/x/icebergs/base/mdb" - "shylinux.com/x/icebergs/base/nfs" - kit "shylinux.com/x/toolkits" -) - -// const TEMPLATE = "template" - -func init() { - return - Index.MergeCommands(ice.Commands{ - TEMPLATE: {Name: "template name auto", Help: "模板", Actions: ice.MergeActions(ice.Actions{ - ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { - for _, _template := range _template_list { - m.Cmd(TEMPLATE, mdb.CREATE, kit.SimpleKV(kit.Format(_template[0]), _template[1:]...)) - } - }}, - mdb.CREATE: {Name: "create type name text args", Help: "创建"}, - nfs.DEFS: {Name: "defs file=hi/hi.js", Help: "生成", Hand: func(m *ice.Message, arg ...string) { - m.Option("tags", "`"+m.Option("tags")+"`") - if buf, err := kit.Render(m.Option(mdb.TEXT), m); !m.Warn(err) { - switch m.Cmd(nfs.DEFS, path.Join(m.Option(nfs.PATH), m.Option(nfs.FILE)), string(buf)); kit.Ext(m.Option(nfs.FILE)) { - case GO: - if m.Option(cli.MAIN) != "" && m.Option(mdb.ZONE) != "" { - _autogen_import(m, path.Join(m.Option(nfs.PATH), m.Option(cli.MAIN)), m.Option(mdb.ZONE), _autogen_mod(m, ice.GO_MOD)) - } - default: - m.Cmdy(nfs.DEFS, path.Join(m.Option(nfs.PATH), m.Option(nfs.FILE)), m.Option(mdb.TEXT)) - } - } - }}, - }, mdb.HashAction(mdb.SHORT, mdb.NAME, mdb.FIELD, "time,type,name,text,args")), Hand: func(m *ice.Message, arg ...string) { - if mdb.HashSelect(m, arg...).Sort(mdb.NAME); len(arg) == 0 { - m.Cut("time,action,type,name,text,args") - m.Action(mdb.CREATE) - } - m.PushAction(nfs.DEFS, mdb.REMOVE) - }}, - }) -} - -var _template_list = [][]ice.Any{ - []ice.Any{"", "txt", "网站索引", ` -hi - hi - cli.qrcode - cli.system - cli.runtime - -`}, - []ice.Any{"", "js", "前端模块", `Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, cb, target) { - can.onmotion.clear(can) - can.onappend.table(can, msg) - can.onappend.board(can, msg) -}})`}, - []ice.Any{"", "go", "后端模块", `package {{.Option "zone"}} - -import ( - "shylinux.com/x/ice" -) - -type {{.Option "name"}} struct { - ice.{{.Option "type"}} - - list string {{.Option "tags"}} -} - -func (h {{.Option "name"}}) List(m *ice.Message, arg ...string) { - h.{{.Option "type"}}.List(m, arg...) -} - -func init() { ice.Cmd("{{.Option "key"}}", {{.Option "name"}}{}) } -`, "args", `[ - {"name": "zone", "value": "hi"}, - {"name": "name", "value": "hi"}, - {"name": "key", "value": "web.code.hi.hi"}, - {"name": "type", "values": "Hash,Zone,List"}, - {"name": "tags", "value": "name:\"list hash id auto insert\" help:\"数据\""}, - {"name": "main", "value": "main.go"} -]`}, -} diff --git a/core/code/vimer.go b/core/code/vimer.go index 4f00c1b0..07b78e20 100644 --- a/core/code/vimer.go +++ b/core/code/vimer.go @@ -62,6 +62,7 @@ func init() { m.Cmd(nfs.TRASH, arg[0]) }}, nfs.SCRIPT: {Name: "script file=hi/hi.js", Help: "脚本", Hand: func(m *ice.Message, arg ...string) { + m.Option(nfs.PATH, "src/") m.Cmdy(nfs.DEFS, path.Join(m.Option(nfs.PATH), m.Option(nfs.FILE)), m.Cmdx("", TEMPLATE)) }}, web.WEBSITE: {Name: "website file=hi.zml", Help: "网页", Hand: func(m *ice.Message, arg ...string) { @@ -109,7 +110,8 @@ func init() { web.ToastSuccess(m) m.ProcessInner() }}, - AUTOGEN: {Name: "create name=hi help=示例 type=Zone,Hash,Data,Code main=main.go zone key", Help: "模块", Hand: func(m *ice.Message, arg ...string) { + AUTOGEN: {Name: "create name=h2 help=示例 type=Zone,Hash,Data,Code main=main.go zone key", Help: "模块", Hand: func(m *ice.Message, arg ...string) { + m.Option(nfs.PATH, "src/") m.Cmdy(AUTOGEN, mdb.CREATE, arg) }}, COMPILE: {Name: "compile", Help: "编译", Hand: func(m *ice.Message, arg ...string) { diff --git a/core/code/webpack.go b/core/code/webpack.go index d01d6a36..e8652697 100644 --- a/core/code/webpack.go +++ b/core/code/webpack.go @@ -53,6 +53,7 @@ func _webpack_cache(m *ice.Message, dir string, write bool) { js, _, e := nfs.CreateFile(m, path.Join(dir, PAGE_CACHE_JS)) m.Assert(e) defer js.Close() + defer fmt.Fprintln(js, `_can_name = ""`) defer _webpack_can(m) if !write { @@ -71,6 +72,7 @@ func _webpack_cache(m *ice.Message, dir string, write bool) { }) } fmt.Fprintln(js) + for _, k := range []string{LIB, PANEL, PLUGIN} { m.Cmd(nfs.DIR, k).Sort(nfs.PATH).Tables(func(value ice.Maps) { if kit.Ext(value[nfs.PATH]) == JS { @@ -141,8 +143,8 @@ const ( const ( PAGE_INDEX_CSS = "page/index.css" PAGE_CACHE_CSS = "page/cache.css" - PAGE_CACHE_JS = "page/cache.js" PAGE_INDEX_JS = "page/index.js" + PAGE_CACHE_JS = "page/cache.js" PAGE_CAN_CSS = "page/can.css" PAGE_CAN_JS = "page/can.js" ) @@ -153,10 +155,10 @@ const WEBPACK = "webpack" func init() { Index.MergeCommands(ice.Commands{ WEBPACK: {Name: "webpack path auto create remove", Help: "打包", Actions: ice.MergeActions(ice.Actions{ - mdb.CREATE: {Name: "create", Help: "创建", Hand: func(m *ice.Message, arg ...string) { + mdb.CREATE: {Name: "create", Help: "发布", Hand: func(m *ice.Message, arg ...string) { _webpack_cache(m.Spawn(), _volcanos(m), true) }}, - mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) { + mdb.REMOVE: {Name: "remove", Help: "调试", Hand: func(m *ice.Message, arg ...string) { _webpack_cache(m.Spawn(), _volcanos(m), false) }}, mdb.INSERT: {Name: "insert path", Help: "添加", Hand: func(m *ice.Message, arg ...string) { diff --git a/core/code/xterm.go b/core/code/xterm.go index 3067a1c5..36eb02cb 100644 --- a/core/code/xterm.go +++ b/core/code/xterm.go @@ -100,7 +100,7 @@ func init() { _xterm_get(m, kit.Select("", arg, 0)).Write(m.Cmdx(PUBLISH, ice.CONTEXTS, INSTALL) + ice.NL) ctx.ProcessHold(m) }}, - web.WEBSITE: {Name: "website", Help: "打开", Hand: func(m *ice.Message, arg ...string) { + web.WEBSITE: {Name: "website", Help: "网页", Hand: func(m *ice.Message, arg ...string) { web.ProcessWebsite(m, "", "", m.OptionSimple(mdb.HASH)) }}, }, mdb.HashAction(mdb.FIELD, "time,hash,type,name,text,view", mdb.TOOLS, FAVOR), ctx.CmdAction(), ctx.ProcessAction()), Hand: func(m *ice.Message, arg ...string) { @@ -108,7 +108,7 @@ func init() { m.PushAction(web.WEBSITE, mdb.REMOVE) m.Action(mdb.CREATE, mdb.PRUNES) } else { - m.Action("波浪线", "反引号", "refresh", "full", INSTALL) + m.Action(INSTALL, "波浪线", "反引号") ctx.DisplayLocal(m, "") ctx.Toolkit(m) } diff --git a/core/code/zml.go b/core/code/zml.go index cc6b64f0..a7f785de 100644 --- a/core/code/zml.go +++ b/core/code/zml.go @@ -23,16 +23,9 @@ func init() { const ( SRC_WEBSITE = "src/website/" ) - Index.Register(&ice.Context{Name: ZML, Help: "网页", Commands: ice.Commands{ + Index.MergeCommands(ice.Commands{ ZML: {Name: "zml", Help: "网页", Actions: ice.MergeActions(ice.Actions{ - ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { - m.Cmd(mdb.RENDER, mdb.CREATE, nfs.ZML, m.PrefixKey()) - m.Cmd(mdb.ENGINE, mdb.CREATE, nfs.ZML, m.PrefixKey()) - m.Cmd(TEMPLATE, mdb.CREATE, m.CommandKey(), m.PrefixKey()) - m.Cmd(COMPLETE, mdb.CREATE, m.CommandKey(), m.PrefixKey()) - }}, - mdb.INPUTS: {Hand: func(m *ice.Message, arg ...string) { - }}, + mdb.INPUTS: {Hand: func(m *ice.Message, arg ...string) {}}, TEMPLATE: {Hand: func(m *ice.Message, arg ...string) { switch kit.Ext(m.Option(mdb.FILE)) { case ZML: @@ -76,7 +69,7 @@ func init() { if len(arg) > 0 && arg[0] == mdb.FOREACH { switch m.Option(ctx.ACTION) { case web.WEBSITE: - m.Cmdy(nfs.DIR, nfs.PWD, kit.Dict(nfs.DIR_ROOT, "src/website/"), nfs.PATH) + m.Cmdy(nfs.DIR, nfs.PWD, kit.Dict(nfs.DIR_ROOT, SRC_WEBSITE), nfs.PATH) } return } @@ -113,6 +106,6 @@ func init() { mdb.ENGINE: {Hand: func(m *ice.Message, arg ...string) { m.Echo(_website_url(m, strings.TrimPrefix(path.Join(arg[2], arg[1]), SRC_WEBSITE))) }}, - })}, - }}, nil) + }, PlugAction(), LangAction())}, + }) }