1
0
mirror of https://shylinux.com/x/icebergs synced 2025-04-28 10:12:02 +08:00
This commit is contained in:
shaoying 2020-11-13 21:31:03 +08:00
parent fddc59a941
commit f480e4db0f
8 changed files with 58 additions and 61 deletions

View File

@ -1,5 +1,5 @@
title "git" title "git"
refer "官网" ` refer `
官网 https://git-scm.com/ 官网 https://git-scm.com/
文档 https://git-scm.com/docs 文档 https://git-scm.com/docs
源码 https://github.com/git/git 源码 https://github.com/git/git

View File

@ -1,6 +1,8 @@
package vim package vim
import ( import (
"path"
ice "github.com/shylinux/icebergs" ice "github.com/shylinux/icebergs"
"github.com/shylinux/icebergs/base/mdb" "github.com/shylinux/icebergs/base/mdb"
"github.com/shylinux/icebergs/core/code" "github.com/shylinux/icebergs/core/code"
@ -9,6 +11,10 @@ import (
"strings" "strings"
) )
const (
TAB = "tab"
NOTE = "note"
)
const FAVOR = "favor" const FAVOR = "favor"
func init() { func init() {
@ -19,11 +25,11 @@ func init() {
)}, )},
}, },
Commands: map[string]*ice.Command{ Commands: map[string]*ice.Command{
FAVOR: {Name: "favor topic=auto id=auto auto create export import", Help: "收藏夹", Action: map[string]*ice.Action{ FAVOR: {Name: "favor topic id auto create export import", Help: "收藏夹", Action: map[string]*ice.Action{
mdb.CREATE: {Name: "create topic", Help: "创建", Hand: func(m *ice.Message, arg ...string) { mdb.CREATE: {Name: "create topic", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(mdb.INSERT, m.Prefix(FAVOR), "", mdb.HASH, arg) m.Cmdy(mdb.INSERT, m.Prefix(FAVOR), "", mdb.HASH, arg)
}}, }},
mdb.INSERT: {Name: "insert topic=数据结构 name=hi text=hello", Help: "添加", Hand: func(m *ice.Message, arg ...string) { mdb.INSERT: {Name: "insert topic=数据结构 name=hi text=hello file line", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(mdb.INSERT, m.Prefix(FAVOR), "", mdb.HASH, kit.MDB_TOPIC, m.Option(kit.MDB_TOPIC)) m.Cmdy(mdb.INSERT, m.Prefix(FAVOR), "", mdb.HASH, kit.MDB_TOPIC, m.Option(kit.MDB_TOPIC))
m.Cmdy(mdb.INSERT, m.Prefix(FAVOR), kit.SubKey(m.Option(kit.MDB_TOPIC)), mdb.LIST, arg[2:]) m.Cmdy(mdb.INSERT, m.Prefix(FAVOR), kit.SubKey(m.Option(kit.MDB_TOPIC)), mdb.LIST, arg[2:])
}}, }},
@ -54,7 +60,7 @@ func init() {
} }
m.PushPlugin(code.INNER, code.INNER, mdb.RENDER) m.PushPlugin(code.INNER, code.INNER, mdb.RENDER)
m.Push(kit.SSH_ARG, kit.Format([]string{kit.Select("./", m.Option(kit.MDB_PATH)), m.Option(kit.MDB_FILE), m.Option(kit.MDB_LINE)})) m.Push(kit.SSH_ARG, kit.Format([]string{kit.Select("./", path.Dir(m.Option(kit.MDB_FILE))), path.Base(m.Option(kit.MDB_FILE)), m.Option(kit.MDB_LINE)}))
}}, }},
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
if len(arg) == 0 { if len(arg) == 0 {
@ -71,19 +77,19 @@ func init() {
"/favor": {Name: "/favor", Help: "收藏", Action: map[string]*ice.Action{ "/favor": {Name: "/favor", Help: "收藏", Action: map[string]*ice.Action{
mdb.INSERT: {Name: "insert", Help: "添加", Hand: func(m *ice.Message, arg ...string) { mdb.INSERT: {Name: "insert", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
m.Cmd(m.Prefix(FAVOR), mdb.INSERT, kit.MDB_TOPIC, m.Option(TAB), m.Cmd(FAVOR, mdb.INSERT, kit.MDB_TOPIC, m.Option(TAB), kit.MDB_NAME, m.Option(NOTE),
kit.MDB_NAME, m.Option("note"), kit.MDB_TEXT, m.Option(ARG), kit.MDB_FILE, m.Option(BUF), kit.MDB_LINE, m.Option(ROW), kit.MDB_TEXT, m.Option(ARG), kit.MDB_FILE, m.Option(BUF), kit.MDB_LINE, m.Option(ROW),
) )
}}, }},
mdb.SELECT: {Name: "select", Help: "主题", Hand: func(m *ice.Message, arg ...string) { mdb.SELECT: {Name: "select", Help: "主题", Hand: func(m *ice.Message, arg ...string) {
list := []string{} list := []string{}
m.Cmd(m.Prefix(FAVOR)).Table(func(index int, value map[string]string, head []string) { m.Cmd(FAVOR).Table(func(index int, value map[string]string, head []string) {
list = append(list, value[kit.MDB_TOPIC]) list = append(list, value[kit.MDB_TOPIC])
}) })
m.Echo(strings.Join(list, "\n")) m.Echo(strings.Join(list, "\n"))
}}, }},
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
m.Cmd(m.Prefix(FAVOR), m.Option(TAB)).Table(func(index int, value map[string]string, head []string) { m.Cmd(FAVOR, m.Option(TAB)).Table(func(index int, value map[string]string, head []string) {
m.Echo("%v\n", m.Option(TAB)).Echo("%v:%v:%v:(%v): %v\n", m.Echo("%v\n", m.Option(TAB)).Echo("%v:%v:%v:(%v): %v\n",
value[kit.MDB_FILE], value[kit.MDB_LINE], "1", value[kit.MDB_NAME], value[kit.MDB_TEXT]) value[kit.MDB_FILE], value[kit.MDB_LINE], "1", value[kit.MDB_NAME], value[kit.MDB_TEXT])
}) })

View File

@ -19,7 +19,7 @@ func init() {
)}, )},
}, },
Commands: map[string]*ice.Command{ Commands: map[string]*ice.Command{
INPUT: {Name: "sync id=auto auto export import", Help: "同步流", Action: map[string]*ice.Action{ INPUT: {Name: "input id auto export import", Help: "输入法", Action: map[string]*ice.Action{
mdb.EXPORT: {Name: "export", Help: "导出", Hand: func(m *ice.Message, arg ...string) { mdb.EXPORT: {Name: "export", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(mdb.EXPORT, m.Prefix(INPUT), "", mdb.LIST) m.Cmdy(mdb.EXPORT, m.Prefix(INPUT), "", mdb.LIST)
}}, }},
@ -31,10 +31,9 @@ func init() {
m.Cmdy(mdb.SELECT, m.Prefix(INPUT), "", mdb.LIST, kit.MDB_ID, arg) m.Cmdy(mdb.SELECT, m.Prefix(INPUT), "", mdb.LIST, kit.MDB_ID, arg)
}}, }},
"/input": {Name: "/input", Help: "补全", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { "/input": {Name: "/input", Help: "输入法", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
if arg[0] = strings.TrimSpace(arg[0]); strings.HasPrefix(arg[0], "ice ") { if arg[0] = strings.TrimSpace(arg[0]); strings.HasPrefix(arg[0], "ice ") {
list := kit.Split(arg[0]) switch list := kit.Split(arg[0]); list[1] {
switch list[1] {
case "add": case "add":
// ice add 想你 shwq [9999 [person]] // ice add 想你 shwq [9999 [person]]
m.Cmd("web.code.input.wubi", "insert", "text", list[2], "code", list[3], m.Cmd("web.code.input.wubi", "insert", "text", list[2], "code", list[3],

View File

@ -19,10 +19,13 @@ const (
PWD = "pwd" PWD = "pwd"
PID = "pid" PID = "pid"
BUF = "buf" BUF = "buf"
TAB = "tab"
ROW = "row" ROW = "row"
COL = "col" COL = "col"
) )
const (
LOGOUT = "logout"
LOGIN = "login"
)
const SESS = "sess" const SESS = "sess"
func init() { func init() {
@ -35,11 +38,11 @@ func init() {
Commands: map[string]*ice.Command{ Commands: map[string]*ice.Command{
SESS: {Name: "sess hash auto prunes", Help: "会话流", Action: map[string]*ice.Action{ SESS: {Name: "sess hash auto prunes", Help: "会话流", Action: map[string]*ice.Action{
mdb.PRUNES: {Name: "prunes", Help: "清理", Hand: func(m *ice.Message, arg ...string) { mdb.PRUNES: {Name: "prunes", Help: "清理", Hand: func(m *ice.Message, arg ...string) {
m.Option(mdb.FIELDS, m.Conf(m.Prefix(SESS), kit.META_FIELD)) m.Option(mdb.FIELDS, m.Conf(SESS, kit.META_FIELD))
m.Cmdy(mdb.PRUNES, m.Prefix(SESS), "", mdb.HASH, kit.MDB_STATUS, "logout") m.Cmdy(mdb.PRUNES, m.Prefix(SESS), "", mdb.HASH, kit.MDB_STATUS, LOGOUT)
}}, }},
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
m.Option(mdb.FIELDS, kit.Select(m.Conf(m.Prefix(SESS), kit.META_FIELD), mdb.DETAIL, len(arg) > 0)) m.Option(mdb.FIELDS, kit.Select(m.Conf(SESS, kit.META_FIELD), mdb.DETAIL, len(arg) > 0))
m.Cmdy(mdb.SELECT, m.Prefix(SESS), "", mdb.HASH, kit.MDB_HASH, arg) m.Cmdy(mdb.SELECT, m.Prefix(SESS), "", mdb.HASH, kit.MDB_HASH, arg)
}}, }},
@ -52,26 +55,26 @@ func init() {
} }
} }
if strings.TrimSpace(m.Option(SID)) != "" { if sid := strings.TrimSpace(m.Option(SID)); m.Option(SID, sid) != "" {
m.Option(mdb.FIELDS, m.Conf(m.Prefix(SESS), kit.META_FIELD)) if msg := m.Cmd(SESS, sid); m.Option(SID, msg.Append(kit.MDB_HASH)) != "" {
msg := m.Cmd(mdb.SELECT, m.Prefix(SESS), "", mdb.HASH, kit.MDB_HASH, strings.TrimSpace(m.Option(SID)))
if m.Option(SID, msg.Append(kit.MDB_HASH)) != "" {
m.Option(aaa.USERNAME, msg.Append(aaa.USERNAME)) m.Option(aaa.USERNAME, msg.Append(aaa.USERNAME))
m.Option(tcp.HOSTNAME, msg.Append(tcp.HOSTNAME)) m.Option(tcp.HOSTNAME, msg.Append(tcp.HOSTNAME))
} else {
// 登录失败
} }
} }
m.Render(ice.RENDER_RESULT) m.Render(ice.RENDER_RESULT)
}}, }},
"/sess": {Name: "/sess", Help: "会话", Action: map[string]*ice.Action{ "/sess": {Name: "/sess", Help: "会话", Action: map[string]*ice.Action{
"logout": {Name: "logout", Help: "退出", Hand: func(m *ice.Message, arg ...string) { LOGOUT: {Name: "logout", Help: "退出", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(mdb.MODIFY, m.Prefix(SESS), "", mdb.HASH, kit.MDB_HASH, m.Option(SID), kit.MDB_STATUS, "logout") m.Cmdy(mdb.MODIFY, m.Prefix(SESS), "", mdb.HASH, kit.MDB_HASH, m.Option(SID), kit.MDB_STATUS, LOGOUT)
}}, }},
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
if strings.TrimSpace(m.Option(SID)) == "" { if m.Option(SID) == "" { // 新建会话
m.Option(SID, m.Cmdx(mdb.INSERT, m.Prefix(SESS), "", mdb.HASH, kit.MDB_STATUS, "login", m.Option(SID, m.Cmdx(mdb.INSERT, m.Prefix(SESS), "", mdb.HASH, kit.MDB_STATUS, LOGIN,
aaa.USERNAME, m.Option(aaa.USERNAME), tcp.HOSTNAME, m.Option(tcp.HOSTNAME), PID, m.Option(PID), PWD, m.Option(PWD))) aaa.USERNAME, m.Option(aaa.USERNAME), tcp.HOSTNAME, m.Option(tcp.HOSTNAME), PID, m.Option(PID), PWD, m.Option(PWD)))
} else { } else { // 复用会话
m.Cmdy(mdb.MODIFY, m.Prefix(SESS), "", mdb.HASH, kit.MDB_HASH, m.Option(SID), kit.MDB_STATUS, "login") m.Cmdy(mdb.MODIFY, m.Prefix(SESS), "", mdb.HASH, kit.MDB_HASH, m.Option(SID), kit.MDB_STATUS, LOGIN)
} }
m.Echo(m.Option(SID)) m.Echo(m.Option(SID))
}}, }},

View File

@ -16,43 +16,26 @@ func init() {
)}, )},
}, },
Commands: map[string]*ice.Command{ Commands: map[string]*ice.Command{
SYNC: {Name: "sync id=auto auto 导出 导入", Help: "同步流", Action: map[string]*ice.Action{ SYNC: {Name: "sync id auto", Help: "同步流", Action: map[string]*ice.Action{
mdb.EXPORT: {Name: "export", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(mdb.EXPORT, m.Prefix(SYNC), "", mdb.LIST)
}},
mdb.IMPORT: {Name: "import", Help: "导入", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(mdb.IMPORT, m.Prefix(SYNC), "", mdb.LIST)
}},
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) { mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
switch arg[0] {
case kit.MDB_TOPIC:
m.Cmdy(m.Prefix(FAVOR)).Appendv(ice.MSG_APPEND, kit.MDB_TOPIC, kit.MDB_COUNT, kit.MDB_TIME)
}
}},
FAVOR: {Name: "favor topic type name text", Help: "收藏", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(m.Prefix(FAVOR), mdb.INSERT, kit.MDB_TOPIC, m.Option(kit.MDB_TOPIC),
kit.MDB_TYPE, m.Option(kit.MDB_TYPE), kit.MDB_NAME, m.Option(kit.MDB_NAME), kit.MDB_TEXT, m.Option(kit.MDB_TEXT))
}}, }},
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
if len(arg) > 0 { if len(arg) > 0 {
m.Option(mdb.FIELDS, mdb.DETAIL) m.Option(mdb.FIELDS, mdb.DETAIL)
m.Option(mdb.CACHE_FILED, kit.MDB_ID)
m.Option(mdb.CACHE_VALUE, arg[0])
} else { } else {
m.Option(mdb.FIELDS, m.Conf(SYNC, kit.META_FIELD)) m.Option(mdb.FIELDS, m.Conf(SYNC, kit.META_FIELD))
m.Option(ice.MSG_CONTROL, ice.CONTROL_PAGE) m.Option(ice.MSG_CONTROL, ice.CONTROL_PAGE)
defer m.PushAction(FAVOR)
} }
m.Cmdy(mdb.SELECT, m.Prefix(SYNC), "", mdb.LIST, m.Option(mdb.CACHE_FILED), m.Option(mdb.CACHE_VALUE)) m.Cmdy(mdb.SELECT, m.Prefix(SYNC), "", mdb.LIST, kit.MDB_ID, arg)
}}, }},
"/sync": {Name: "/sync", Help: "同步", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { "/sync": {Name: "/sync", Help: "同步", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
if m.Option(ARG) == "qa" { if m.Option(ARG) == "qa" {
m.Cmdy(mdb.MODIFY, m.Prefix(SESS), "", mdb.HASH, kit.MDB_HASH, m.Option(SID), kit.MDB_STATUS, "logout") m.Cmd("/sess", LOGOUT)
} }
m.Cmd(mdb.INSERT, m.Prefix(SYNC), "", mdb.LIST, kit.MDB_TYPE, VIMRC, kit.MDB_NAME, arg[0], m.Cmd(mdb.INSERT, m.Prefix(SYNC), "", mdb.LIST, kit.MDB_TYPE, VIMRC,
kit.MDB_TEXT, kit.Select(m.Option(ARG), m.Option(SUB)), kit.MDB_NAME, arg[0], kit.MDB_TEXT, kit.Select(m.Option(ARG), m.Option(SUB)),
PWD, m.Option(PWD), BUF, m.Option(BUF), ROW, m.Option(ROW), COL, m.Option(COL)) PWD, m.Option(PWD), BUF, m.Option(BUF), ROW, m.Option(ROW), COL, m.Option(COL))
}}, }},
}, },

View File

@ -22,7 +22,7 @@ const VIM = "vim"
var Index = &ice.Context{Name: VIM, Help: "编辑器", var Index = &ice.Context{Name: VIM, Help: "编辑器",
Commands: map[string]*ice.Command{ Commands: map[string]*ice.Command{
VIM: {Name: "vim port=auto path=auto auto start build download", Help: "编辑器", Action: map[string]*ice.Action{ VIM: {Name: "vim port path auto start build download", Help: "编辑器", Action: map[string]*ice.Action{
web.DOWNLOAD: {Name: "download", Help: "下载", Hand: func(m *ice.Message, arg ...string) { web.DOWNLOAD: {Name: "download", Help: "下载", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(code.INSTALL, web.DOWNLOAD, m.Conf(VIM, kit.META_SOURCE)) m.Cmdy(code.INSTALL, web.DOWNLOAD, m.Conf(VIM, kit.META_SOURCE))
}}, }},

View File

@ -1,10 +1,9 @@
title "vim" title "vim"
refer "官网" ` refer `
官网 https://www.vim.org 官网 https://www.vim.org
源码 https://github.com/vim/vim 源码 https://github.com/vim/vim
文档 http://vimdoc.sourceforge.net/htmldoc/usr_toc.html 文档 http://vimdoc.sourceforge.net/htmldoc/usr_toc.html
` `
premenu
chapter "源码" chapter "源码"
field "安装" web.code.vim.vim field "安装" web.code.vim.vim
@ -32,17 +31,18 @@ cd ./_install
chapter "应用" chapter "应用"
field "编辑器" web.code.vim.sess field "编辑器" web.code.vim.sess
field "输入法" web.code.vim.input
field "收藏夹" web.code.vim.favor
field "同步流" web.code.vim.sync field "同步流" web.code.vim.sync
field "收藏夹" web.code.vim.favor
field "输入法" web.code.vim.input
chapter "插件" chapter "插件"
field "插件管理器" web.code.inner args `[ usr/intshell/misc/vim/ plug.vim ]` field "插件管理器" web.code.inner args `usr/intshell/misc/vim/ plug.vim`
chapter "配置"
field "启动脚本" web.code.inner args `[ usr/intshell/misc/vim/ vimrc ]`
section "状态栏" section "状态栏"
refer ` refer `
插件 https://github.com/vim-airline/vim-airline 插件 https://github.com/vim-airline/vim-airline
` `
chapter "配置"
field "启动脚本" web.code.inner args `usr/intshell/misc/vim/ vimrc`

View File

@ -628,11 +628,17 @@ func (m *Message) _hand(arg ...interface{}) *Message {
return m return m
} }
if cmd, ok := m.target.Commands[list[0]]; ok {
m.TryCatch(m.Spawn(), true, func(msg *Message) {
m = m.target.cmd(msg, cmd, list[0], list[1:]...)
})
} else {
m.Search(list[0], func(p *Context, s *Context, key string, cmd *Command) { m.Search(list[0], func(p *Context, s *Context, key string, cmd *Command) {
m.TryCatch(m.Spawn(s), true, func(msg *Message) { m.TryCatch(m.Spawn(s), true, func(msg *Message) {
m = s.cmd(msg, cmd, key, list[1:]...) m = s.cmd(msg, cmd, key, list[1:]...)
}) })
}) })
}
if m.Warn(m.Hand == false, ErrNotFound, list) { if m.Warn(m.Hand == false, ErrNotFound, list) {
return m.Set(MSG_RESULT).Cmd("cli.system", list) return m.Set(MSG_RESULT).Cmd("cli.system", list)