mirror of
https://shylinux.com/x/icebergs
synced 2025-05-04 20:37:00 +08:00
opt bash
This commit is contained in:
parent
559fdfdafd
commit
9996a38bde
@ -36,6 +36,9 @@ func _hash_insert(m *ice.Message, prefix, chain string, arg ...string) {
|
||||
m.Echo(m.Rich(prefix, chain, kit.Data(arg)))
|
||||
}
|
||||
func _hash_delete(m *ice.Message, prefix, chain, field, value string) {
|
||||
if field != kit.MDB_HASH {
|
||||
field, value = kit.MDB_HASH, kit.Select(kit.Hashs(value), m.Option(kit.MDB_HASH))
|
||||
}
|
||||
m.Richs(prefix, chain, value, func(key string, val map[string]interface{}) {
|
||||
m.Log_DELETE(kit.MDB_KEY, path.Join(prefix, chain), field, value, kit.MDB_VALUE, kit.Format(val))
|
||||
m.Conf(prefix, kit.Keys(chain, kit.MDB_HASH, key), "")
|
||||
|
@ -17,7 +17,7 @@ var Index = &ice.Context{Name: BASH, Help: "命令行", Configs: map[string]*ice
|
||||
}, Commands: map[string]*ice.Command{
|
||||
BASH: {Name: "bash path auto order build download", Help: "命令行", Action: ice.MergeAction(map[string]*ice.Action{
|
||||
cli.ORDER: {Name: "order", Help: "加载", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmd(code.INSTALL, cli.ORDER, m.Config(cli.SOURCE), "_install/bin")
|
||||
m.Cmdy(code.INSTALL, cli.ORDER, m.Config(cli.SOURCE), "_install/bin")
|
||||
}},
|
||||
}, code.InstallAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Cmdy(code.INSTALL, cli.SOURCE, m.Config(cli.SOURCE), arg)
|
||||
|
@ -9,8 +9,8 @@ import (
|
||||
|
||||
func init() {
|
||||
Index.Merge(&ice.Context{Commands: map[string]*ice.Command{
|
||||
"/config": {Name: "/config", Help: "配置", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Cmd("web.code.git.config").Table(func(index int, value map[string]string, head []string) {
|
||||
"/configs": {Name: "/configs", Help: "配置", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Cmd("web.code.git.configs").Table(func(index int, value map[string]string, head []string) {
|
||||
if strings.HasPrefix(value[kit.MDB_NAME], "url") {
|
||||
m.Echo(`git config --global "%s" "%s"`, value[kit.MDB_NAME], value[kit.MDB_VALUE])
|
||||
m.Echo(ice.NL)
|
@ -20,11 +20,7 @@ func init() {
|
||||
m.Render(kit.Select(ice.RENDER_DOWNLOAD, ice.RENDER_RESULT, m.Append(kit.MDB_FILE) == ""), m.Append(kit.MDB_TEXT))
|
||||
}},
|
||||
"/upload": {Name: "/upload", Help: "上传", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
// 上传文件
|
||||
msg := m.Cmd(web.CACHE, web.UPLOAD)
|
||||
m.Option(ice.MSG_UPLOAD, msg.Append(kit.MDB_HASH), msg.Append(kit.MDB_NAME), msg.Append(kit.MDB_SIZE))
|
||||
m.Cmd(chat.FILES, web.UPLOAD)
|
||||
|
||||
msg := m.Cmd(chat.FILES, web.UPLOAD) // 上传文件
|
||||
for _, k := range []string{kit.MDB_DATA, kit.MDB_TIME, kit.MDB_TYPE, kit.MDB_NAME, kit.MDB_SIZE} {
|
||||
m.Echo("%s: %s\n", k, msg.Append(k))
|
||||
}
|
||||
|
@ -10,69 +10,38 @@ import (
|
||||
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_ZONE, kit.MDB_FIELD, "time,id,type,name,text,pwd,username,hostname",
|
||||
)},
|
||||
},
|
||||
Commands: map[string]*ice.Command{
|
||||
"/favor": {Name: "/favor", Help: "收藏", Action: map[string]*ice.Action{
|
||||
mdb.EXPORT: {Name: "export zone name", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Echo("#!/bin/sh\n\n")
|
||||
m.Cmdy(FAVOR, m.Option(kit.MDB_ZONE)).Table(func(index int, value map[string]string, head []string) {
|
||||
if m.Option(kit.MDB_NAME) == "" || m.Option(kit.MDB_NAME) == value[kit.MDB_NAME] {
|
||||
m.Echo("# %v\n%v\n\n", value[kit.MDB_NAME], value[kit.MDB_TEXT])
|
||||
}
|
||||
})
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Cmdy(FAVOR).Table()
|
||||
}},
|
||||
FAVOR: {Name: "favor zone id auto", 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 zone=系统命令 type=shell name=1 text=pwd pwd=/home", 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), "", 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.ZONE, m.OptionSimple(kit.MDB_ZONE))
|
||||
}},
|
||||
mdb.EXPORT: {Name: "export", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
|
||||
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.ZONE)
|
||||
}},
|
||||
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||
switch arg[0] {
|
||||
case kit.MDB_ZONE:
|
||||
m.Cmdy(mdb.INPUTS, m.Prefix(FAVOR), "", mdb.HASH, arg)
|
||||
default:
|
||||
m.Cmdy(mdb.INPUTS, m.Prefix(FAVOR), kit.KeyHash(m.Option(kit.MDB_ZONE)), mdb.LIST, arg)
|
||||
Index.Merge(&ice.Context{Configs: map[string]*ice.Config{
|
||||
FAVOR: {Name: FAVOR, Help: "收藏夹", Value: kit.Data(
|
||||
kit.MDB_SHORT, kit.MDB_ZONE, kit.MDB_FIELD, "time,id,type,name,text,pwd,username,hostname",
|
||||
)},
|
||||
}, Commands: map[string]*ice.Command{
|
||||
"/favor": {Name: "/favor", Help: "收藏", Action: map[string]*ice.Action{
|
||||
mdb.EXPORT: {Name: "export zone name", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Echo("#!/bin/sh\n\n")
|
||||
m.Cmdy(FAVOR, m.Option(kit.MDB_ZONE)).Table(func(index int, value map[string]string, head []string) {
|
||||
if m.Option(kit.MDB_NAME) == "" || m.Option(kit.MDB_NAME) == value[kit.MDB_NAME] {
|
||||
m.Echo("# %v\n%v\n\n", value[kit.MDB_NAME], value[kit.MDB_TEXT])
|
||||
}
|
||||
}},
|
||||
cli.SYSTEM: {Name: "system", Help: "命令", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Option(cli.CMD_DIR, m.Option(cli.PWD))
|
||||
m.ProcessCommand(cli.SYSTEM, kit.Split(m.Option(kit.MDB_TEXT)), arg...)
|
||||
m.ProcessCommandOpt(cli.PWD)
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Fields(len(arg), "time,zone,count", m.Conf(FAVOR, kit.META_FIELD))
|
||||
if m.Cmdy(mdb.SELECT, m.Prefix(FAVOR), "", mdb.ZONE, arg); len(arg) == 0 {
|
||||
m.Action(mdb.CREATE, mdb.EXPORT, mdb.IMPORT)
|
||||
m.PushAction(mdb.REMOVE)
|
||||
} else {
|
||||
m.PushAction(cli.SYSTEM)
|
||||
}
|
||||
})
|
||||
}},
|
||||
},
|
||||
})
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Cmdy(FAVOR).Table()
|
||||
}},
|
||||
FAVOR: {Name: "favor zone id auto", Help: "收藏夹", Action: ice.MergeAction(map[string]*ice.Action{
|
||||
mdb.INSERT: {Name: "insert zone=系统命令 type=shell name=1 text=pwd pwd=/home", Help: "添加"},
|
||||
cli.SYSTEM: {Name: "system", Help: "命令", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Option(cli.CMD_DIR, m.Option(cli.PWD))
|
||||
m.ProcessCommand(cli.SYSTEM, kit.Split(m.Option(kit.MDB_TEXT)), arg...)
|
||||
m.ProcessCommandOpt(cli.PWD)
|
||||
}},
|
||||
}, mdb.ZoneAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
if mdb.ZoneSelect(m, arg...); len(arg) == 0 {
|
||||
m.Action(mdb.CREATE, mdb.EXPORT, mdb.IMPORT)
|
||||
m.PushAction(mdb.REMOVE)
|
||||
} else {
|
||||
m.PushAction(cli.SYSTEM)
|
||||
m.StatusTimeCount()
|
||||
}
|
||||
}},
|
||||
}})
|
||||
}
|
||||
|
@ -21,66 +21,57 @@ const (
|
||||
const SESS = "sess"
|
||||
|
||||
func init() {
|
||||
Index.Merge(&ice.Context{
|
||||
Configs: map[string]*ice.Config{
|
||||
SESS: {Name: SESS, Help: "会话流", Value: kit.Data(
|
||||
kit.MDB_FIELD, "time,hash,status,username,hostname,pid,pwd",
|
||||
)},
|
||||
},
|
||||
Commands: map[string]*ice.Command{
|
||||
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)) // 文件参数
|
||||
}
|
||||
Index.Merge(&ice.Context{Configs: map[string]*ice.Config{
|
||||
SESS: {Name: SESS, Help: "会话流", Value: kit.Data(
|
||||
kit.MDB_FIELD, "time,hash,status,username,hostname,pid,pwd",
|
||||
)},
|
||||
}, Commands: map[string]*ice.Command{
|
||||
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)) // 文件参数
|
||||
}
|
||||
}
|
||||
|
||||
switch m.RenderResult(); m.R.URL.String() {
|
||||
case "/qrcode", "/sess": // 登录入口
|
||||
return
|
||||
}
|
||||
switch m.RenderResult(); arg[0] {
|
||||
case "/qrcode", "/sess": // 登录入口
|
||||
return
|
||||
}
|
||||
|
||||
if m.Warn(m.Option(SID, strings.TrimSpace(m.Option(SID))) == "", ice.ErrNotLogin, arg) {
|
||||
return
|
||||
}
|
||||
if m.Warn(m.Option(SID, strings.TrimSpace(m.Option(SID))) == "", ice.ErrNotLogin, arg) {
|
||||
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, arg)
|
||||
msg := m.Cmd(SESS, m.Option(SID))
|
||||
m.Option(aaa.USERNAME, msg.Append(aaa.USERNAME))
|
||||
m.Option(tcp.HOSTNAME, msg.Append(tcp.HOSTNAME))
|
||||
m.Warn(m.Option(aaa.USERNAME) == "", ice.ErrNotLogin, arg)
|
||||
}},
|
||||
"/qrcode": {Name: "/qrcode", Help: "二维码", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Cmdy(cli.QRCODE, m.Option(kit.MDB_TEXT), m.Option(cli.FG), m.Option(cli.BG))
|
||||
}},
|
||||
"/sess": {Name: "/sess", Help: "会话", Action: map[string]*ice.Action{
|
||||
aaa.LOGOUT: {Name: "logout", Help: "退出", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(SESS, mdb.MODIFY, kit.MDB_STATUS, aaa.LOGOUT, ice.Option{kit.MDB_HASH, m.Option(SID)})
|
||||
}},
|
||||
"/qrcode": {Name: "/qrcode", Help: "二维码", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Cmdy(cli.QRCODE, m.Option(kit.MDB_TEXT), m.Option(cli.FG), m.Option(cli.BG))
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
if m.Option(SID) == "" { // 终端登录
|
||||
m.Option(SID, m.Cmdx(SESS, mdb.CREATE, kit.MDB_STATUS, aaa.LOGIN, m.OptionSimple(aaa.USERNAME, tcp.HOSTNAME, cli.PID, cli.PWD)))
|
||||
} else { // 更新状态
|
||||
m.Cmdy(SESS, mdb.MODIFY, kit.MDB_STATUS, aaa.LOGIN, ice.Option{kit.MDB_HASH, m.Option(SID)})
|
||||
}
|
||||
m.Echo(m.Option(SID))
|
||||
}},
|
||||
SESS: {Name: "sess hash auto prunes", Help: "会话流", Action: ice.MergeAction(map[string]*ice.Action{
|
||||
mdb.PRUNES: {Name: "prunes", Help: "清理", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.OptionFields(m.Config(kit.MDB_FIELD))
|
||||
m.Cmdy(mdb.PRUNES, m.PrefixKey(), "", mdb.HASH, kit.MDB_STATUS, aaa.LOGOUT)
|
||||
}},
|
||||
"/sess": {Name: "/sess", Help: "会话", Action: map[string]*ice.Action{
|
||||
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, 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), m.Conf(SESS, kit.META_FIELD))
|
||||
m.Cmdy(mdb.SELECT, m.Prefix(SESS), "", mdb.HASH, kit.MDB_HASH, arg)
|
||||
m.PushAction(mdb.REMOVE)
|
||||
}},
|
||||
},
|
||||
})
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
mdb.HashSelect(m, arg...)
|
||||
m.PushAction(mdb.REMOVE)
|
||||
m.StatusTimeCount()
|
||||
}},
|
||||
}})
|
||||
}
|
||||
|
@ -13,10 +13,6 @@ import (
|
||||
|
||||
const _sync_index = 1
|
||||
|
||||
func _sync_count(m *ice.Message) string {
|
||||
return m.Conf(SYNC, kit.Keym(kit.MDB_COUNT))
|
||||
}
|
||||
|
||||
const (
|
||||
SHELL = "shell"
|
||||
HISTORY = "history"
|
||||
@ -24,62 +20,36 @@ const (
|
||||
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,pwd,username,hostname",
|
||||
)},
|
||||
},
|
||||
Commands: map[string]*ice.Command{
|
||||
"/sync": {Name: "/sync", Help: "同步", Action: map[string]*ice.Action{
|
||||
HISTORY: {Name: "history", Help: "历史", Hand: func(m *ice.Message, arg ...string) {
|
||||
ls := strings.SplitN(strings.TrimSpace(m.Option(ARG)), " ", 4)
|
||||
if text := strings.TrimSpace(strings.Join(ls[3:], " ")); text != "" {
|
||||
m.Cmd(mdb.INSERT, m.Prefix(SYNC), "", mdb.LIST, kit.MDB_TIME, ls[1]+" "+ls[2],
|
||||
kit.MDB_TYPE, SHELL, kit.MDB_NAME, ls[0], kit.MDB_TEXT, text,
|
||||
m.OptionSimple(cli.PWD, aaa.USERNAME, tcp.HOSTNAME, tcp.HOSTNAME))
|
||||
|
||||
}
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Cmd(mdb.INSERT, m.Prefix(SYNC), "", mdb.HASH, kit.MDB_TYPE, SHELL, kit.MDB_NAME, arg[0],
|
||||
kit.MDB_TEXT, m.Option(SUB), m.OptionSimple(cli.PWD))
|
||||
Index.Merge(&ice.Context{Configs: map[string]*ice.Config{
|
||||
SYNC: {Name: SYNC, Help: "同步流", Value: kit.Data(
|
||||
kit.MDB_FIELD, "time,id,type,name,text,pwd,username,hostname",
|
||||
)},
|
||||
}, Commands: map[string]*ice.Command{
|
||||
"/sync": {Name: "/sync", Help: "同步", Action: map[string]*ice.Action{
|
||||
HISTORY: {Name: "history", Help: "历史", Hand: func(m *ice.Message, arg ...string) {
|
||||
ls := strings.SplitN(strings.TrimSpace(m.Option(ARG)), ice.SP, 4)
|
||||
if text := strings.TrimSpace(strings.Join(ls[3:], ice.SP)); text != "" {
|
||||
m.Cmd(SYNC, mdb.INSERT, kit.MDB_TIME, ls[1]+ice.SP+ls[2],
|
||||
kit.MDB_TYPE, SHELL, kit.MDB_NAME, ls[0], kit.MDB_TEXT, text,
|
||||
m.OptionSimple(cli.PWD, aaa.USERNAME, tcp.HOSTNAME, tcp.HOSTNAME))
|
||||
}
|
||||
}},
|
||||
SYNC: {Name: "sync id auto page export import", 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)...)
|
||||
}},
|
||||
mdb.EXPORT: {Name: "export", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.OptionFields(m.Conf(SYNC, kit.META_FIELD))
|
||||
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) {
|
||||
switch arg[0] {
|
||||
case kit.MDB_ZONE:
|
||||
m.Cmdy(FAVOR, mdb.INPUTS, arg)
|
||||
}
|
||||
}},
|
||||
cli.SYSTEM: {Name: "system", Help: "命令", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Option(cli.CMD_DIR, m.Option(cli.PWD))
|
||||
m.ProcessCommand(cli.SYSTEM, kit.Split(m.Option(kit.MDB_TEXT)), arg...)
|
||||
m.ProcessCommandOpt(cli.PWD)
|
||||
}},
|
||||
FAVOR: {Name: "favor zone=some@key type name text pwd", Help: "收藏", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(FAVOR, mdb.INSERT, m.OptionSimple(kit.MDB_ZONE, m.Conf(FAVOR, kit.META_FIELD)))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.OptionPage(kit.Slice(arg, _sync_index)...)
|
||||
m.Fields(len(kit.Slice(arg, 0, 1)), m.Conf(SYNC, kit.META_FIELD))
|
||||
m.Cmdy(mdb.SELECT, m.Prefix(SYNC), "", mdb.LIST, kit.MDB_ID, arg)
|
||||
m.PushAction(cli.SYSTEM, FAVOR)
|
||||
m.StatusTimeCountTotal(_sync_count(m))
|
||||
}},
|
||||
SYNC: {Name: "sync id auto page export import", Help: "同步流", Action: ice.MergeAction(map[string]*ice.Action{
|
||||
cli.SYSTEM: {Name: "system", Help: "命令", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Option(cli.CMD_DIR, m.Option(cli.PWD))
|
||||
m.ProcessCommand(cli.SYSTEM, kit.Split(m.Option(kit.MDB_TEXT)), arg...)
|
||||
m.ProcessCommandOpt(cli.PWD)
|
||||
}},
|
||||
},
|
||||
})
|
||||
mdb.INPUTS: {Name: "favor inputs", Help: "补全"},
|
||||
FAVOR: {Name: "favor zone=some@key type name text pwd", Help: "收藏", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(FAVOR, mdb.INSERT, m.OptionSimple(kit.MDB_ZONE, m.Conf(FAVOR, kit.META_FIELD)))
|
||||
}},
|
||||
}, mdb.ListAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.OptionPage(kit.Slice(arg, _sync_index)...)
|
||||
mdb.ListSelect(m, kit.Slice(arg, 0, 1)...)
|
||||
m.PushAction(cli.SYSTEM, FAVOR)
|
||||
m.StatusTimeCountTotal(m.Config(kit.MDB_COUNT))
|
||||
}},
|
||||
}})
|
||||
}
|
||||
|
@ -17,42 +17,38 @@ const (
|
||||
const TRASH = "trash"
|
||||
|
||||
func init() {
|
||||
Index.Merge(&ice.Context{
|
||||
Configs: map[string]*ice.Config{
|
||||
TRASH: {Name: TRASH, Help: "回收站", Value: kit.Data(
|
||||
kit.MDB_FIELD, "time,hash,username,hostname,size,from,to",
|
||||
)},
|
||||
},
|
||||
Commands: map[string]*ice.Command{
|
||||
"/trash": {Name: "/trash", Help: "回收", Action: map[string]*ice.Action{
|
||||
mdb.INSERT: {Name: "insert from to", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(TRASH, mdb.INSERT, arg)
|
||||
}},
|
||||
Index.Merge(&ice.Context{Configs: map[string]*ice.Config{
|
||||
TRASH: {Name: TRASH, Help: "回收站", Value: kit.Data(
|
||||
kit.MDB_FIELD, "time,hash,username,hostname,size,from,to",
|
||||
)},
|
||||
}, Commands: map[string]*ice.Command{
|
||||
"/trash": {Name: "/trash", Help: "回收", Action: map[string]*ice.Action{
|
||||
mdb.INSERT: {Name: "insert from to", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(TRASH, mdb.INSERT, arg)
|
||||
}},
|
||||
TRASH: {Name: "TRASH hash path auto prunes", Help: "回收站", Action: map[string]*ice.Action{
|
||||
mdb.INSERT: {Name: "insert from to", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.INSERT, m.Prefix(TRASH), "", mdb.HASH, m.OptionSimple(aaa.USERNAME, tcp.HOSTNAME, kit.MDB_SIZE, FROM, TO))
|
||||
}},
|
||||
mdb.REVERT: {Name: "revert", Help: "恢复", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(cli.SYSTEM, "mv", m.Option(TO), m.Option(FROM))
|
||||
m.Cmdy(mdb.DELETE, m.Prefix(TRASH), "", mdb.HASH, m.OptionSimple(kit.MDB_HASH))
|
||||
}},
|
||||
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(cli.SYSTEM, "rm", "-rf", m.Option(TO))
|
||||
m.Cmdy(mdb.DELETE, m.Prefix(TRASH), "", mdb.HASH, m.OptionSimple(kit.MDB_HASH))
|
||||
}},
|
||||
mdb.PRUNES: {Name: "prunes", Help: "清理", Hand: func(m *ice.Message, arg ...string) {
|
||||
}},
|
||||
nfs.DIR: {Name: "dir", Help: "目录", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Option(nfs.DIR_ROOT, m.Option(TO))
|
||||
m.ProcessCommand(nfs.DIR, []string{}, arg...)
|
||||
m.ProcessCommandOpt(TO)
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Fields(len(arg), m.Conf(TRASH, kit.META_FIELD))
|
||||
m.Cmdy(mdb.SELECT, m.Prefix(TRASH), "", mdb.HASH, kit.MDB_HASH, arg)
|
||||
m.PushAction(nfs.DIR, mdb.REVERT, mdb.REMOVE)
|
||||
}},
|
||||
TRASH: {Name: "TRASH hash path auto prunes", Help: "回收站", Action: ice.MergeAction(map[string]*ice.Action{
|
||||
mdb.INSERT: {Name: "insert from to", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.INSERT, m.PrefixKey(), "", mdb.HASH, m.OptionSimple(aaa.USERNAME, tcp.HOSTNAME, kit.MDB_SIZE, FROM, TO))
|
||||
}},
|
||||
},
|
||||
})
|
||||
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(cli.SYSTEM, "rm", "-rf", m.Option(TO))
|
||||
m.Cmdy(mdb.DELETE, m.PrefixKey(), "", mdb.HASH, m.OptionSimple(kit.MDB_HASH))
|
||||
}},
|
||||
mdb.REVERT: {Name: "revert", Help: "恢复", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(cli.SYSTEM, "mv", m.Option(TO), m.Option(FROM))
|
||||
m.Cmdy(mdb.DELETE, m.PrefixKey(), "", mdb.HASH, m.OptionSimple(kit.MDB_HASH))
|
||||
}},
|
||||
mdb.PRUNES: {Name: "prunes", Help: "清理", Hand: func(m *ice.Message, arg ...string) {
|
||||
}},
|
||||
nfs.DIR: {Name: "dir", Help: "目录", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Option(nfs.DIR_ROOT, m.Option(TO))
|
||||
m.ProcessCommand(nfs.DIR, []string{}, arg...)
|
||||
m.ProcessCommandOpt(TO)
|
||||
}},
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
mdb.HashSelect(m, arg...)
|
||||
m.PushAction(nfs.DIR, mdb.REVERT, mdb.REMOVE)
|
||||
}},
|
||||
}})
|
||||
}
|
||||
|
@ -3,36 +3,24 @@ package bash
|
||||
import (
|
||||
ice "shylinux.com/x/icebergs"
|
||||
"shylinux.com/x/icebergs/base/cli"
|
||||
"shylinux.com/x/icebergs/base/web"
|
||||
"shylinux.com/x/icebergs/core/code"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
|
||||
"path"
|
||||
)
|
||||
|
||||
const ZSH = "zsh"
|
||||
|
||||
func init() {
|
||||
Index.Merge(&ice.Context{
|
||||
Configs: map[string]*ice.Config{
|
||||
ZSH: {Name: ZSH, Help: "命令行", Value: kit.Data(
|
||||
"source", "https://nchc.dl.sourceforge.net/project/zsh/zsh/5.8/zsh-5.8.tar.xz",
|
||||
)},
|
||||
},
|
||||
Commands: map[string]*ice.Command{
|
||||
ZSH: {Name: "zsh 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(ZSH, kit.META_SOURCE))
|
||||
}},
|
||||
cli.BUILD: {Name: "build", Help: "构建", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(code.INSTALL, cli.BUILD, m.Conf(ZSH, kit.META_SOURCE))
|
||||
}},
|
||||
cli.START: {Name: "start", Help: "启动", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(code.INSTALL, cli.START, m.Conf(ZSH, kit.META_SOURCE), "bin/zsh")
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Cmdy(code.INSTALL, path.Base(m.Conf(ZSH, kit.META_SOURCE)), arg)
|
||||
Index.Merge(&ice.Context{Configs: map[string]*ice.Config{
|
||||
ZSH: {Name: ZSH, Help: "命令行", Value: kit.Data(
|
||||
cli.SOURCE, "https://nchc.dl.sourceforge.net/project/zsh/zsh/5.8/zsh-5.8.tar.xz",
|
||||
)},
|
||||
}, Commands: map[string]*ice.Command{
|
||||
ZSH: {Name: "zsh path auto order build download", Help: "命令行", Action: ice.MergeAction(map[string]*ice.Action{
|
||||
cli.ORDER: {Name: "order", Help: "加载", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(code.INSTALL, cli.ORDER, m.Config(cli.SOURCE), "_install/bin")
|
||||
}},
|
||||
},
|
||||
})
|
||||
}, code.InstallAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Cmdy(code.INSTALL, cli.SOURCE, m.Config(cli.SOURCE), arg)
|
||||
}},
|
||||
}})
|
||||
}
|
||||
|
@ -24,12 +24,15 @@ func init() {
|
||||
m.Option(nfs.DIR_DEEP, ice.TRUE)
|
||||
m.Option(nfs.DIR_TYPE, nfs.TYPE_CAT)
|
||||
m.Cmdy(nfs.DIR, arg, func(file string) {
|
||||
if !strings.Contains(file, ice.PT) {
|
||||
if strings.Contains(file, "var/") {
|
||||
return
|
||||
}
|
||||
if strings.Contains(file, "bin/") {
|
||||
return
|
||||
}
|
||||
if !strings.Contains(file, ice.PT) {
|
||||
return
|
||||
}
|
||||
switch kit.Ext(file) {
|
||||
case "sum", "log":
|
||||
return
|
||||
@ -52,7 +55,7 @@ func init() {
|
||||
})
|
||||
})
|
||||
for k := range lines {
|
||||
m.Push("type", k)
|
||||
m.Push(kit.MDB_TYPE, k)
|
||||
m.Push("files", files[k])
|
||||
m.Push("lines", lines[k])
|
||||
}
|
||||
|
@ -57,7 +57,7 @@ func _status_tags(m *ice.Message) {
|
||||
return text
|
||||
}
|
||||
if v, ok := vs[kit.Slice(strings.Split(ls[0], ice.PT), -1)[0]]; ok && ls[1] != v {
|
||||
m.Debug("upgrade to %v %v from %v", ls[0], ls[1], v)
|
||||
m.Info("upgrade to %v %v from %v", ls[0], ls[1], v)
|
||||
text = ice.TB + ls[0] + ice.SP + v
|
||||
change = true
|
||||
}
|
||||
@ -70,11 +70,10 @@ func _status_tags(m *ice.Message) {
|
||||
|
||||
m.Cmd(nfs.SAVE, ice.GO_SUM, "")
|
||||
m.Cmd(nfs.SAVE, ice.GO_MOD, mod)
|
||||
m.Option(cli.CMD_DIR, _repos_path(k))
|
||||
|
||||
switch k {
|
||||
switch m.Option(cli.CMD_DIR, _repos_path(k)); k {
|
||||
case ice.CONTEXTS:
|
||||
defer m.Cmd(cli.SYSTEM, cli.MAKE)
|
||||
defer m.Cmd(cli.SYSTEM, cli.MAKE, ice.Option{cli.CMD_DIR, _repos_path(k)})
|
||||
case ice.ICEBERGS:
|
||||
m.Cmd(cli.SYSTEM, code.GO, cli.BUILD)
|
||||
default:
|
||||
|
@ -50,7 +50,7 @@ func init() {
|
||||
FIELDS, "id,tag,pane,tty,height,width,cmd",
|
||||
)},
|
||||
}, Commands: map[string]*ice.Command{
|
||||
SESSION: {Name: "session session window pane cmd auto create script", Help: "会话管理", Action: map[string]*ice.Action{
|
||||
SESSION: {Name: "session session window pane cmd auto", Help: "会话管理", Action: map[string]*ice.Action{
|
||||
web.DREAM_CREATE: {Name: "dream.create type name", Help: "梦想", Hand: func(m *ice.Message, arg ...string) {
|
||||
if kit.IndexOf(m.Cmd(m.PrefixKey()).Appendv(SESSION), m.Option(kit.MDB_NAME)) == -1 {
|
||||
m.Cmd(m.PrefixKey(), mdb.CREATE)
|
||||
@ -143,9 +143,10 @@ func init() {
|
||||
}
|
||||
}
|
||||
})
|
||||
m.Sleep("100ms")
|
||||
m.Sleep30ms()
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Action(SCRIPT)
|
||||
if len(arg) > 3 { // 执行命令
|
||||
m.Cmd(CMD, _tmux_key(arg[0], arg[1], arg[2]), arg[3:])
|
||||
}
|
||||
@ -153,6 +154,7 @@ func init() {
|
||||
m.Echo(strings.TrimSpace(m.Cmdx(VIEW, _tmux_key(arg[0], arg[1], arg[2]))))
|
||||
return
|
||||
}
|
||||
m.Action(mdb.CREATE)
|
||||
if len(arg) > 1 { // 终端列表
|
||||
m.Cmdy(PANE, _tmux_key(arg[0], arg[1]))
|
||||
m.PushAction(mdb.SELECT, mdb.REMOVE)
|
||||
|
4
type.go
4
type.go
@ -424,7 +424,7 @@ func (m *Message) Search(key string, cb interface{}) *Message {
|
||||
break
|
||||
}
|
||||
|
||||
for _, p := range []*Context{p, m.target, m.source} {
|
||||
for _, p := range []*Context{m.target, p, m.source} {
|
||||
for s := p; s != nil; s = s.context {
|
||||
if cmd, ok := s.Commands[key]; ok {
|
||||
cb(s.context, s, key, cmd) // 查找命令
|
||||
@ -433,7 +433,7 @@ func (m *Message) Search(key string, cb interface{}) *Message {
|
||||
}
|
||||
}
|
||||
case func(p *Context, s *Context, key string, conf *Config):
|
||||
for _, p := range []*Context{p, m.target, m.source} {
|
||||
for _, p := range []*Context{m.target, p, m.source} {
|
||||
for s := p; s != nil; s = s.context {
|
||||
if cmd, ok := s.Configs[key]; ok {
|
||||
cb(s.context, s, key, cmd) // 查找配置
|
||||
|
Loading…
x
Reference in New Issue
Block a user