From 8e23a29c0a88bbe56146f3c1d5c72cb81723ab8c Mon Sep 17 00:00:00 2001 From: shylinux Date: Mon, 3 Jan 2022 22:58:53 +0800 Subject: [PATCH] add app --- base/mdb/engine.go | 4 +- base/mdb/hash.go | 6 +- base/mdb/mdb.go | 52 ++++----- base/mdb/plugin.go | 4 +- base/mdb/render.go | 4 +- base/mdb/search.go | 7 +- base/web/cache.go | 15 ++- base/web/render.go | 5 - base/web/share.go | 15 ++- base/web/story.go | 165 ++++++++++++++-------------- base/yac/yac.go | 4 +- core/chat/files.go | 2 +- core/code/install.go | 6 +- core/code/publish.go | 2 +- core/code/webpack.go | 2 +- exec.go | 4 +- misc/alpha/alpha.go | 10 +- misc/input/input.go | 20 ++-- misc/input/wubi.go | 4 +- misc/tmux/session.go | 3 +- misc/trash/docker/docker.go | 210 ------------------------------------ misc/trash/md/md.go | 72 ------------- misc/trash/md/md.js | 9 -- misc/trash/md/md.shy | 1 - misc/vim/vim.go | 4 +- 25 files changed, 159 insertions(+), 471 deletions(-) delete mode 100644 misc/trash/docker/docker.go delete mode 100644 misc/trash/md/md.go delete mode 100644 misc/trash/md/md.js delete mode 100644 misc/trash/md/md.shy diff --git a/base/mdb/engine.go b/base/mdb/engine.go index 46515907..15a2afd4 100644 --- a/base/mdb/engine.go +++ b/base/mdb/engine.go @@ -9,9 +9,7 @@ const ENGINE = "engine" func init() { Index.Merge(&ice.Context{Configs: map[string]*ice.Config{ - ENGINE: {Name: ENGINE, Help: "引擎", Value: kit.Data( - SHORT, TYPE, FIELD, "time,type,name,text", - )}, + ENGINE: {Name: ENGINE, Help: "引擎", Value: kit.Data(SHORT, TYPE, FIELD, "time,type,name,text")}, }, Commands: map[string]*ice.Command{ ENGINE: {Name: "engine type name text auto", Help: "引擎", Action: ice.MergeAction(map[string]*ice.Action{ CREATE: {Name: "create type name text", Help: "创建", Hand: func(m *ice.Message, arg ...string) { diff --git a/base/mdb/hash.go b/base/mdb/hash.go index 309f6c39..7bbcbbd9 100644 --- a/base/mdb/hash.go +++ b/base/mdb/hash.go @@ -168,7 +168,7 @@ func HashAction(args ...interface{}) map[string]*ice.Action { m.Cmdy(MODIFY, m.PrefixKey(), "", HASH, m.OptionSimple(_key(m)), arg) }}, EXPORT: {Name: "export", Help: "导出", Hand: func(m *ice.Message, arg ...string) { - m.OptionFields(m.Config(kit.META_FIELD)) + m.OptionFields(m.Config(FIELD)) m.Cmdy(EXPORT, m.PrefixKey(), "", HASH, arg) }}, IMPORT: {Name: "import", Help: "导入", Hand: func(m *ice.Message, arg ...string) { @@ -205,9 +205,9 @@ func HashPrunes(m *ice.Message, cb func(map[string]string) bool) *ice.Message { } return kit.Select(HASH, m.Config(SHORT)) } - before := kit.Time(kit.Select(m.Time("-72h"), m.Option(kit.MDB_BEFORE))) + expire := kit.Time(kit.Select(m.Time("-72h"), m.Option(EXPIRE))) m.Cmd(m.CommandKey()).Table(func(index int, value map[string]string, head []string) { - if kit.Time(value[TIME]) > before { + if kit.Time(value[TIME]) > expire { return } if cb != nil && cb(value) { diff --git a/base/mdb/mdb.go b/base/mdb/mdb.go index 77a3123a..37fb9820 100644 --- a/base/mdb/mdb.go +++ b/base/mdb/mdb.go @@ -24,32 +24,36 @@ const ( META = "meta" ) const ( - ID = "id" - KEY = "key" - TIME = "time" - // ZONE = "zone" - TYPE = "type" - NAME = "name" - TEXT = "text" + ID = kit.MDB_ID + KEY = kit.MDB_KEY + TIME = kit.MDB_TIME + // ZONE = kit.MDB_ZONE + TYPE = kit.MDB_TYPE + NAME = kit.MDB_NAME + TEXT = kit.MDB_TEXT - LINK = "link" - SCAN = "scan" - SHOW = "show" - HELP = "help" - FILE = "file" - DATA = "data" + LINK = kit.MDB_LINK + SCAN = kit.MDB_SCAN + SHOW = kit.MDB_SHOW + HELP = kit.MDB_HELP + DATA = kit.MDB_DATA + FILE = kit.MDB_FILE - SHORT = "short" - FIELD = "field" - TOTAL = "total" - COUNT = "count" - LIMIT = "limit" - INDEX = "index" - VALUE = "value" - EXTRA = "extra" - EXPIRE = "expire" - STATUS = "status" - STREAM = "stream" + SHORT = kit.MDB_SHORT + FIELD = kit.MDB_FIELD + TOTAL = kit.MDB_TOTAL + COUNT = kit.MDB_COUNT + LIMIT = kit.MDB_LIMIT + LEAST = kit.MDB_LEAST + STORE = kit.MDB_STORE + FSIZE = kit.MDB_FSIZE + + INDEX = kit.MDB_INDEX + VALUE = kit.MDB_VALUE + EXTRA = kit.MDB_EXTRA + EXPIRE = kit.MDB_EXPIRE + STATUS = kit.MDB_STATUS + STREAM = kit.MDB_STREAM FOREACH = "*" RANDOMS = "%" diff --git a/base/mdb/plugin.go b/base/mdb/plugin.go index 426e6300..72d31f77 100644 --- a/base/mdb/plugin.go +++ b/base/mdb/plugin.go @@ -9,9 +9,7 @@ const PLUGIN = "plugin" func init() { Index.Merge(&ice.Context{Configs: map[string]*ice.Config{ - PLUGIN: {Name: "plugin", Help: "插件", Value: kit.Data( - SHORT, TYPE, FIELD, "time,type,name,text", - )}, + PLUGIN: {Name: "plugin", Help: "插件", Value: kit.Data(SHORT, TYPE, FIELD, "time,type,name,text")}, }, Commands: map[string]*ice.Command{ PLUGIN: {Name: "plugin type name text auto", Help: "插件", Action: map[string]*ice.Action{ CREATE: {Name: "create type name text", Help: "创建", Hand: func(m *ice.Message, arg ...string) { diff --git a/base/mdb/render.go b/base/mdb/render.go index dff87ad5..ce7bb24f 100644 --- a/base/mdb/render.go +++ b/base/mdb/render.go @@ -9,9 +9,7 @@ const RENDER = "render" func init() { Index.Merge(&ice.Context{Configs: map[string]*ice.Config{ - RENDER: {Name: "render", Help: "渲染", Value: kit.Data( - SHORT, TYPE, FIELD, "time,type,name,text", - )}, + RENDER: {Name: "render", Help: "渲染", Value: kit.Data(SHORT, TYPE, FIELD, "time,type,name,text")}, }, Commands: map[string]*ice.Command{ RENDER: {Name: "render type name text auto", Help: "渲染", Action: map[string]*ice.Action{ CREATE: {Name: "create type name text", Help: "创建", Hand: func(m *ice.Message, arg ...string) { diff --git a/base/mdb/search.go b/base/mdb/search.go index c35aea28..1eb80cd6 100644 --- a/base/mdb/search.go +++ b/base/mdb/search.go @@ -9,9 +9,7 @@ const SEARCH = "search" func init() { Index.Merge(&ice.Context{Configs: map[string]*ice.Config{ - SEARCH: {Name: "search", Help: "搜索", Value: kit.Data( - SHORT, TYPE, FIELD, "time,type,name,text", - )}, + SEARCH: {Name: "search", Help: "搜索", Value: kit.Data(SHORT, TYPE, FIELD, "time,type,name,text")}, }, Commands: map[string]*ice.Command{ SEARCH: {Name: "search type word text auto", Help: "搜索", Action: map[string]*ice.Action{ CREATE: {Name: "create type name text", Help: "创建", Hand: func(m *ice.Message, arg ...string) { @@ -26,8 +24,7 @@ func init() { }) } if HashSelect(msg, arg...); len(arg) == 0 { - m.Copy(msg) - m.Sort(TYPE) + m.Copy(msg).Sort(TYPE) } else if len(arg) == 1 { m.Copy(msg) } diff --git a/base/web/cache.go b/base/web/cache.go index e07750a6..5c8beac2 100644 --- a/base/web/cache.go +++ b/base/web/cache.go @@ -28,9 +28,7 @@ func _cache_save(m *ice.Message, kind, name, text string, arg ...string) { // fi size := kit.Int(kit.Select(kit.Format(len(text)), arg, 1)) file := kit.Select("", arg, 0) text = kit.Select(file, text) - h := m.Cmdx(mdb.INSERT, CACHE, "", mdb.HASH, - mdb.TYPE, kind, mdb.NAME, name, mdb.TEXT, text, - nfs.FILE, file, nfs.SIZE, size) + h := m.Cmdx(mdb.INSERT, CACHE, "", mdb.HASH, kit.SimpleKV("", kind, name, text), nfs.FILE, file, nfs.SIZE, size) // 返回结果 m.Push(mdb.TIME, m.Time()) @@ -40,7 +38,7 @@ func _cache_save(m *ice.Message, kind, name, text string, arg ...string) { // fi m.Push(nfs.SIZE, size) m.Push(nfs.FILE, file) m.Push(mdb.HASH, h) - m.Push(DATA, h) + m.Push(mdb.DATA, h) } func _cache_watch(m *ice.Message, key, file string) { mdb.HashSelect(m.Spawn(), key).Table(func(index int, value map[string]string, head []string) { @@ -100,12 +98,11 @@ func _cache_download(m *ice.Message, r *http.Response) (file, size string) { case []string: m.Richs(cb[0], cb[1], cb[2], func(key string, value map[string]interface{}) { value = kit.GetMeta(value) - value[mdb.VALUE], value[mdb.COUNT], value[mdb.TOTAL] = kit.Format(s), size, total + value[mdb.COUNT], value[mdb.TOTAL], value[mdb.VALUE] = size, total, kit.Format(s) }) default: if s != step && s%10 == 0 { - m.Log_IMPORT(nfs.FILE, p, mdb.VALUE, s, - mdb.COUNT, kit.FmtSize(int64(size)), mdb.TOTAL, kit.FmtSize(int64(total))) + m.Log_IMPORT(nfs.FILE, p, mdb.VALUE, s, mdb.COUNT, kit.FmtSize(int64(size)), mdb.TOTAL, kit.FmtSize(int64(total))) } } step = s @@ -141,8 +138,8 @@ func init() { Index.Merge(&ice.Context{Configs: map[string]*ice.Config{ CACHE: {Name: CACHE, Help: "缓存池", Value: kit.Data( mdb.SHORT, mdb.TEXT, mdb.FIELD, "time,hash,size,type,name,text", - kit.MDB_STORE, ice.VAR_DATA, nfs.PATH, ice.VAR_FILE, kit.MDB_FSIZE, "200000", - mdb.LIMIT, "50", kit.MDB_LEAST, "30", + mdb.STORE, ice.VAR_DATA, nfs.PATH, ice.VAR_FILE, mdb.FSIZE, "200000", + mdb.LIMIT, "50", mdb.LEAST, "30", )}, }, Commands: map[string]*ice.Command{ "/cache/": {Name: "/cache/", Help: "缓存池", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { diff --git a/base/web/render.go b/base/web/render.go index 4714fbdb..70995b84 100644 --- a/base/web/render.go +++ b/base/web/render.go @@ -85,14 +85,9 @@ func CookieName(url string) string { } func RenderCookie(msg *ice.Message, value string, arg ...string) { // name path expire expire := time.Now().Add(kit.Duration(kit.Select(msg.Conf(aaa.SESS, "meta.expire"), arg, 2))) - msg.Debug("what %v %v", value, arg) http.SetCookie(msg.W, &http.Cookie{Value: value, Name: kit.Select(ice.MSG_SESSID, arg, 0), Path: kit.Select("/", arg, 1), Expires: expire}) } -func RenderMeta(msg *ice.Message, name, content string) { - msg.W.Write([]byte(kit.Format(``, name, content))) - msg.W.Write([]byte(ice.NL)) -} func RenderType(w http.ResponseWriter, name, mime string) { if mime != "" { w.Header().Set(ContentType, mime) diff --git a/base/web/share.go b/base/web/share.go index 7ae56036..0962b9ad 100644 --- a/base/web/share.go +++ b/base/web/share.go @@ -19,7 +19,7 @@ import ( ) func _share_link(m *ice.Message, p string, arg ...interface{}) string { - p = kit.Select("", "/share/local/", !strings.HasPrefix(p, "/")) + p + p = kit.Select("", "/share/local/", !strings.HasPrefix(p, ice.PS)) + p return tcp.ReplaceLocalhost(m, m.MergeURL2(p, arg...)) } func _share_repos(m *ice.Message, repos string, arg ...string) { @@ -36,7 +36,7 @@ func _share_proxy(m *ice.Message) { case http.MethodPost: // 上传文件 m.Cmdy(CACHE, UPLOAD) - m.Cmdy(CACHE, WATCH, m.Option(kit.MDB_DATA), p) + m.Cmdy(CACHE, WATCH, m.Option(mdb.DATA), p) m.RenderResult(m.Option(nfs.PATH)) } } @@ -55,7 +55,7 @@ func _share_cache(m *ice.Message, arg ...string) { } func _share_local(m *ice.Message, arg ...string) { p := path.Join(arg...) - switch ls := strings.Split(p, "/"); ls[0] { + switch ls := strings.Split(p, ice.PS); ls[0] { case ice.ETC, ice.VAR: // 私有文件 if m.Option(ice.MSG_USERROLE) == aaa.VOID { m.Render(STATUS, http.StatusUnauthorized, ice.ErrNotRight) @@ -134,10 +134,8 @@ func init() { m.ProcessInner() }}, }, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - if m.PodCmd(SHARE, arg) { - if m.Length() > 0 { - return - } + if m.PodCmd(SHARE, arg) && m.Length() > 0 { + return } if mdb.HashSelect(m, arg...); len(arg) > 0 { link := _share_link(m, "/share/"+arg[0]) @@ -160,8 +158,7 @@ func init() { }}, "/share/toast/": {Name: "/share/toast/", Help: "推送流", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - m.Cmdy(SPACE, m.Option("pod"), m.Optionv("cmds")) - + m.Cmdy(SPACE, m.Option(ice.POD), m.Optionv("cmds")) }}, "/share/repos/": {Name: "/share/repos/", Help: "代码库", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { _share_repos(m, path.Join(arg[0], arg[1], arg[2]), arg[3:]...) diff --git a/base/web/story.go b/base/web/story.go index d2a446db..7fb8b436 100644 --- a/base/web/story.go +++ b/base/web/story.go @@ -162,93 +162,90 @@ const ( const STORY = "story" func init() { - Index.Merge(&ice.Context{ - Configs: map[string]*ice.Config{ - STORY: {Name: "story", Help: "故事会", Value: kit.Dict( - mdb.META, kit.Dict(mdb.SHORT, DATA), - HEAD, kit.Data(mdb.SHORT, STORY), - )}, - }, - Commands: map[string]*ice.Command{ - STORY: {Name: "story story auto", Help: "故事会", Action: map[string]*ice.Action{ - WRITE: {Name: "write type name text arg...", Help: "添加", Hand: func(m *ice.Message, arg ...string) { - _story_write(m, arg[0], arg[1], arg[2], arg[3:]...) - }}, - CATCH: {Name: "catch type name arg...", Help: "捕捉", Hand: func(m *ice.Message, arg ...string) { - _story_catch(m, arg[0], arg[1], arg[2:]...) - }}, - WATCH: {Name: "watch key name", Help: "释放", Hand: func(m *ice.Message, arg ...string) { - _story_watch(m, arg[0], arg[1]) - }}, - INDEX: {Name: "index key", Help: "索引", Hand: func(m *ice.Message, arg ...string) { - _story_index(m, arg[0], false) - }}, - HISTORY: {Name: "history name", Help: "历史", Hand: func(m *ice.Message, arg ...string) { - _story_history(m, arg[0]) - }}, - }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - _story_list(m, kit.Select("", arg, 0), kit.Select("", arg, 1)) + Index.Merge(&ice.Context{Configs: map[string]*ice.Config{ + STORY: {Name: "story", Help: "故事会", Value: kit.Dict( + mdb.META, kit.Dict(mdb.SHORT, DATA), + HEAD, kit.Data(mdb.SHORT, STORY), + )}, + }, Commands: map[string]*ice.Command{ + STORY: {Name: "story story auto", Help: "故事会", Action: map[string]*ice.Action{ + WRITE: {Name: "write type name text arg...", Help: "添加", Hand: func(m *ice.Message, arg ...string) { + _story_write(m, arg[0], arg[1], arg[2], arg[3:]...) }}, - - "/story/": {Name: "/story/", Help: "故事会", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - switch arg[0] { - case PULL: - list := m.Cmd(STORY, INDEX, m.Option("begin")).Append("list") - for i := 0; i < 10 && list != "" && list != m.Option("end"); i++ { - if m.Richs(STORY, nil, list, func(key string, value map[string]interface{}) { - // 节点信息 - m.Push("list", key) - m.Push("node", kit.Format(value)) - m.Push("data", value["data"]) - m.Push("save", kit.Format(m.Richs(CACHE, nil, value["data"], nil))) - list = kit.Format(value["prev"]) - }) == nil { - break - } + CATCH: {Name: "catch type name arg...", Help: "捕捉", Hand: func(m *ice.Message, arg ...string) { + _story_catch(m, arg[0], arg[1], arg[2:]...) + }}, + WATCH: {Name: "watch key name", Help: "释放", Hand: func(m *ice.Message, arg ...string) { + _story_watch(m, arg[0], arg[1]) + }}, + INDEX: {Name: "index key", Help: "索引", Hand: func(m *ice.Message, arg ...string) { + _story_index(m, arg[0], false) + }}, + HISTORY: {Name: "history name", Help: "历史", Hand: func(m *ice.Message, arg ...string) { + _story_history(m, arg[0]) + }}, + }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { + _story_list(m, kit.Select("", arg, 0), kit.Select("", arg, 1)) + }}, + "/story/": {Name: "/story/", Help: "故事会", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { + switch arg[0] { + case PULL: + list := m.Cmd(STORY, INDEX, m.Option("begin")).Append("list") + for i := 0; i < 10 && list != "" && list != m.Option("end"); i++ { + if m.Richs(STORY, nil, list, func(key string, value map[string]interface{}) { + // 节点信息 + m.Push("list", key) + m.Push("node", kit.Format(value)) + m.Push("data", value["data"]) + m.Push("save", kit.Format(m.Richs(CACHE, nil, value["data"], nil))) + list = kit.Format(value["prev"]) + }) == nil { + break } - m.Log(ice.LOG_EXPORT, "%s %s", m.Option("begin"), m.FormatSize()) - - case PUSH: - if m.Richs(CACHE, nil, m.Option("data"), nil) == nil { - // 导入缓存 - m.Log(ice.LOG_IMPORT, "%v: %v", m.Option("data"), m.Option("save")) - m.Conf(CACHE, kit.Keys("hash", m.Option("data")), kit.UnMarshal(m.Option("save"))) - } - - node := kit.UnMarshal(m.Option("node")).(map[string]interface{}) - if m.Richs(STORY, nil, m.Option("list"), nil) == nil { - // 导入节点 - m.Log(ice.LOG_IMPORT, "%v: %v", m.Option("list"), m.Option("node")) - m.Conf(STORY, kit.Keys("hash", m.Option("list")), node) - } - - if head := m.Richs(STORY, "head", m.Option("story"), nil); head == nil { - // 自动创建 - h := m.Rich(STORY, "head", kit.Dict( - "scene", node["scene"], "story", m.Option("story"), - "count", node["count"], "list", m.Option("list"), - )) - m.Log(ice.LOG_CREATE, "%v: %v", h, m.Option("story")) - } else if head["list"] == kit.Format(node["prev"]) || head["list"] == kit.Format(node["pull"]) { - // 快速合并 - head["list"] = m.Option("list") - head["count"] = node["count"] - head["time"] = node["time"] - } else { - // 推送失败 - } - - case UPLOAD: - // 上传数据 - m.Cmdy(CACHE, "upload") - - case DOWNLOAD: - // 下载数据 - m.Cmdy(STORY, INDEX, arg[1]) - m.Render(kit.Select(ice.RENDER_DOWNLOAD, ice.RENDER_RESULT, m.Append("file") == ""), m.Append("text")) } - }}, - }}) + m.Log(ice.LOG_EXPORT, "%s %s", m.Option("begin"), m.FormatSize()) + + case PUSH: + if m.Richs(CACHE, nil, m.Option("data"), nil) == nil { + // 导入缓存 + m.Log(ice.LOG_IMPORT, "%v: %v", m.Option("data"), m.Option("save")) + m.Conf(CACHE, kit.Keys("hash", m.Option("data")), kit.UnMarshal(m.Option("save"))) + } + + node := kit.UnMarshal(m.Option("node")).(map[string]interface{}) + if m.Richs(STORY, nil, m.Option("list"), nil) == nil { + // 导入节点 + m.Log(ice.LOG_IMPORT, "%v: %v", m.Option("list"), m.Option("node")) + m.Conf(STORY, kit.Keys("hash", m.Option("list")), node) + } + + if head := m.Richs(STORY, "head", m.Option("story"), nil); head == nil { + // 自动创建 + h := m.Rich(STORY, "head", kit.Dict( + "scene", node["scene"], "story", m.Option("story"), + "count", node["count"], "list", m.Option("list"), + )) + m.Log(ice.LOG_CREATE, "%v: %v", h, m.Option("story")) + } else if head["list"] == kit.Format(node["prev"]) || head["list"] == kit.Format(node["pull"]) { + // 快速合并 + head["list"] = m.Option("list") + head["count"] = node["count"] + head["time"] = node["time"] + } else { + // 推送失败 + } + + case UPLOAD: + // 上传数据 + m.Cmdy(CACHE, "upload") + + case DOWNLOAD: + // 下载数据 + m.Cmdy(STORY, INDEX, arg[1]) + m.Render(kit.Select(ice.RENDER_DOWNLOAD, ice.RENDER_RESULT, m.Append("file") == ""), m.Append("text")) + } + }}, + }}) } func _story_pull(m *ice.Message, arg ...string) { diff --git a/base/yac/yac.go b/base/yac/yac.go index ac3be183..52b1bd5a 100644 --- a/base/yac/yac.go +++ b/base/yac/yac.go @@ -1,8 +1,6 @@ package yac -import ( - ice "shylinux.com/x/icebergs" -) +import ice "shylinux.com/x/icebergs" const YAC = "yac" diff --git a/core/chat/files.go b/core/chat/files.go index 84cc1362..2d5f7a20 100644 --- a/core/chat/files.go +++ b/core/chat/files.go @@ -30,7 +30,7 @@ func init() { m.Table(func(index int, value map[string]string, head []string) { link := "/share/cache/" + value[mdb.DATA] if m.PushDownload(mdb.LINK, value[mdb.NAME], link); len(arg) > 0 && kit.ExtIsImage(value[mdb.NAME]) { - m.PushImages(kit.MDB_IMAGE, link) + m.PushImages("image", link) } }) }}, diff --git a/core/code/install.go b/core/code/install.go index 8139d8e6..a16ddd09 100644 --- a/core/code/install.go +++ b/core/code/install.go @@ -98,7 +98,7 @@ func _install_order(m *ice.Message, arg ...string) { } func _install_spawn(m *ice.Message, arg ...string) { if kit.Int(m.Option(tcp.PORT)) >= 10000 { - p := path.Join(m.Conf(cli.DAEMON, kit.META_PATH), m.Option(tcp.PORT)) + p := path.Join(m.Conf(cli.DAEMON, kit.Keym(nfs.PATH)), m.Option(tcp.PORT)) if _, e := os.Stat(p); e == nil { m.Echo(p) return @@ -107,7 +107,7 @@ func _install_spawn(m *ice.Message, arg ...string) { m.Option(tcp.PORT, m.Cmdx(tcp.PORT, aaa.RIGHT)) } - target := path.Join(m.Conf(cli.DAEMON, kit.META_PATH), m.Option(tcp.PORT)) + target := path.Join(m.Conf(cli.DAEMON, kit.Keym(nfs.PATH)), m.Option(tcp.PORT)) source := path.Join(m.Config(nfs.PATH), kit.TrimExt(m.Option(mdb.LINK))) m.Cmd(nfs.DIR, path.Join(source, kit.Select("_install", m.Option("install")))).Table(func(index int, value map[string]string, head []string) { @@ -187,7 +187,7 @@ func init() { _install_service(m, arg...) default: // 目录列表 - m.Option(nfs.DIR_ROOT, path.Join(m.Conf(cli.DAEMON, kit.META_PATH), arg[1])) + m.Option(nfs.DIR_ROOT, path.Join(m.Conf(cli.DAEMON, kit.Keym(nfs.PATH)), arg[1])) m.Cmdy(nfs.CAT, kit.Select(ice.PWD, arg, 2)) } }}, diff --git a/core/code/publish.go b/core/code/publish.go index 67ad21b4..a293a1c2 100644 --- a/core/code/publish.go +++ b/core/code/publish.go @@ -45,7 +45,7 @@ func _publish_file(m *ice.Message, file string, arg ...string) string { // 发布文件 target := path.Join(m.Config(nfs.PATH), kit.Select(path.Base(file), arg, 0)) - m.Log_EXPORT(PUBLISH, target, kit.MDB_FROM, file) + m.Log_EXPORT(PUBLISH, target, "from", file) m.Cmd(nfs.LINK, target, file) return target } diff --git a/core/code/webpack.go b/core/code/webpack.go index 676b220c..07969550 100644 --- a/core/code/webpack.go +++ b/core/code/webpack.go @@ -110,7 +110,7 @@ func init() { }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Option(nfs.DIR_DEEP, true) m.Option(nfs.DIR_TYPE, nfs.CAT) - m.Option(nfs.DIR_ROOT, m.Conf(PUBLISH, kit.META_PATH)) + m.Option(nfs.DIR_ROOT, m.Conf(PUBLISH, kit.Keym(nfs.PATH))) m.Cmdy(nfs.DIR, WEBPACK, "time,size,path,action,link") }}, diff --git a/exec.go b/exec.go index 298cc23e..ccda2fb4 100644 --- a/exec.go +++ b/exec.go @@ -18,9 +18,9 @@ func (m *Message) TryCatch(msg *Message, silent bool, hand ...func(msg *Message) default: fileline := kit.FileLine(4, 5) m.Log(LOG_WARN, "catch: %s %s", e, fileline) - m.Log(kit.MDB_CHAIN, msg.FormatChain()) + m.Log("chain", msg.FormatChain()) m.Log(LOG_WARN, "catch: %s %s", e, fileline) - m.Log(kit.MDB_STACK, msg.FormatStack()) + m.Log("stack", msg.FormatStack()) m.Log(LOG_WARN, "catch: %s %s", e, fileline) if len(hand) > 1 { m.TryCatch(msg, silent, hand[1:]...) diff --git a/misc/alpha/alpha.go b/misc/alpha/alpha.go index 4f158511..d5d7c15a 100644 --- a/misc/alpha/alpha.go +++ b/misc/alpha/alpha.go @@ -26,7 +26,7 @@ func _alpha_find(m *ice.Message, method, word string) { } // 搜索词汇 - msg := m.Cmd(cli.SYSTEM, "grep", "-rih", word, m.Config(kit.MDB_STORE)) + msg := m.Cmd(cli.SYSTEM, "grep", "-rih", word, m.Config(mdb.STORE)) msg.CSV(msg.Result(), kit.Split(m.Config(mdb.FIELD))...).Table(func(index int, value map[string]string, head []string) { if m.FieldsIsDetail() { m.Push(mdb.DETAIL, value, kit.Split(m.Config(mdb.FIELD))) @@ -39,7 +39,7 @@ func _alpha_find(m *ice.Message, method, word string) { func _alpha_load(m *ice.Message, file, name string) { // 清空数据 meta := m.Confm(ALPHA, mdb.META) - m.Assert(os.RemoveAll(path.Join(kit.Format(meta[kit.MDB_STORE]), name))) + m.Assert(os.RemoveAll(path.Join(kit.Format(meta[mdb.STORE]), name))) m.Conf(ALPHA, name, "") // 缓存配置 @@ -48,7 +48,7 @@ func _alpha_load(m *ice.Message, file, name string) { // 保存词库 m.Conf(ALPHA, kit.Keys(name, kit.Keym(mdb.LIMIT)), 0) - m.Conf(ALPHA, kit.Keys(name, kit.Keym(kit.MDB_LEAST)), 0) + m.Conf(ALPHA, kit.Keys(name, kit.Keym(mdb.LEAST)), 0) m.Echo("%s: %d", name, m.Grow(ALPHA, name, kit.Dict(WORD, ice.SP))) } @@ -62,8 +62,8 @@ const ALPHA = "alpha" var Index = &ice.Context{Name: ALPHA, Help: "英汉词典", Configs: map[string]*ice.Config{ ALPHA: {Name: ALPHA, Help: "英汉词典", Value: kit.Data( nfs.REPOS, "word-dict", mdb.FIELD, "word,translation,definition", - kit.MDB_STORE, path.Join(ice.USR_LOCAL_EXPORT, ALPHA), kit.MDB_FSIZE, "300000", - mdb.LIMIT, "50000", kit.MDB_LEAST, "1000", + mdb.STORE, path.Join(ice.USR_LOCAL_EXPORT, ALPHA), mdb.FSIZE, "300000", + mdb.LIMIT, "50000", mdb.LEAST, "1000", )}, }, Commands: map[string]*ice.Command{ ALPHA: {Name: "alpha method=word,line word auto", Help: "英汉", Action: map[string]*ice.Action{ diff --git a/misc/input/input.go b/misc/input/input.go index a7587ba4..6f36a86c 100644 --- a/misc/input/input.go +++ b/misc/input/input.go @@ -25,7 +25,7 @@ func _input_find(m *ice.Message, method, word, limit string) { } // 搜索词汇 - res := m.Cmdx(cli.SYSTEM, "grep", "-rn", word, m.Config(kit.MDB_STORE)) + res := m.Cmdx(cli.SYSTEM, "grep", "-rn", word, m.Config(mdb.STORE)) bio := csv.NewReader(bytes.NewBufferString(strings.Replace(res, ":", ",", -1))) for i := 0; i < kit.Int(limit); i++ { @@ -49,11 +49,11 @@ func _input_load(m *ice.Message, file string, libs ...string) { // 清空数据 lib := kit.Select(path.Base(file), libs, 0) - m.Assert(os.RemoveAll(path.Join(m.Config(kit.MDB_STORE), lib))) + m.Assert(os.RemoveAll(path.Join(m.Config(mdb.STORE), lib))) m.Cmd(mdb.DELETE, m.PrefixKey(), "", mdb.HASH, mdb.ZONE, lib) prefix := kit.Keys(mdb.HASH, m.Rich(m.PrefixKey(), "", kit.Data( - kit.MDB_STORE, path.Join(m.Config(kit.MDB_STORE), lib), - m.ConfigSimple(kit.MDB_FSIZE, mdb.LIMIT, kit.MDB_LEAST), + mdb.STORE, path.Join(m.Config(mdb.STORE), lib), + m.ConfigSimple(mdb.FSIZE, mdb.LIMIT, mdb.LEAST), mdb.ZONE, lib, mdb.COUNT, 0, ))) @@ -71,7 +71,7 @@ func _input_load(m *ice.Message, file string, libs ...string) { // 保存词库 m.Conf(m.PrefixKey(), kit.Keys(prefix, kit.Keym(mdb.LIMIT)), 0) - m.Conf(m.PrefixKey(), kit.Keys(prefix, kit.Keym(kit.MDB_LEAST)), 0) + m.Conf(m.PrefixKey(), kit.Keys(prefix, kit.Keym(mdb.LEAST)), 0) n := m.Grow(m.PrefixKey(), prefix, kit.Dict(TEXT, "成功", CODE, "z", WEIGHT, "0")) m.Log_IMPORT(m.PrefixKey(), lib, mdb.COUNT, n) m.Echo("%s: %d", lib, n) @@ -80,10 +80,10 @@ func _input_load(m *ice.Message, file string, libs ...string) { func _input_push(m *ice.Message, lib, text, code, weight string) { if m.Richs(m.PrefixKey(), "", lib, nil) == nil { m.Rich(m.PrefixKey(), "", kit.Data( - kit.MDB_STORE, path.Join(m.Config(kit.MDB_STORE), lib), - kit.MDB_FSIZE, m.Config(kit.MDB_FSIZE), + mdb.STORE, path.Join(m.Config(mdb.STORE), lib), + mdb.FSIZE, m.Config(mdb.FSIZE), mdb.LIMIT, m.Config(mdb.LIMIT), - kit.MDB_LEAST, m.Config(kit.MDB_LEAST), + mdb.LEAST, m.Config(mdb.LEAST), mdb.ZONE, lib, )) } @@ -91,7 +91,7 @@ func _input_push(m *ice.Message, lib, text, code, weight string) { m.Richs(m.PrefixKey(), "", lib, func(key string, value map[string]interface{}) { prefix := kit.Keys(mdb.HASH, key) m.Conf(m.PrefixKey(), kit.Keys(prefix, kit.Keym(mdb.LIMIT)), 0) - m.Conf(m.PrefixKey(), kit.Keys(prefix, kit.Keym(kit.MDB_LEAST)), 0) + m.Conf(m.PrefixKey(), kit.Keys(prefix, kit.Keym(mdb.LEAST)), 0) n := m.Grow(m.PrefixKey(), prefix, kit.Dict(TEXT, text, CODE, code, WEIGHT, weight)) m.Log_IMPORT(CODE, code, TEXT, text) m.Echo("%s: %d", lib, n) @@ -128,7 +128,7 @@ func _input_list(m *ice.Message, lib string) { m.Option(nfs.DIR_DEEP, true) m.Option(nfs.DIR_TYPE, nfs.CAT) m.Richs(m.PrefixKey(), "", lib, func(key string, value map[string]interface{}) { - m.Cmdy(nfs.DIR, kit.Value(value, kit.Keym(kit.MDB_STORE)), "time size line path") + m.Cmdy(nfs.DIR, kit.Value(value, kit.Keym(mdb.STORE)), "time size line path") }) } diff --git a/misc/input/wubi.go b/misc/input/wubi.go index 6eed412c..3d4eb36f 100644 --- a/misc/input/wubi.go +++ b/misc/input/wubi.go @@ -14,9 +14,9 @@ const WUBI = "wubi" func init() { Index.Merge(&ice.Context{Configs: map[string]*ice.Config{ WUBI: {Name: WUBI, Help: "输入法", Value: kit.Data( - kit.MDB_STORE, path.Join(ice.USR_LOCAL_EXPORT, INPUT, WUBI), kit.MDB_FSIZE, "200000", + mdb.STORE, path.Join(ice.USR_LOCAL_EXPORT, INPUT, WUBI), mdb.FSIZE, "200000", mdb.SHORT, "zone", nfs.REPOS, "wubi-dict", - mdb.LIMIT, "5000", kit.MDB_LEAST, "1000", + mdb.LIMIT, "5000", mdb.LEAST, "1000", )}, }, Commands: map[string]*ice.Command{ WUBI: {Name: "wubi method=word,line code auto", Help: "五笔", Action: map[string]*ice.Action{ diff --git a/misc/tmux/session.go b/misc/tmux/session.go index c12460c9..aeef5ff5 100644 --- a/misc/tmux/session.go +++ b/misc/tmux/session.go @@ -8,6 +8,7 @@ import ( "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/web" kit "shylinux.com/x/toolkits" ) @@ -78,7 +79,7 @@ func init() { m.Cmdy(cli.SYSTEM, TMUX, "new-window", "-t", m.Option(SESSION), "-dn", m.Option(mdb.NAME)) } else { // 创建会话 - m.Option(cli.CMD_DIR, path.Join(m.Conf(web.DREAM, kit.META_PATH), m.Option(mdb.NAME))) + m.Option(cli.CMD_DIR, path.Join(m.Conf(web.DREAM, kit.Keym(nfs.PATH)), m.Option(mdb.NAME))) ls := kit.Split(m.Option(mdb.NAME), "-_") name := ls[len(ls)-1] diff --git a/misc/trash/docker/docker.go b/misc/trash/docker/docker.go deleted file mode 100644 index a229502d..00000000 --- a/misc/trash/docker/docker.go +++ /dev/null @@ -1,210 +0,0 @@ -package docker - -import ( - "path" - - ice "shylinux.com/x/icebergs" - "shylinux.com/x/icebergs/base/cli" - "shylinux.com/x/icebergs/base/gdb" - "shylinux.com/x/icebergs/base/mdb" - "shylinux.com/x/icebergs/base/tcp" - "shylinux.com/x/icebergs/base/web" - "shylinux.com/x/icebergs/core/code" - kit "shylinux.com/x/toolkits" - - "strings" -) - -func MOD(str string) string { return str } -func CMD(str string) string { return str } -func ARG(str string) string { return str } - -var DOCKER = MOD("docker") -var ( - IMAGE = CMD("image") - CONTAINER = CMD("container") - COMMAND = CMD("command") -) -var ( - ALPINE = ARG("alpine") - CENTOS = ARG("centos") -) -var ( - _REPOSITORY = ARG("REPOSITORY") - _TAG = ARG("TAG") - - _CONTAINER_ID = ARG("CONTAINER_ID") - _IMAGE_ID = ARG("IMAGE_ID") -) - -var _docker = []string{cli.SYSTEM, DOCKER} -var _image = []string{cli.SYSTEM, DOCKER, IMAGE} -var _container = []string{cli.SYSTEM, DOCKER, CONTAINER} - -var Index = &ice.Context{Name: DOCKER, Help: "虚拟机", - Configs: map[string]*ice.Config{ - DOCKER: {Name: DOCKER, Help: "虚拟机", Value: kit.Data( - "path", "usr/docker", - "repos", CENTOS, "build", []interface{}{ - "home", - // "mount", - }, - ALPINE, []interface{}{ - `sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories`, - `apk add curl`, - }, - CENTOS, []interface{}{ - `curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo`, - `yum makecache`, - }, - )}, - IMAGE: {Name: IMAGE, Help: "镜像", Value: kit.Data( - "action", []interface{}{"build", "push", "pull", "start", "clear"}, - )}, - CONTAINER: {Name: CONTAINER, Help: "容器", Value: kit.Data( - "action", []interface{}{"open", "start", "stop", "restart", "clear"}, - )}, - }, - Commands: map[string]*ice.Command{ - IMAGE: {Name: "image IMAGE_ID=auto auto 清理:button", Help: "镜像管理", Meta: kit.Dict( - "detail", []string{"运行", "清理", "删除"}, - ), Action: map[string]*ice.Action{ - web.PULL: {Name: "pull", Help: "更新", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(_image, "pull", m.Option(_REPOSITORY)) - }}, - web.PUSH: {Name: "push", Help: "上传", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(_image, "push", m.Option(_REPOSITORY)) - }}, - gdb.BUILD: {Name: "build", Help: "生成", Hand: func(m *ice.Message, arg ...string) { - m.Cmd(cli.SYSTEM, "rm", "-r", "usr/docker/meta/demo/") - m.Cmd(cli.SYSTEM, "rm", "-r", "usr/docker/meta/volcanos/") - m.Cmd(cli.SYSTEM, "cp", "-r", "usr/demo/", "usr/docker/meta/demo/") - m.Cmd(cli.SYSTEM, "cp", "-r", "usr/volcanos/", "usr/docker/meta/volcanos/") - m.Cmdy(_docker, "build", m.Conf(DOCKER, "meta.path"), "-t", m.Option(_REPOSITORY), - "-f", path.Join(m.Conf(DOCKER, "meta.path"), m.Option(_REPOSITORY)), - ) - }}, - gdb.START: {Name: "start", Help: "运行", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(_docker, "run", "-dt", "-p", m.Cmdx(tcp.PORT, "get")+":9020", m.Option(_REPOSITORY)+":"+m.Option(_TAG)) - }}, - gdb.PRUNE: {Name: "prune", Help: "清理", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(_image, "prune", "-f") - }}, - gdb.CLEAR: {Name: "clear", Help: "删除", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(_image, "rm", m.Option(_IMAGE_ID)) - }}, - }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - if len(arg) > 0 { - // 容器详情 - res := m.Cmdx(_image, "inspect", arg[0]) - m.PushDetail(kit.KeyValue(nil, "", kit.Parse(nil, "", kit.Split(res)...))) - return - } - - // 镜像列表 - m.Split(strings.Replace(m.Cmdx(_docker, "images"), "IMAGE ID", _IMAGE_ID, 1), "index", " ", "\n") - m.Sort(_REPOSITORY) - - // 镜像操作 - m.PushAction(m.Confv(IMAGE, "meta.action")) - }}, - CONTAINER: {Name: "container CONTAINER_ID=auto auto 清理:button", Help: "容器管理", Meta: kit.Dict( - "detail", []string{"进入", "启动", "停止", "重启", "清理", "编辑", "删除"}, - ), Action: map[string]*ice.Action{ - gdb.OPEN: {Name: "open", Help: "进入", Hand: func(m *ice.Message, arg ...string) { - m.Cmd("web.code.tmux", m.Option("NAMES")) - m.Cmdy(cli.SYSTEM, "tmux", "new-window", "-t", m.Option("NAMES"), "-n", m.Option("NAMES"), - "-PF", "#{session_name}:#{window_name}.1", "docker exec -it "+m.Option("NAMES")+" sh") - }}, - gdb.START: {Name: "start", Help: "启动", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(_container, "start", m.Option(_CONTAINER_ID)) - }}, - gdb.STOP: {Name: "stop", Help: "停止", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(_container, "stop", m.Option(_CONTAINER_ID)) - }}, - gdb.RESTART: {Name: "restart", Help: "重启", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(_container, "restart", m.Option(_CONTAINER_ID)) - }}, - gdb.CHANGE: {Name: "change", Help: "更改", Hand: func(m *ice.Message, arg ...string) { - switch arg[0] { - case "NAMES": - m.Cmdy(_container, "rename", m.Option(_CONTAINER_ID), arg[1]) - } - }}, - gdb.PRUNE: {Name: "prune", Help: "清理", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(_container, "prune", "-f") - }}, - gdb.CLEAR: {Name: "clear", Help: "删除", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(_container, "rm", m.Option(_CONTAINER_ID)) - }}, - }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - if len(arg) > 0 { - // 容器详情 - res := m.Cmdx(_container, "inspect", arg[0]) - m.PushDetail(kit.KeyValue(nil, "", kit.Parse(nil, "", kit.Split(res)...))) - return - } - - // 容器列表 - m.Split(strings.Replace(m.Cmdx(_docker, "ps", "-a"), "CONTAINER ID", _CONTAINER_ID, 1), "index", " ", "\n") - m.Sort("NAMES") - m.Table(func(index int, value map[string]string, head []string) { - if strings.TrimSpace(value["PORTS"]) == "" { - return - } - ls := strings.Split(value["PORTS"], "->") - ls = strings.Split(ls[0], ":") - u := kit.ParseURL(m.Option(ice.MSG_USERWEB)) - p := kit.Format("http://%s:%s", u.Hostname(), ls[1]) - m.Echo("%s\n", m.Cmdx(mdb.RENDER, web.RENDER.A, p, p)) - }) - - // 容器操作 - m.PushAction(m.Confv(CONTAINER, "meta.action")) - }}, - COMMAND: {Name: "command NAMES=auto cmd... auto", Help: "命令管理", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - if len(arg) < 2 { - m.Cmdy(CONTAINER) - return - } - m.Echo(m.Cmdx(_container, "exec", arg[0], kit.Split(kit.Select("pwd", arg, 1), " ", " "))) - }}, - - gdb.INIT: {Name: "init", Help: "初始化", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - m.Watch(web.DREAM_START) - }}, - gdb.AUTO: {Name: "auto", Help: "自动化", Action: map[string]*ice.Action{ - web.DREAM_START: {Hand: func(m *ice.Message, arg ...string) { - if cli.IsSuccess(m.Cmd(_container, "start", arg[0])) { - // 重启容器 - return - } - - args := []string{"--name", arg[0], - "-e", "ctx_user=" + cli.UserName, - "-e", "ctx_dev=" + m.Conf(cli.RUNTIME, "conf.ctx_dev"), - } - kit.Fetch(m.Confv(DOCKER, "meta.build"), func(index int, value string) { - switch value { - case "home": - args = append(args, "-w", "/root") - case "mount": - p := kit.Path(m.Conf(web.DREAM, "meta.path"), arg[0]) - args = append(args, "--mount", kit.Format("type=bind,source=%s,target=/root", p)) - } - }) - - // 创建容器 - repos := m.Conf(DOCKER, "meta.repos") - pid := m.Cmdx(_docker, "run", "-dt", args, repos) - m.Log_CREATE(repos, arg[0], "pid", pid) - - kit.Fetch(m.Confv(DOCKER, kit.Keys("meta", repos)), func(index int, value string) { - m.Logs("cmd", value, "res", m.Cmdx(_container, "exec", arg[0], kit.Split(value))) - }) - }}, - }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {}}, - }, -} - -func init() { code.Index.Register(Index, nil) } diff --git a/misc/trash/md/md.go b/misc/trash/md/md.go deleted file mode 100644 index 868ec9d8..00000000 --- a/misc/trash/md/md.go +++ /dev/null @@ -1,72 +0,0 @@ -package md - -import ( - ice "shylinux.com/x/icebergs" - "shylinux.com/x/icebergs/core/wiki" - kit "shylinux.com/x/toolkits" - - "io/ioutil" - "path" - "strings" - - "github.com/gomarkdown/markdown" -) - -/* -func (m *Message) Prefile(favor string, id string) map[string]string { - // TODO - res := map[string]string{} - m.Option("render", "") - m.Option("_action", "") - m.Cmd("web.favor", kit.Select(m.Option("favor"), favor), id).Table(func(index int, value map[string]string, head []string) { - res[value["key"]] = value["value"] - }) - - res["content"] = m.Cmdx("cli.system", "sed", "-n", kit.Format("%d,%dp", kit.Int(res["extra.row"]), kit.Int(res["extra.row"])+3), res["extra.buf"]) - return res -} -*/ -var Index = &ice.Context{Name: "md", Help: "md", - Caches: map[string]*ice.Cache{}, - Configs: map[string]*ice.Config{ - "note": {Name: "note", Help: "笔记", Value: kit.Data( - "path", "", "head", "time size line path", - )}, - - "md": {Name: "md", Help: "md", Value: kit.Data(kit.MDB_SHORT, "name")}, - }, - Commands: map[string]*ice.Command{ - ice.ICE_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {}}, - ice.ICE_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {}}, - - "md": {Name: "md", Help: "md", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - m.Echo("hello world") - }}, - - "note": {Name: "note file", Help: "文档", Meta: kit.Dict( - ice.Display("inner"), - ), List: kit.List( - kit.MDB_INPUT, "text", "name", "path", "value", "README.md", "action", "auto", - kit.MDB_INPUT, "button", "name", "执行", "action", "auto", - kit.MDB_INPUT, "button", "name", "返回", "cb", "Last", - ), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - if len(arg) > 0 && strings.HasSuffix(arg[0], ".md") { - arg[0] = path.Join(m.Conf("note", "meta.path"), arg[0]) - } - m.Cmdy(kit.Select("_tree", "_text", len(arg) > 0 && strings.HasSuffix(arg[0], ".md")), arg) - }}, - "_tree": {Name: "_tree [path [true]]", Help: "文库", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - m.Option("dir_reg", ".*\\.md") - m.Option("dir_deep", kit.Select("", arg, 1)) - m.Cmdy("nfs.dir", kit.Select(m.Conf("note", "meta.path"), arg, 0), m.Conf("note", "meta.head")) - }}, - "_text": {Name: "_text file", Help: "文章", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - if b, e := ioutil.ReadFile(arg[0]); m.Assert(e) { - data := markdown.ToHTML(b, nil, nil) - m.Echo(string(data)) - } - }}, - }, -} - -func init() { wiki.Index.Register(Index, nil) } diff --git a/misc/trash/md/md.js b/misc/trash/md/md.js deleted file mode 100644 index 957bfb22..00000000 --- a/misc/trash/md/md.js +++ /dev/null @@ -1,9 +0,0 @@ -Volcanos("onimport", {help: "导入数据", list: [], - "init": function(can, msg, cb, output, action, option) {}, -}) -Volcanos("onaction", {help: "控件菜单", list: []}) -Volcanos("onchoice", {help: "控件交互", list: ["刷新"] - "刷新": function(event, can, value, cmd, target) {}, -}) -Volcanos("ondetail", {help: "控件详情", list: []}) -Volcanos("onexport", {help: "导出数据", list: []}) diff --git a/misc/trash/md/md.shy b/misc/trash/md/md.shy deleted file mode 100644 index fd854e9d..00000000 --- a/misc/trash/md/md.shy +++ /dev/null @@ -1 +0,0 @@ -title "md" diff --git a/misc/vim/vim.go b/misc/vim/vim.go index 3f590e4a..33454e99 100644 --- a/misc/vim/vim.go +++ b/misc/vim/vim.go @@ -13,8 +13,8 @@ import ( ) func _vim_pkg(m *ice.Message, url string) string { - p := path.Join(m.Conf(code.INSTALL, kit.META_PATH), path.Base(url)) - return kit.Path(m.Conf(code.INSTALL, kit.META_PATH), strings.Split(m.Cmdx(cli.SYSTEM, "sh", "-c", kit.Format("tar tf %s| head -n1", p)), "/")[0]) + 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"