mirror of
https://shylinux.com/x/icebergs
synced 2025-04-26 01:24:05 +08:00
opt vim
This commit is contained in:
parent
ccdd142cd9
commit
55cc6bb01f
@ -258,10 +258,10 @@ func init() {
|
||||
}},
|
||||
|
||||
"/volcanos/": {Name: "/volcanos/", Help: "浏览器", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Render(ice.RENDER_DOWNLOAD, path.Join(m.Conf(SERVE, kit.Keym(ice.VOLCANOS, kit.MDB_PATH)), path.Join(arg...)))
|
||||
m.RenderDownload(path.Join(m.Conf(SERVE, kit.Keym(ice.VOLCANOS, kit.MDB_PATH)), path.Join(arg...)))
|
||||
}},
|
||||
"/intshell/": {Name: "/intshell/", Help: "命令行", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Render(ice.RENDER_DOWNLOAD, path.Join(m.Conf(SERVE, kit.Keym(ice.INTSHELL, kit.MDB_PATH)), path.Join(arg...)))
|
||||
m.RenderDownload(path.Join(m.Conf(SERVE, kit.Keym(ice.INTSHELL, kit.MDB_PATH)), path.Join(arg...)))
|
||||
}},
|
||||
"/publish/": {Name: "/publish/", Help: "私有云", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
_share_local(m, m.Conf(SERVE, kit.Keym(ice.PUBLISH)), path.Join(arg...))
|
||||
|
@ -6,6 +6,7 @@ import (
|
||||
|
||||
ice "github.com/shylinux/icebergs"
|
||||
"github.com/shylinux/icebergs/base/aaa"
|
||||
"github.com/shylinux/icebergs/base/cli"
|
||||
"github.com/shylinux/icebergs/base/ctx"
|
||||
"github.com/shylinux/icebergs/base/mdb"
|
||||
"github.com/shylinux/icebergs/base/web"
|
||||
@ -186,5 +187,18 @@ func init() {
|
||||
|
||||
_action_show(m, arg[0], arg[1], arg[2], arg[3:]...)
|
||||
}},
|
||||
"/cmd/": {Name: "/cmd/", Help: "命令", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.RenderDownload(path.Join(m.Conf(web.SERVE, kit.Keym(ice.VOLCANOS, kit.MDB_PATH)), "page/cmd.html"))
|
||||
}},
|
||||
"/cmd": {Name: "/cmd", Help: "命令", Action: map[string]*ice.Action{
|
||||
ctx.COMMAND: {Name: "command", Help: "命令", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(ctx.COMMAND, arg)
|
||||
}},
|
||||
cli.RUN: {Name: "command", Help: "命令", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(arg)
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Debug("waht %v %v", cmd, arg)
|
||||
}},
|
||||
}})
|
||||
}
|
||||
|
@ -31,9 +31,12 @@ func _header_check(m *ice.Message) {
|
||||
}
|
||||
}
|
||||
func _header_share(m *ice.Message, arg ...string) {
|
||||
share := m.Cmdx(web.SHARE, mdb.CREATE, kit.MDB_TYPE, web.LOGIN, arg)
|
||||
if m.Option(kit.MDB_LINK) == "" {
|
||||
share := m.Cmdx(web.SHARE, mdb.CREATE, kit.MDB_TYPE, web.LOGIN, arg)
|
||||
m.Option(kit.MDB_LINK, kit.MergeURL(m.Option(ice.MSG_USERWEB), web.SHARE, share))
|
||||
}
|
||||
|
||||
link := kit.MergeURL(m.Option(ice.MSG_USERWEB), web.SHARE, share)
|
||||
link := m.Option(kit.MDB_LINK)
|
||||
if strings.Contains(link, tcp.LOCALHOST) {
|
||||
link = strings.Replace(link, tcp.LOCALHOST, m.Cmd(tcp.HOST, ice.OptionFields(tcp.IP)).Append(tcp.IP), 1)
|
||||
}
|
||||
|
37
misc.go
37
misc.go
@ -248,6 +248,28 @@ func (m *Message) FormatMeta() string { return m.Format("meta") }
|
||||
func (m *Message) FormatSize() string { return m.Format("size") }
|
||||
func (m *Message) FormatCost() string { return m.Format("cost") }
|
||||
|
||||
func (m *Message) Render(cmd string, args ...interface{}) *Message {
|
||||
m.Optionv(MSG_OUTPUT, cmd)
|
||||
m.Optionv(MSG_ARGS, args)
|
||||
|
||||
switch cmd {
|
||||
case RENDER_TEMPLATE: // text [data [type]]
|
||||
if len(args) == 1 {
|
||||
args = append(args, m)
|
||||
}
|
||||
if res, err := kit.Render(args[0].(string), args[1]); m.Assert(err) {
|
||||
m.Echo(string(res))
|
||||
}
|
||||
}
|
||||
return m
|
||||
}
|
||||
func (m *Message) RenderResult(args ...interface{}) *Message {
|
||||
return m.Render(RENDER_RESULT, args...)
|
||||
}
|
||||
func (m *Message) RenderDownload(args ...interface{}) *Message {
|
||||
return m.Render(RENDER_DOWNLOAD, args...)
|
||||
}
|
||||
|
||||
type Sort struct {
|
||||
Fields string
|
||||
Method string
|
||||
@ -394,21 +416,6 @@ func (m *Message) Cut(fields ...string) *Message {
|
||||
m.meta[MSG_APPEND] = strings.Split(strings.Join(fields, ","), ",")
|
||||
return m
|
||||
}
|
||||
func (m *Message) Render(cmd string, args ...interface{}) *Message {
|
||||
m.Optionv(MSG_OUTPUT, cmd)
|
||||
m.Optionv(MSG_ARGS, args)
|
||||
|
||||
switch cmd {
|
||||
case RENDER_TEMPLATE: // text [data [type]]
|
||||
if len(args) == 1 {
|
||||
args = append(args, m)
|
||||
}
|
||||
if res, err := kit.Render(args[0].(string), args[1]); m.Assert(err) {
|
||||
m.Echo(string(res))
|
||||
}
|
||||
}
|
||||
return m
|
||||
}
|
||||
func (m *Message) Parse(meta string, key string, arg ...string) *Message {
|
||||
list := []string{}
|
||||
for _, line := range kit.Split(strings.Join(arg, " "), "\n") {
|
||||
|
@ -68,14 +68,14 @@ func init() {
|
||||
m.Echo(m.Option(SID))
|
||||
}},
|
||||
SESS: {Name: "sess hash auto prunes", Help: "会话流", Action: map[string]*ice.Action{
|
||||
mdb.PRUNES: {Name: "prunes", Help: "清理", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.OptionFields(m.Conf(SESS, kit.META_FIELD))
|
||||
m.Cmdy(mdb.PRUNES, m.Prefix(SESS), "", mdb.HASH, kit.MDB_STATUS, aaa.LOGOUT)
|
||||
}},
|
||||
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.OptionFields(m.Conf(SESS, kit.META_FIELD))
|
||||
m.Cmdy(mdb.DELETE, m.Prefix(SESS), "", mdb.HASH, m.OptionSimple(kit.MDB_HASH))
|
||||
}},
|
||||
mdb.PRUNES: {Name: "prunes", Help: "清理", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.OptionFields(m.Conf(SESS, kit.META_FIELD))
|
||||
m.Cmdy(mdb.PRUNES, m.Prefix(SESS), "", mdb.HASH, kit.MDB_STATUS, aaa.LOGOUT)
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Fields(len(arg) == 0, m.Conf(SESS, kit.META_FIELD))
|
||||
m.Cmdy(mdb.SELECT, m.Prefix(SESS), "", mdb.HASH, kit.MDB_HASH, arg)
|
||||
|
@ -7,92 +7,78 @@ import (
|
||||
"github.com/shylinux/icebergs/base/mdb"
|
||||
"github.com/shylinux/icebergs/core/code"
|
||||
kit "github.com/shylinux/toolkits"
|
||||
|
||||
"strings"
|
||||
)
|
||||
|
||||
const (
|
||||
TAB = "tab"
|
||||
NOTE = "note"
|
||||
)
|
||||
const FAVOR = "favor"
|
||||
|
||||
func init() {
|
||||
Index.Merge(&ice.Context{
|
||||
Configs: map[string]*ice.Config{
|
||||
FAVOR: {Name: FAVOR, Help: "收藏夹", Value: kit.Data(
|
||||
kit.MDB_SHORT, kit.MDB_TOPIC, kit.MDB_FIELD, "time,id,type,name,text,file,line",
|
||||
kit.MDB_SHORT, kit.MDB_ZONE, kit.MDB_FIELD, "time,id,type,name,text,file,line,pwd",
|
||||
)},
|
||||
},
|
||||
Commands: map[string]*ice.Command{
|
||||
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) {
|
||||
"/favor": {Name: "/favor", Help: "收藏", Action: map[string]*ice.Action{
|
||||
mdb.SELECT: {Name: "select", Help: "主题", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmd(FAVOR).Table(func(index int, value map[string]string, head []string) {
|
||||
m.Echo(value[kit.MDB_ZONE]).Echo("\n")
|
||||
})
|
||||
}},
|
||||
mdb.INSERT: {Name: "insert", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmd(FAVOR, mdb.INSERT, m.OptionSimple("zone,type,name,text,file,line,pwd"))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Cmd(FAVOR, m.Option(kit.MDB_ZONE)).Table(func(index int, value map[string]string, head []string) {
|
||||
m.Echo("%v\n", m.Option(kit.MDB_ZONE)).Echo("%v:%v:%v:(%v): %v\n",
|
||||
value[kit.MDB_FILE], value[kit.MDB_LINE], "1", value[kit.MDB_NAME], value[kit.MDB_TEXT])
|
||||
})
|
||||
}},
|
||||
FAVOR: {Name: "favor zone id auto create export import", Help: "收藏夹", Action: map[string]*ice.Action{
|
||||
mdb.CREATE: {Name: "create zone", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.INSERT, m.Prefix(FAVOR), "", mdb.HASH, arg)
|
||||
}},
|
||||
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), kit.SubKey(m.Option(kit.MDB_TOPIC)), mdb.LIST, arg[2:])
|
||||
mdb.INSERT: {Name: "insert zone=数据结构 name=hi text=hello file line", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.INSERT, m.Prefix(FAVOR), "", mdb.HASH, m.OptionSimple(kit.MDB_ZONE))
|
||||
m.Cmdy(mdb.INSERT, m.Prefix(FAVOR), kit.KeyHash(m.Option(kit.MDB_ZONE)), mdb.LIST, arg[2:])
|
||||
}},
|
||||
mdb.MODIFY: {Name: "modify", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.MODIFY, m.Prefix(FAVOR), kit.SubKey(m.Option(kit.MDB_TOPIC)), mdb.LIST, kit.MDB_ID, m.Option(kit.MDB_ID), arg)
|
||||
m.Cmdy(mdb.MODIFY, m.Prefix(FAVOR), "", mdb.ZONE, m.Option(kit.MDB_ZONE), m.Option(kit.MDB_ID), arg)
|
||||
}},
|
||||
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.DELETE, m.Prefix(FAVOR), "", mdb.HASH, kit.MDB_TOPIC, m.Option(kit.MDB_TOPIC))
|
||||
m.Cmdy(mdb.DELETE, m.Prefix(FAVOR), "", mdb.ZONE, m.OptionSimple(kit.MDB_ZONE))
|
||||
}},
|
||||
mdb.EXPORT: {Name: "export", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.EXPORT, m.Prefix(FAVOR), "", mdb.HASH)
|
||||
m.OptionFields(kit.MDB_ZONE, m.Conf(FAVOR, kit.META_FIELD))
|
||||
m.Cmdy(mdb.EXPORT, m.Prefix(FAVOR), "", mdb.ZONE)
|
||||
m.Conf(FAVOR, kit.MDB_HASH, "")
|
||||
}},
|
||||
mdb.IMPORT: {Name: "import", Help: "导入", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.IMPORT, m.Prefix(FAVOR), "", mdb.HASH)
|
||||
m.Cmdy(mdb.IMPORT, m.Prefix(FAVOR), "", mdb.ZONE)
|
||||
}},
|
||||
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||
switch arg[0] {
|
||||
case kit.MDB_TOPIC:
|
||||
case kit.MDB_ZONE:
|
||||
m.Cmdy(mdb.INPUTS, m.Prefix(FAVOR), "", mdb.HASH, arg)
|
||||
default:
|
||||
m.Cmdy(mdb.INPUTS, m.Prefix(FAVOR), kit.SubKey(m.Option(kit.MDB_TOPIC)), mdb.LIST, arg)
|
||||
m.Cmdy(mdb.INPUTS, m.Prefix(FAVOR), kit.KeyHash(m.Option(kit.MDB_ZONE)), mdb.LIST, arg)
|
||||
}
|
||||
}},
|
||||
code.INNER: {Name: "inner", Help: "源码", Hand: func(m *ice.Message, arg ...string) {
|
||||
if len(arg) > 0 && arg[0] == mdb.RENDER {
|
||||
m.Cmdy(code.INNER, arg[1:])
|
||||
return
|
||||
}
|
||||
|
||||
m.ShowPlugin("", code.INNER, mdb.RENDER)
|
||||
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)}))
|
||||
m.ProcessCommand(code.INNER, kit.Format([]string{
|
||||
kit.Select("./", path.Dir(m.Option(kit.MDB_FILE))),
|
||||
path.Base(m.Option(kit.MDB_FILE)),
|
||||
m.Option(kit.MDB_LINE),
|
||||
}), arg...)
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
m.Option(mdb.FIELDS, "time,count,topic")
|
||||
m.Cmdy(mdb.SELECT, m.Prefix(FAVOR), "", mdb.HASH)
|
||||
m.Fields(len(arg) < 2, kit.Select(m.Conf(FAVOR, kit.META_FIELD), "time,zone,count", len(arg) == 0))
|
||||
if m.Cmdy(mdb.SELECT, m.Prefix(FAVOR), "", mdb.ZONE, arg); len(arg) == 0 {
|
||||
m.Action(mdb.CREATE)
|
||||
m.PushAction(mdb.REMOVE)
|
||||
return
|
||||
} else {
|
||||
m.PushAction(code.INNER)
|
||||
}
|
||||
|
||||
m.Option(mdb.FIELDS, kit.Select(m.Conf(m.Prefix(FAVOR), kit.META_FIELD), mdb.DETAIL, len(arg) > 1))
|
||||
m.Cmdy(mdb.SELECT, m.Prefix(FAVOR), kit.SubKey(arg[0]), mdb.LIST, kit.MDB_ID, arg[1:])
|
||||
m.PushAction(code.INNER)
|
||||
}},
|
||||
|
||||
"/favor": {Name: "/favor", Help: "收藏", Action: map[string]*ice.Action{
|
||||
mdb.INSERT: {Name: "insert", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmd(FAVOR, mdb.INSERT, kit.MDB_TOPIC, m.Option(TAB), kit.MDB_NAME, m.Option(NOTE),
|
||||
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) {
|
||||
list := []string{}
|
||||
m.Cmd(FAVOR).Table(func(index int, value map[string]string, head []string) {
|
||||
list = append(list, value[kit.MDB_TOPIC])
|
||||
})
|
||||
m.Echo(strings.Join(list, "\n"))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...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",
|
||||
value[kit.MDB_FILE], value[kit.MDB_LINE], "1", value[kit.MDB_NAME], value[kit.MDB_TEXT])
|
||||
})
|
||||
}},
|
||||
},
|
||||
})
|
||||
|
@ -1,14 +1,17 @@
|
||||
package vim
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
ice "github.com/shylinux/icebergs"
|
||||
"github.com/shylinux/icebergs/base/cli"
|
||||
"github.com/shylinux/icebergs/base/mdb"
|
||||
kit "github.com/shylinux/toolkits"
|
||||
|
||||
"strings"
|
||||
)
|
||||
|
||||
const (
|
||||
PERSON = "person"
|
||||
)
|
||||
const INPUT = "input"
|
||||
|
||||
func init() {
|
||||
@ -19,28 +22,15 @@ func init() {
|
||||
)},
|
||||
},
|
||||
Commands: map[string]*ice.Command{
|
||||
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) {
|
||||
m.Cmdy(mdb.EXPORT, m.Prefix(INPUT), "", mdb.LIST)
|
||||
}},
|
||||
mdb.IMPORT: {Name: "import", Help: "导入", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.IMPORT, m.Prefix(INPUT), "", mdb.LIST)
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Option(mdb.FIELDS, kit.Select(m.Conf(INPUT, kit.META_FIELD), mdb.DETAIL, len(arg) > 0))
|
||||
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) {
|
||||
if arg[0] = strings.TrimSpace(arg[0]); strings.HasPrefix(arg[0], "ice ") {
|
||||
switch list := kit.Split(arg[0]); list[1] {
|
||||
case "add":
|
||||
// ice add 想你 shwq [9999 [person]]
|
||||
m.Cmd("web.code.input.wubi", "insert", "text", list[2], "code", list[3],
|
||||
"weight", kit.Select("999999", list, 4), "zone", kit.Select("person", list, 5))
|
||||
case "add": // ice add 想你 shwq [person [9999]]
|
||||
m.Cmd("web.code.input.wubi", mdb.INSERT, kit.MDB_TEXT, list[2], kit.MDB_CODE, list[3],
|
||||
kit.MDB_ZONE, kit.Select(PERSON, list, 4), kit.MDB_VALUE, kit.Select("999999", list, 5),
|
||||
)
|
||||
arg[0] = list[3]
|
||||
default:
|
||||
// ice command
|
||||
if m.Cmdy(list[1:]); strings.TrimSpace(m.Result()) == "" {
|
||||
m.Table()
|
||||
}
|
||||
@ -56,11 +46,21 @@ func init() {
|
||||
|
||||
// 词汇列表
|
||||
m.Cmd("web.code.input.wubi", "word", arg[0]).Table(func(index int, value map[string]string, head []string) {
|
||||
m.Echo("%s\n", value["text"])
|
||||
m.Echo("%s\n", value[kit.MDB_TEXT])
|
||||
})
|
||||
|
||||
m.Cmd(mdb.INSERT, m.Prefix(INPUT), "", mdb.LIST, kit.MDB_TYPE, "wubi", kit.MDB_NAME, arg[0], kit.MDB_TEXT, m.Result())
|
||||
}},
|
||||
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) {
|
||||
m.Cmdy(mdb.EXPORT, m.Prefix(INPUT), "", mdb.LIST)
|
||||
}},
|
||||
mdb.IMPORT: {Name: "import", Help: "导入", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.IMPORT, m.Prefix(INPUT), "", mdb.LIST)
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Fields(len(arg) == 0, m.Conf(INPUT, kit.META_FIELD))
|
||||
m.Cmdy(mdb.SELECT, m.Prefix(INPUT), "", mdb.LIST, kit.MDB_ID, arg)
|
||||
}},
|
||||
},
|
||||
})
|
||||
}
|
||||
|
@ -1,31 +1,26 @@
|
||||
package vim
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"strings"
|
||||
|
||||
ice "github.com/shylinux/icebergs"
|
||||
"github.com/shylinux/icebergs/base/aaa"
|
||||
"github.com/shylinux/icebergs/base/cli"
|
||||
"github.com/shylinux/icebergs/base/mdb"
|
||||
"github.com/shylinux/icebergs/base/tcp"
|
||||
"github.com/shylinux/icebergs/base/web"
|
||||
kit "github.com/shylinux/toolkits"
|
||||
|
||||
"io/ioutil"
|
||||
"strings"
|
||||
)
|
||||
|
||||
const (
|
||||
SID = "sid"
|
||||
ARG = "arg"
|
||||
SUB = "sub"
|
||||
PWD = "pwd"
|
||||
PID = "pid"
|
||||
BUF = "buf"
|
||||
ROW = "row"
|
||||
COL = "col"
|
||||
)
|
||||
const (
|
||||
LOGOUT = "logout"
|
||||
LOGIN = "login"
|
||||
)
|
||||
const SESS = "sess"
|
||||
|
||||
func init() {
|
||||
@ -36,48 +31,56 @@ func init() {
|
||||
)},
|
||||
},
|
||||
Commands: map[string]*ice.Command{
|
||||
SESS: {Name: "sess hash auto prunes", Help: "会话流", Action: map[string]*ice.Action{
|
||||
mdb.PRUNES: {Name: "prunes", Help: "清理", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Option(mdb.FIELDS, m.Conf(SESS, kit.META_FIELD))
|
||||
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) {
|
||||
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)
|
||||
}},
|
||||
|
||||
web.WEB_LOGIN: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
if f, _, e := m.R.FormFile(SUB); e == nil {
|
||||
defer f.Close()
|
||||
// 文件参数
|
||||
if b, e := ioutil.ReadAll(f); e == nil {
|
||||
m.Option(SUB, string(b))
|
||||
m.Option(SUB, string(b)) // 文件参数
|
||||
}
|
||||
}
|
||||
|
||||
if sid := strings.TrimSpace(m.Option(SID)); m.Option(SID, sid) != "" {
|
||||
if msg := m.Cmd(SESS, sid); msg.Append(kit.MDB_STATUS) != "" {
|
||||
m.Option(aaa.USERNAME, msg.Append(aaa.USERNAME))
|
||||
m.Option(tcp.HOSTNAME, msg.Append(tcp.HOSTNAME))
|
||||
} else {
|
||||
// 登录失败
|
||||
}
|
||||
switch m.Render(ice.RENDER_RESULT); m.R.URL.String() {
|
||||
case "/qrcode", "/sess": // 登录入口
|
||||
return
|
||||
}
|
||||
m.Render(ice.RENDER_RESULT)
|
||||
|
||||
if m.Warn(m.Option(SID, strings.TrimSpace(m.Option(SID))) == "", ice.ErrNotLogin) {
|
||||
return
|
||||
}
|
||||
|
||||
msg := m.Cmd(mdb.SELECT, m.Prefix(SESS), "", mdb.HASH, kit.MDB_HASH, m.Option(SID),
|
||||
ice.OptionFields(m.Conf(SESS, kit.META_FIELD)))
|
||||
m.Option(aaa.USERNAME, msg.Append(aaa.USERNAME))
|
||||
m.Option(tcp.HOSTNAME, msg.Append(tcp.HOSTNAME))
|
||||
m.Warn(m.Option(aaa.USERNAME) == "", ice.ErrNotLogin)
|
||||
}},
|
||||
"/sess": {Name: "/sess", Help: "会话", Action: map[string]*ice.Action{
|
||||
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)
|
||||
aaa.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, aaa.LOGOUT)
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
if m.Option(SID) == "" { // 新建会话
|
||||
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)))
|
||||
} else { // 复用会话
|
||||
m.Cmdy(mdb.MODIFY, m.Prefix(SESS), "", mdb.HASH, kit.MDB_HASH, m.Option(SID), kit.MDB_STATUS, LOGIN)
|
||||
if m.Option(SID) == "" {
|
||||
m.Option(SID, m.Cmdx(mdb.INSERT, m.Prefix(SESS), "", mdb.HASH, kit.MDB_STATUS, aaa.LOGIN,
|
||||
m.OptionSimple(aaa.USERNAME, tcp.HOSTNAME, cli.PID, cli.PWD)))
|
||||
} else {
|
||||
m.Cmdy(mdb.MODIFY, m.Prefix(SESS), "", mdb.HASH, kit.MDB_HASH, m.Option(SID), kit.MDB_STATUS, aaa.LOGIN)
|
||||
}
|
||||
m.Echo(m.Option(SID))
|
||||
}},
|
||||
SESS: {Name: "sess hash auto prunes", Help: "会话流", Action: map[string]*ice.Action{
|
||||
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.OptionFields(m.Conf(SESS, kit.META_FIELD))
|
||||
m.Cmdy(mdb.DELETE, m.Prefix(SESS), "", mdb.HASH, m.OptionSimple(kit.MDB_HASH))
|
||||
}},
|
||||
mdb.PRUNES: {Name: "prunes", Help: "清理", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.OptionFields(m.Conf(SESS, kit.META_FIELD))
|
||||
m.Cmdy(mdb.PRUNES, m.Prefix(SESS), "", mdb.HASH, kit.MDB_STATUS, aaa.LOGOUT)
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Fields(len(arg) == 0, m.Conf(SESS, kit.META_FIELD))
|
||||
m.Cmdy(mdb.SELECT, m.Prefix(SESS), "", mdb.HASH, kit.MDB_HASH, arg)
|
||||
m.PushAction(mdb.REMOVE)
|
||||
}},
|
||||
},
|
||||
})
|
||||
}
|
||||
|
@ -2,41 +2,50 @@ package vim
|
||||
|
||||
import (
|
||||
ice "github.com/shylinux/icebergs"
|
||||
"github.com/shylinux/icebergs/base/aaa"
|
||||
"github.com/shylinux/icebergs/base/cli"
|
||||
"github.com/shylinux/icebergs/base/mdb"
|
||||
kit "github.com/shylinux/toolkits"
|
||||
)
|
||||
|
||||
const _sync_index = 1
|
||||
|
||||
func _sync_count(m *ice.Message) string {
|
||||
return m.Conf(SYNC, kit.Keym(kit.MDB_COUNT))
|
||||
}
|
||||
|
||||
const SYNC = "sync"
|
||||
|
||||
func init() {
|
||||
Index.Merge(&ice.Context{
|
||||
Configs: map[string]*ice.Config{
|
||||
SYNC: {Name: SYNC, Help: "同步流", Value: kit.Data(
|
||||
kit.MDB_FIELD, "time,id,type,name,text",
|
||||
kit.MDB_FIELD, "time,id,type,name,text,pwd,username,hostname",
|
||||
)},
|
||||
},
|
||||
Commands: map[string]*ice.Command{
|
||||
SYNC: {Name: "sync id auto", Help: "同步流", Action: map[string]*ice.Action{
|
||||
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
if len(arg) > 0 {
|
||||
m.Option(mdb.FIELDS, mdb.DETAIL)
|
||||
} else {
|
||||
m.Option(mdb.FIELDS, m.Conf(SYNC, kit.META_FIELD))
|
||||
}
|
||||
|
||||
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) {
|
||||
switch m.Option(ARG) {
|
||||
case "wq", "q", "qa":
|
||||
m.Cmd("/sess", LOGOUT)
|
||||
m.Cmd("/sess", aaa.LOGOUT)
|
||||
}
|
||||
|
||||
m.Cmd(mdb.INSERT, m.Prefix(SYNC), "", mdb.LIST, kit.MDB_TYPE, VIMRC,
|
||||
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))
|
||||
cli.PWD, m.Option(cli.PWD), BUF, m.Option(BUF), ROW, m.Option(ROW), COL, m.Option(COL))
|
||||
}},
|
||||
SYNC: {Name: "sync id auto page", Help: "同步流", Action: map[string]*ice.Action{
|
||||
mdb.PREV: {Name: "prev", Help: "上一页", Hand: func(m *ice.Message, arg ...string) {
|
||||
mdb.PrevPage(m, _sync_count(m), kit.Slice(arg, _sync_index)...)
|
||||
}},
|
||||
mdb.NEXT: {Name: "next", Help: "下一页", Hand: func(m *ice.Message, arg ...string) {
|
||||
mdb.NextPage(m, _sync_count(m), kit.Slice(arg, _sync_index)...)
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.OptionPage(kit.Slice(arg, _sync_index)...)
|
||||
m.Fields(len(arg) == 0 || arg[0] == "", m.Conf(SYNC, kit.META_FIELD))
|
||||
m.Cmdy(mdb.SELECT, m.Prefix(SYNC), "", mdb.LIST, kit.MDB_ID, arg)
|
||||
m.StatusTimeCountTotal(_sync_count(m))
|
||||
}},
|
||||
},
|
||||
})
|
||||
|
111
misc/vim/vim.go
111
misc/vim/vim.go
@ -1,6 +1,8 @@
|
||||
package vim
|
||||
|
||||
import (
|
||||
"path"
|
||||
|
||||
ice "github.com/shylinux/icebergs"
|
||||
"github.com/shylinux/icebergs/base/cli"
|
||||
"github.com/shylinux/icebergs/base/mdb"
|
||||
@ -8,13 +10,10 @@ import (
|
||||
"github.com/shylinux/icebergs/base/web"
|
||||
"github.com/shylinux/icebergs/core/code"
|
||||
kit "github.com/shylinux/toolkits"
|
||||
|
||||
"path"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func _vim_pkg(m *ice.Message) string {
|
||||
return strings.Replace(strings.Replace(kit.TrimExt(m.Conf(VIM, kit.META_SOURCE)), ".", "", -1), "-", "", -1)
|
||||
return kit.Replace(kit.TrimExt(m.Conf(VIM, kit.Keym(cli.BUILD))), "_.", "")
|
||||
}
|
||||
|
||||
const VIMRC = "vimrc"
|
||||
@ -24,41 +23,23 @@ var Index = &ice.Context{Name: VIM, Help: "编辑器",
|
||||
Commands: map[string]*ice.Command{
|
||||
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) {
|
||||
m.Cmdy(code.INSTALL, web.DOWNLOAD, m.Conf(VIM, kit.META_SOURCE))
|
||||
m.Cmdy(code.INSTALL, web.DOWNLOAD, m.Conf(VIM, kit.Keym(cli.SOURCE)))
|
||||
}},
|
||||
cli.BUILD: {Name: "build", Help: "构建", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(code.INSTALL, cli.BUILD, _vim_pkg(m), m.Confv(VIM, "meta.build"))
|
||||
m.Cmdy(code.INSTALL, cli.BUILD, _vim_pkg(m), m.Confv(VIM, kit.Keym(cli.BUILD)))
|
||||
}},
|
||||
cli.START: {Name: "start", Help: "启动", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Optionv("prepare", func(p string) []string {
|
||||
list := kit.Simple(m.Confv(VIM, "meta.start"))
|
||||
for i := 0; i < len(list); i += 2 {
|
||||
m.Cmd(web.SPIDE, web.SPIDE_DEV, web.SPIDE_SAVE, path.Join(p, list[i]),
|
||||
web.SPIDE_GET, "/share/local/usr/intshell/misc/vim/"+list[i+1])
|
||||
}
|
||||
return []string{}
|
||||
return []string{"-T", "screen", "-c", "PlugInstall", "-c", "exit", "-c", "exit"}
|
||||
})
|
||||
m.Cmdy(code.INSTALL, cli.START, _vim_pkg(m), "bin/vim")
|
||||
|
||||
// 安装插件
|
||||
m.Echo("\n")
|
||||
m.Echo("vim -c PlugInstall\n")
|
||||
m.Echo("vim -c GoInstallBinaries\n")
|
||||
}},
|
||||
|
||||
mdb.PLUGIN: {Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Echo(m.Conf(VIM, "meta.plug"))
|
||||
m.Echo(m.Conf(VIM, kit.Keym(code.PLUG)))
|
||||
}},
|
||||
mdb.RENDER: {Hand: func(m *ice.Message, arg ...string) {
|
||||
if strings.HasPrefix(arg[2], "http") {
|
||||
m.Cmdy(web.SPIDE, web.SPIDE_DEV, web.SPIDE_RAW, web.SPIDE_GET, arg[2]+arg[1])
|
||||
return
|
||||
}
|
||||
m.Cmdy(nfs.CAT, path.Join(arg[2], arg[1]))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Cmdy(code.INSTALL, path.Base(m.Conf(VIM, kit.META_SOURCE)), arg)
|
||||
m.Cmdy(code.INSTALL, path.Base(m.Conf(VIM, kit.Keym(cli.SOURCE))), arg)
|
||||
}},
|
||||
|
||||
ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
@ -73,74 +54,40 @@ var Index = &ice.Context{Name: VIM, Help: "编辑器",
|
||||
}},
|
||||
},
|
||||
Configs: map[string]*ice.Config{
|
||||
VIM: {Name: "vim", Help: "编辑器", Value: kit.Data(
|
||||
"source", "http://ftp.vim.org/pub/vim/unix/vim-8.1.tar.bz2",
|
||||
"build", []interface{}{
|
||||
VIM: {Name: VIM, Help: "编辑器", Value: kit.Data(
|
||||
cli.SOURCE, "http://ftp.vim.org/pub/vim/unix/vim-8.1.tar.bz2",
|
||||
cli.BUILD, []interface{}{
|
||||
"--enable-multibyte=yes",
|
||||
"--enable-pythoninterp=yes",
|
||||
"--enable-luainterp=yes",
|
||||
"--enable-cscope=yes",
|
||||
},
|
||||
"start", []interface{}{
|
||||
".vimrc", "vimrc",
|
||||
".vim/autoload/plug.vim", "plug.vim",
|
||||
".vim/autoload/auto.vim", "auto.vim",
|
||||
".vim/syntax/javascript.vim", "javascript.vim",
|
||||
".vim/syntax/shy.vim", "shy.vim",
|
||||
".vim/syntax/shy.vim", "sh.vim",
|
||||
".vim/syntax/go.vim", "go.vim",
|
||||
},
|
||||
|
||||
"plug", kit.Dict(
|
||||
"split", kit.Dict(
|
||||
code.PLUG, kit.Dict(
|
||||
code.SPLIT, kit.Dict(
|
||||
"space", " \t",
|
||||
"operator", "{[(&.,;!|<>)]}",
|
||||
),
|
||||
"prefix", kit.Dict(
|
||||
code.PREFIX, kit.Dict(
|
||||
"\"", "comment",
|
||||
),
|
||||
"keyword", kit.Dict(
|
||||
"colorscheme", "keyword",
|
||||
"highlight", "keyword",
|
||||
"syntax", "keyword",
|
||||
"_keyword", kit.Dict(
|
||||
code.KEYWORD, kit.Simple(
|
||||
"source", "finish",
|
||||
"set", "let", "end",
|
||||
"if", "else", "elseif", "endif",
|
||||
"for", "in", "continue", "break", "endfor",
|
||||
"try", "catch", "finally", "endtry",
|
||||
"call", "function", "return", "endfunction",
|
||||
|
||||
"nnoremap", "keyword",
|
||||
"cnoremap", "keyword",
|
||||
"inoremap", "keyword",
|
||||
|
||||
"autocmd", "keyword",
|
||||
"command", "keyword",
|
||||
"execute", "keyword",
|
||||
|
||||
"set", "keyword",
|
||||
"let", "keyword",
|
||||
"if", "keyword",
|
||||
"else", "keyword",
|
||||
"elseif", "keyword",
|
||||
"endif", "keyword",
|
||||
"end", "keyword",
|
||||
"for", "keyword",
|
||||
"in", "keyword",
|
||||
"continue", "keyword",
|
||||
"break", "keyword",
|
||||
"endfor", "keyword",
|
||||
"try", "keyword",
|
||||
"catch", "keyword",
|
||||
"finally", "keyword",
|
||||
"endtry", "keyword",
|
||||
|
||||
"call", "keyword",
|
||||
"return", "keyword",
|
||||
"source", "keyword",
|
||||
"finish", "keyword",
|
||||
"function", "keyword",
|
||||
"endfunction", "keyword",
|
||||
|
||||
"has", "function",
|
||||
"type", "function",
|
||||
"empty", "function",
|
||||
"exists", "function",
|
||||
"executable", "function",
|
||||
"autocmd", "command", "execute",
|
||||
"nnoremap", "cnoremap", "inoremap",
|
||||
"colorscheme", "highlight", "syntax",
|
||||
),
|
||||
code.FUNCTION, kit.Simple(
|
||||
"has", "type", "empty",
|
||||
"exists", "executable",
|
||||
),
|
||||
),
|
||||
),
|
||||
)},
|
||||
|
@ -8,8 +8,6 @@ refer `
|
||||
chapter "源码"
|
||||
field "安装" web.code.vim.vim
|
||||
field "源码" web.code.inner args `usr/install/vim81/ src/main.c 110`
|
||||
field "脚本" web.code.inner args `usr/install/vim81/_install/share/vim/vim81/ filetype.vim`
|
||||
field "文档" web.code.inner args `usr/install/vim81/_install/share/vim/vim81/doc/ help.txt`
|
||||
|
||||
section "构建"
|
||||
spark shell `
|
||||
@ -34,6 +32,7 @@ field "编辑器" web.code.vim.sess
|
||||
field "同步流" web.code.vim.sync
|
||||
field "收藏夹" web.code.vim.favor
|
||||
field "输入法" web.code.vim.input
|
||||
return
|
||||
|
||||
chapter "插件"
|
||||
field "插件管理器" web.code.inner args `usr/intshell/misc/vim/ plug.vim`
|
||||
@ -46,3 +45,5 @@ refer `
|
||||
chapter "配置"
|
||||
field "启动脚本" web.code.inner args `usr/intshell/misc/vim/ vimrc`
|
||||
|
||||
field "脚本" web.code.inner args `usr/install/vim81/_install/share/vim/vim81/ filetype.vim`
|
||||
field "文档" web.code.inner args `usr/install/vim81/_install/share/vim/vim81/doc/ help.txt`
|
||||
|
Loading…
x
Reference in New Issue
Block a user