mirror of
https://shylinux.com/x/icebergs
synced 2025-06-26 10:27:31 +08:00
opt aaa
This commit is contained in:
parent
8feb26089f
commit
fe937b8d9f
@ -2,20 +2,10 @@ package aaa
|
||||
|
||||
import (
|
||||
ice "shylinux.com/x/icebergs"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
)
|
||||
|
||||
const AAA = "aaa"
|
||||
|
||||
var Index = &ice.Context{Name: AAA, Help: "认证模块", Commands: map[string]*ice.Command{
|
||||
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Rich(ROLE, nil, kit.Dict(kit.MDB_NAME, VOID, WHITE, kit.Dict(), BLACK, kit.Dict()))
|
||||
m.Rich(ROLE, nil, kit.Dict(kit.MDB_NAME, TECH, BLACK, kit.Dict(), WHITE, kit.Dict()))
|
||||
m.Load()
|
||||
}},
|
||||
ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Save()
|
||||
}},
|
||||
}}
|
||||
var Index = &ice.Context{Name: AAA, Help: "认证模块"}
|
||||
|
||||
func init() { ice.Index.Register(Index, nil, ROLE, SESS, TOTP, USER) }
|
||||
|
@ -8,29 +8,22 @@ import (
|
||||
kit "shylinux.com/x/toolkits"
|
||||
)
|
||||
|
||||
func _role_user(m *ice.Message, userrole string, username ...string) {
|
||||
m.Richs(ROLE, nil, userrole, func(key string, value map[string]interface{}) {
|
||||
for _, user := range username {
|
||||
kit.Value(value, kit.Keys(USER, user), true)
|
||||
}
|
||||
})
|
||||
}
|
||||
func _role_list(m *ice.Message, userrole string) {
|
||||
m.Richs(ROLE, nil, kit.Select(kit.MDB_FOREACH, userrole), func(key string, value map[string]interface{}) {
|
||||
m.Richs(ROLE, nil, kit.Select(mdb.FOREACH, userrole), func(key string, value map[string]interface{}) {
|
||||
kit.Fetch(value[WHITE], func(k string, v interface{}) {
|
||||
m.Push(ROLE, kit.Value(value, kit.MDB_NAME))
|
||||
m.Push(kit.MDB_ZONE, WHITE)
|
||||
m.Push(kit.MDB_KEY, k)
|
||||
m.Push(ROLE, kit.Value(value, mdb.NAME))
|
||||
m.Push(mdb.ZONE, WHITE)
|
||||
m.Push(mdb.KEY, k)
|
||||
})
|
||||
kit.Fetch(value[BLACK], func(k string, v interface{}) {
|
||||
m.Push(ROLE, kit.Value(value, kit.MDB_NAME))
|
||||
m.Push(kit.MDB_ZONE, BLACK)
|
||||
m.Push(kit.MDB_KEY, k)
|
||||
m.Push(ROLE, kit.Value(value, mdb.NAME))
|
||||
m.Push(mdb.ZONE, BLACK)
|
||||
m.Push(mdb.KEY, k)
|
||||
})
|
||||
})
|
||||
}
|
||||
func _role_chain(arg ...string) string {
|
||||
return strings.ReplaceAll(kit.Keys(arg), "/", ice.PT)
|
||||
return strings.ReplaceAll(kit.Keys(arg), ice.PS, ice.PT)
|
||||
}
|
||||
func _role_black(m *ice.Message, userrole, chain string, status bool) {
|
||||
m.Richs(ROLE, nil, userrole, func(key string, value map[string]interface{}) {
|
||||
@ -101,44 +94,42 @@ const ROLE = "role"
|
||||
|
||||
func init() {
|
||||
Index.Merge(&ice.Context{Configs: map[string]*ice.Config{
|
||||
ROLE: {Name: ROLE, Help: "角色", Value: kit.Data(kit.MDB_SHORT, kit.MDB_NAME)},
|
||||
ROLE: {Name: ROLE, Help: "角色", Value: kit.Data(mdb.SHORT, mdb.NAME)},
|
||||
}, Commands: map[string]*ice.Command{
|
||||
ROLE: {Name: "role role auto create", Help: "角色", Action: map[string]*ice.Action{
|
||||
mdb.CREATE: {Name: "create role=void,tech zone=white,black key=", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
ROLE: {Name: "role role auto insert", Help: "角色", Action: map[string]*ice.Action{
|
||||
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Rich(ROLE, nil, kit.Dict(mdb.NAME, VOID, WHITE, kit.Dict(), BLACK, kit.Dict()))
|
||||
m.Rich(ROLE, nil, kit.Dict(mdb.NAME, TECH, BLACK, kit.Dict(), WHITE, kit.Dict()))
|
||||
}},
|
||||
mdb.INSERT: {Name: "insert role=void,tech zone=white,black key=", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Richs(ROLE, nil, m.Option(ROLE), func(key string, value map[string]interface{}) {
|
||||
list := value[m.Option(kit.MDB_ZONE)].(map[string]interface{})
|
||||
m.Log_CREATE(ROLE, m.Option(ROLE), list[m.Option(kit.MDB_KEY)])
|
||||
list[m.Option(kit.MDB_KEY)] = true
|
||||
list := value[m.Option(mdb.ZONE)].(map[string]interface{})
|
||||
m.Log_CREATE(ROLE, m.Option(ROLE), m.Option(mdb.KEY))
|
||||
list[m.Option(mdb.KEY)] = true
|
||||
})
|
||||
}},
|
||||
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
mdb.DELETE: {Name: "delete", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Richs(ROLE, nil, m.Option(ROLE), func(key string, value map[string]interface{}) {
|
||||
list := value[m.Option(kit.MDB_ZONE)].(map[string]interface{})
|
||||
m.Log_REMOVE(ROLE, m.Option(ROLE), list[m.Option(kit.MDB_KEY)])
|
||||
delete(list, m.Option(kit.MDB_KEY))
|
||||
list := value[m.Option(mdb.ZONE)].(map[string]interface{})
|
||||
m.Log_REMOVE(ROLE, m.Option(ROLE), m.Option(mdb.KEY))
|
||||
delete(list, m.Option(mdb.KEY))
|
||||
})
|
||||
}},
|
||||
|
||||
BLACK: {Name: "black role chain...", Help: "黑名单", Hand: func(m *ice.Message, arg ...string) {
|
||||
BLACK: {Name: "black role chain", Help: "黑名单", Hand: func(m *ice.Message, arg ...string) {
|
||||
_role_black(m, arg[0], _role_chain(arg[1:]...), true)
|
||||
}},
|
||||
WHITE: {Name: "white role chain...", Help: "白名单", Hand: func(m *ice.Message, arg ...string) {
|
||||
WHITE: {Name: "white role chain", Help: "白名单", Hand: func(m *ice.Message, arg ...string) {
|
||||
_role_white(m, arg[0], _role_chain(arg[1:]...), true)
|
||||
}},
|
||||
RIGHT: {Name: "right role chain...", Help: "查看权限", Hand: func(m *ice.Message, arg ...string) {
|
||||
RIGHT: {Name: "right role chain", Help: "查看权限", Hand: func(m *ice.Message, arg ...string) {
|
||||
if _role_right(m, arg[0], kit.Split(_role_chain(arg[1:]...), ice.PT)...) {
|
||||
m.Echo(ice.OK)
|
||||
}
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
if len(arg) < 2 { // 角色列表
|
||||
_role_list(m, kit.Select("", arg, 0))
|
||||
m.PushAction(mdb.REMOVE)
|
||||
return
|
||||
}
|
||||
|
||||
// 设置角色
|
||||
_role_user(m, arg[0], arg[1:]...)
|
||||
_role_list(m, kit.Select("", arg, 0))
|
||||
m.PushAction(mdb.DELETE)
|
||||
}},
|
||||
}})
|
||||
}
|
||||
|
@ -13,7 +13,7 @@ func _sess_check(m *ice.Message, sessid string) {
|
||||
value = kit.GetMeta(value)
|
||||
|
||||
m.Log_AUTH(
|
||||
USERROLE, m.Option(ice.MSG_USERROLE, UserRole(m, value[USERNAME])),
|
||||
USERROLE, m.Option(ice.MSG_USERROLE, value[USERROLE]),
|
||||
USERNAME, m.Option(ice.MSG_USERNAME, value[USERNAME]),
|
||||
USERNICK, m.Option(ice.MSG_USERNICK, value[USERNICK]),
|
||||
)
|
||||
@ -25,24 +25,24 @@ func _sess_create(m *ice.Message, username string) string {
|
||||
return ""
|
||||
}
|
||||
if m.Richs(USER, nil, username, nil) == nil {
|
||||
_user_create(m, username, kit.Hashs())
|
||||
_user_create(m, kit.Select(TECH, VOID, m.Option(ice.MSG_USERROLE) == VOID), username, kit.Hashs())
|
||||
}
|
||||
|
||||
h := m.Cmdx(mdb.INSERT, SESS, "", mdb.HASH,
|
||||
USERROLE, UserRole(m, username), USERNAME, username,
|
||||
IP, m.Option(ice.MSG_USERIP), UA, m.Option(ice.MSG_USERUA),
|
||||
kit.MDB_TIME, m.Time(m.Conf(SESS, kit.Keym(kit.MDB_EXPIRE))),
|
||||
mdb.TIME, m.Time(m.Conf(SESS, kit.Keym(mdb.EXPIRE))),
|
||||
)
|
||||
m.Event(SESS_CREATE, SESS, h, USERNAME, username)
|
||||
return h
|
||||
}
|
||||
|
||||
func SessCheck(m *ice.Message, sessid string) {
|
||||
_sess_check(m, sessid)
|
||||
}
|
||||
func SessCreate(m *ice.Message, username string) string {
|
||||
return m.Option(ice.MSG_SESSID, _sess_create(m, username))
|
||||
}
|
||||
func SessCheck(m *ice.Message, sessid string) {
|
||||
_sess_check(m, sessid)
|
||||
}
|
||||
|
||||
const (
|
||||
IP = "ip"
|
||||
@ -60,8 +60,7 @@ const SESS = "sess"
|
||||
func init() {
|
||||
Index.Merge(&ice.Context{Configs: map[string]*ice.Config{
|
||||
SESS: {Name: SESS, Help: "会话", Value: kit.Data(
|
||||
kit.MDB_SHORT, "uniq", kit.MDB_FIELD, "time,hash,userrole,username,ip,ua",
|
||||
kit.MDB_EXPIRE, "720h",
|
||||
mdb.SHORT, "uniq", mdb.FIELD, "time,hash,userrole,username,ip,ua", mdb.EXPIRE, "720h",
|
||||
)},
|
||||
}, Commands: map[string]*ice.Command{
|
||||
SESS: {Name: "sess hash auto prunes", Help: "会话", Action: ice.MergeAction(map[string]*ice.Action{
|
||||
|
@ -55,8 +55,8 @@ const TOTP = "totp"
|
||||
func init() {
|
||||
Index.Merge(&ice.Context{Configs: map[string]*ice.Config{
|
||||
TOTP: {Name: TOTP, Help: "动态令牌", Value: kit.Data(
|
||||
kit.MDB_SHORT, kit.MDB_NAME, kit.MDB_FIELD, "time,name,secret,period,number",
|
||||
kit.MDB_LINK, "otpauth://totp/%s?secret=%s",
|
||||
mdb.SHORT, mdb.NAME, mdb.FIELD, "time,name,secret,period,number",
|
||||
mdb.LINK, "otpauth://totp/%s?secret=%s",
|
||||
)},
|
||||
}, Commands: map[string]*ice.Command{
|
||||
TOTP: {Name: "totp name auto create", Help: "动态令牌", Action: ice.MergeAction(map[string]*ice.Action{
|
||||
@ -65,22 +65,22 @@ func init() {
|
||||
m.Option(SECRET, _totp_gen(kit.Int64(m.Option(PERIOD))))
|
||||
}
|
||||
|
||||
m.Cmd(mdb.INSERT, TOTP, "", mdb.HASH, m.OptionSimple(kit.MDB_NAME, SECRET, PERIOD, NUMBER))
|
||||
m.Cmd(mdb.INSERT, TOTP, "", mdb.HASH, m.OptionSimple(mdb.NAME, SECRET, PERIOD, NUMBER))
|
||||
}},
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
mdb.HashSelect(m.Spawn(c), arg...).Table(func(index int, value map[string]string, head []string) {
|
||||
if len(arg) > 0 {
|
||||
m.OptionFields(mdb.DETAIL)
|
||||
}
|
||||
m.Push(kit.MDB_TIME, m.Time())
|
||||
m.Push(kit.MDB_NAME, value[kit.MDB_NAME])
|
||||
m.Push(mdb.TIME, m.Time())
|
||||
m.Push(mdb.NAME, value[mdb.NAME])
|
||||
|
||||
period := kit.Int64(value[PERIOD])
|
||||
m.Push("rest", period-time.Now().Unix()%period)
|
||||
m.Push("code", _totp_get(value[SECRET], kit.Int(value[NUMBER]), period))
|
||||
|
||||
if len(arg) > 0 {
|
||||
m.PushQRCode(kit.MDB_SCAN, kit.Format(m.Config(kit.MDB_LINK), value[kit.MDB_NAME], value[SECRET]))
|
||||
m.PushQRCode(mdb.SCAN, kit.Format(m.Config(mdb.LINK), value[mdb.NAME], value[SECRET]))
|
||||
m.Echo(_totp_get(value[SECRET], kit.Int(value[NUMBER]), kit.Int64(value[PERIOD])))
|
||||
}
|
||||
})
|
||||
|
@ -8,7 +8,7 @@ import (
|
||||
|
||||
func _user_login(m *ice.Message, name, word string) (ok bool) {
|
||||
if m.Richs(USER, nil, name, nil) == nil {
|
||||
_user_create(m, name, word)
|
||||
_user_create(m, "", name, word)
|
||||
}
|
||||
|
||||
m.Richs(USER, nil, name, func(key string, value map[string]interface{}) {
|
||||
@ -16,19 +16,20 @@ func _user_login(m *ice.Message, name, word string) (ok bool) {
|
||||
})
|
||||
return ok
|
||||
}
|
||||
func _user_create(m *ice.Message, name, word string) {
|
||||
func _user_create(m *ice.Message, role, name, word string) {
|
||||
m.Rich(USER, nil, kit.Dict(
|
||||
USERNAME, name, PASSWORD, word, USERNICK, name,
|
||||
USERZONE, m.Option(ice.MSG_USERZONE),
|
||||
USERROLE, role, USERNAME, name, PASSWORD, word,
|
||||
USERNICK, name, USERZONE, m.Option(ice.MSG_USERZONE),
|
||||
))
|
||||
m.Event(USER_CREATE, USER, name)
|
||||
}
|
||||
func _user_search(m *ice.Message, name, text string) {
|
||||
m.Richs(USER, nil, kit.MDB_FOREACH, func(key string, value map[string]interface{}) {
|
||||
m.Richs(USER, nil, mdb.FOREACH, func(key string, value map[string]interface{}) {
|
||||
if value = kit.GetMeta(value); name != "" && name != value[USERNAME] {
|
||||
return
|
||||
}
|
||||
m.PushSearch(kit.MDB_TYPE, UserRole(m, value[USERNAME]), kit.MDB_NAME, kit.Format(value[USERNAME]), kit.MDB_TEXT, kit.Format(value[USERNICK]), value)
|
||||
m.PushSearch(kit.SimpleKV("type,name,text",
|
||||
kit.Format(value[USERROLE]), kit.Format(value[USERNAME]), kit.Format(value[USERNICK])), value)
|
||||
})
|
||||
}
|
||||
|
||||
@ -37,17 +38,15 @@ func UserRoot(m *ice.Message) {
|
||||
m.Option(ice.MSG_USERNAME, ice.Info.UserName)
|
||||
|
||||
if m.Richs(USER, "", ice.Info.UserName, nil) == nil {
|
||||
_user_create(m, ice.Info.UserName, kit.Hashs())
|
||||
_user_create(m, ROOT, ice.Info.UserName, kit.Hashs())
|
||||
}
|
||||
}
|
||||
func UserRole(m *ice.Message, username interface{}) (role string) {
|
||||
if role = VOID; username == ice.Info.UserName {
|
||||
return ROOT
|
||||
}
|
||||
m.Richs(ROLE, nil, TECH, func(key string, value map[string]interface{}) {
|
||||
if kit.Value(kit.GetMeta(value), kit.Keys(USER, username)) == true {
|
||||
role = TECH
|
||||
}
|
||||
m.Richs(USER, nil, kit.Format(username), func(key string, value map[string]interface{}) {
|
||||
role = kit.Format(kit.GetMeta(value)[USERROLE])
|
||||
})
|
||||
return
|
||||
}
|
||||
@ -107,31 +106,23 @@ const USER = "user"
|
||||
func init() {
|
||||
Index.Merge(&ice.Context{Configs: map[string]*ice.Config{
|
||||
USER: {Name: USER, Help: "用户", Value: kit.Data(
|
||||
kit.MDB_SHORT, USERNAME, kit.MDB_FIELD, "time,username,usernick,userzone",
|
||||
mdb.SHORT, USERNAME, mdb.FIELD, "time,userrole,username,usernick,userzone",
|
||||
)},
|
||||
}, Commands: map[string]*ice.Command{
|
||||
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Cmd(mdb.SEARCH, mdb.CREATE, USER, m.Prefix(USER))
|
||||
}},
|
||||
USER: {Name: "user username auto create", Help: "用户", Action: ice.MergeAction(map[string]*ice.Action{
|
||||
mdb.CREATE: {Name: "create userrole=void,tech username password", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
|
||||
_user_create(m, m.Option(USERNAME), m.Option(PASSWORD))
|
||||
_role_user(m, m.Option(USERROLE), m.Option(USERNAME))
|
||||
}},
|
||||
mdb.REMOVE: {Name: "remove username", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.OptionFields(m.Config(kit.MDB_FIELD))
|
||||
m.Cmdy(mdb.DELETE, USER, "", mdb.HASH, m.OptionSimple(m.Config(kit.MDB_SHORT)))
|
||||
m.Event(USER_REMOVE, USER, m.Option(m.Config(kit.MDB_SHORT)))
|
||||
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmd(mdb.SEARCH, mdb.CREATE, USER, m.PrefixKey())
|
||||
}},
|
||||
mdb.SEARCH: {Name: "search type name text", Help: "搜索", Hand: func(m *ice.Message, arg ...string) {
|
||||
if arg[0] == USER {
|
||||
_user_search(m, arg[1], kit.Select("", arg, 2))
|
||||
}
|
||||
}},
|
||||
mdb.CREATE: {Name: "create userrole=void,tech username password", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
|
||||
_user_create(m, m.Option(USERROLE), m.Option(USERNAME), m.Option(PASSWORD))
|
||||
}},
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
mdb.HashSelect(m, arg...).Table(func(index int, value map[string]string, head []string) {
|
||||
m.Push(USERROLE, UserRole(m, value[USERNAME]))
|
||||
})
|
||||
mdb.HashSelect(m, arg...)
|
||||
}},
|
||||
}})
|
||||
}
|
||||
|
@ -48,7 +48,7 @@ func init() {
|
||||
Index.Merge(&ice.Context{Configs: map[string]*ice.Config{
|
||||
SIGNAL: {Name: SIGNAL, Help: "信号器", Value: kit.Data(
|
||||
kit.MDB_SHORT, SIGNAL, kit.MDB_FIELD, "time,signal,name,cmd",
|
||||
kit.MDB_PATH, path.Join(ice.VAR_RUN, "ice.pid"),
|
||||
nfs.PATH, path.Join(ice.VAR_RUN, "ice.pid"),
|
||||
)},
|
||||
}, Commands: map[string]*ice.Command{
|
||||
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
|
@ -5,6 +5,7 @@ import (
|
||||
"path"
|
||||
|
||||
ice "shylinux.com/x/icebergs"
|
||||
"shylinux.com/x/icebergs/base/nfs"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
log "shylinux.com/x/toolkits/logs"
|
||||
)
|
||||
@ -89,17 +90,17 @@ const (
|
||||
|
||||
var Index = &ice.Context{Name: "log", Help: "日志模块", Configs: map[string]*ice.Config{
|
||||
FILE: {Name: FILE, Help: "日志文件", Value: kit.Dict(
|
||||
BENCH, kit.Dict(kit.MDB_PATH, path.Join(ice.VAR_LOG, "bench.log"), kit.MDB_LIST, []string{}),
|
||||
WATCH, kit.Dict(kit.MDB_PATH, path.Join(ice.VAR_LOG, "watch.log"), kit.MDB_LIST, []string{
|
||||
BENCH, kit.Dict(nfs.PATH, path.Join(ice.VAR_LOG, "bench.log"), kit.MDB_LIST, []string{}),
|
||||
WATCH, kit.Dict(nfs.PATH, path.Join(ice.VAR_LOG, "watch.log"), kit.MDB_LIST, []string{
|
||||
ice.LOG_CREATE, ice.LOG_REMOVE,
|
||||
ice.LOG_INSERT, ice.LOG_DELETE,
|
||||
ice.LOG_MODIFY, ice.LOG_SELECT,
|
||||
ice.LOG_EXPORT, ice.LOG_IMPORT,
|
||||
}),
|
||||
ERROR, kit.Dict(kit.MDB_PATH, path.Join(ice.VAR_LOG, "error.log"), kit.MDB_LIST, []string{
|
||||
ERROR, kit.Dict(nfs.PATH, path.Join(ice.VAR_LOG, "error.log"), kit.MDB_LIST, []string{
|
||||
ice.LOG_WARN, ice.LOG_ERROR,
|
||||
}),
|
||||
TRACE, kit.Dict(kit.MDB_PATH, path.Join(ice.VAR_LOG, "trace.log"), kit.MDB_LIST, []string{
|
||||
TRACE, kit.Dict(nfs.PATH, path.Join(ice.VAR_LOG, "trace.log"), kit.MDB_LIST, []string{
|
||||
ice.LOG_DEBUG,
|
||||
}),
|
||||
)},
|
||||
@ -130,10 +131,10 @@ var Index = &ice.Context{Name: "log", Help: "日志模块", Configs: map[string]
|
||||
m.Conf(SHOW, kit.Keys(k, FILE), key)
|
||||
})
|
||||
// 日志文件
|
||||
if f, p, e := kit.Create(kit.Format(value[kit.MDB_PATH])); m.Assert(e) {
|
||||
if f, p, e := kit.Create(kit.Format(value[nfs.PATH])); m.Assert(e) {
|
||||
m.Cap(ice.CTX_STREAM, path.Base(p))
|
||||
value[FILE] = bufio.NewWriter(f)
|
||||
m.Log_CREATE(kit.MDB_FILE, p)
|
||||
m.Log_CREATE(nfs.FILE, p)
|
||||
}
|
||||
})
|
||||
}},
|
||||
|
@ -155,7 +155,9 @@ func HashAction(fields ...string) map[string]*ice.Action {
|
||||
m.Cmdy(INSERT, m.PrefixKey(), "", HASH, arg)
|
||||
}},
|
||||
REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.OptionFields(m.Config(FIELD))
|
||||
m.Cmdy(DELETE, m.PrefixKey(), "", HASH, m.OptionSimple(_key(m)), arg)
|
||||
m.Event(kit.Keys(m.CommandKey(), REMOVE), m.CommandKey(), m.Option(m.Config(SHORT)))
|
||||
}},
|
||||
MODIFY: {Name: "modify", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(MODIFY, m.PrefixKey(), "", HASH, m.OptionSimple(_key(m)), arg)
|
||||
|
@ -23,6 +23,25 @@ const (
|
||||
DICT = "dict"
|
||||
META = "meta"
|
||||
)
|
||||
const (
|
||||
ID = "id"
|
||||
KEY = "key"
|
||||
TIME = "time"
|
||||
// ZONE = "zone"
|
||||
TYPE = "type"
|
||||
NAME = "name"
|
||||
TEXT = "text"
|
||||
|
||||
LINK = "link"
|
||||
SCAN = "scan"
|
||||
|
||||
SHORT = "short"
|
||||
FIELD = "field"
|
||||
EXPIRE = "expire"
|
||||
|
||||
FOREACH = "*"
|
||||
RANDOMS = "%"
|
||||
)
|
||||
const (
|
||||
FIELDS = "fields"
|
||||
DETAIL = "detail"
|
||||
|
@ -104,7 +104,7 @@ func _cat_list(m *ice.Message, name string) {
|
||||
buf := make([]byte, ice.MOD_BUFS)
|
||||
for begin := 0; true; {
|
||||
if n, e := f.Read(buf[begin:]); !m.Warn(e, ice.ErrNotFound, name) {
|
||||
m.Log_IMPORT(kit.MDB_FILE, name, kit.MDB_SIZE, n)
|
||||
m.Log_IMPORT(FILE, name, kit.MDB_SIZE, n)
|
||||
if begin += n; begin < len(buf) {
|
||||
buf = buf[:begin]
|
||||
break
|
||||
|
@ -72,9 +72,9 @@ func _dir_list(m *ice.Message, root string, name string, level int, deep bool, d
|
||||
}
|
||||
case "full":
|
||||
m.Push(field, path.Join(root, name, f.Name())+kit.Select("", ice.PS, f.IsDir()))
|
||||
case kit.MDB_PATH:
|
||||
case PATH:
|
||||
m.Push(field, path.Join(name, f.Name())+kit.Select("", ice.PS, f.IsDir()))
|
||||
case kit.MDB_FILE:
|
||||
case FILE:
|
||||
m.Push(field, f.Name()+kit.Select("", ice.PS, f.IsDir()))
|
||||
case kit.MDB_NAME:
|
||||
m.Push(field, f.Name())
|
||||
@ -89,7 +89,7 @@ func _dir_list(m *ice.Message, root string, name string, level int, deep bool, d
|
||||
} else {
|
||||
m.Push(field, kit.FmtSize(f.Size()))
|
||||
}
|
||||
case kit.MDB_LINE:
|
||||
case LINE:
|
||||
if f.IsDir() {
|
||||
if ls, e := ioutil.ReadDir(path.Join(root, name, f.Name())); e == nil {
|
||||
m.Push(field, len(ls))
|
||||
@ -211,13 +211,13 @@ func init() {
|
||||
nil, kit.Split(kit.Select("time,size,type,path", m.OptionFields())))
|
||||
}},
|
||||
mdb.UPLOAD: {Name: "upload", Help: "上传", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Upload(m.Option(kit.MDB_PATH))
|
||||
m.Upload(m.Option(PATH))
|
||||
}},
|
||||
TRASH: {Name: "trash", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(TRASH, m.Option(kit.MDB_PATH))
|
||||
m.Cmdy(TRASH, m.Option(PATH))
|
||||
}},
|
||||
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
os.Remove(m.Option(kit.MDB_PATH))
|
||||
os.Remove(m.Option(PATH))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
if m.Option(DIR_ROOT) != "" {
|
||||
|
@ -16,7 +16,7 @@ func _save_file(m *ice.Message, name string, text ...string) {
|
||||
|
||||
for _, v := range text {
|
||||
if n, e := f.WriteString(v); m.Assert(e) {
|
||||
m.Log_EXPORT(kit.MDB_FILE, p, kit.MDB_SIZE, n)
|
||||
m.Log_EXPORT(FILE, p, kit.MDB_SIZE, n)
|
||||
}
|
||||
}
|
||||
m.Echo(p)
|
||||
@ -38,7 +38,7 @@ func _push_file(m *ice.Message, name string, text ...string) {
|
||||
|
||||
for _, k := range text {
|
||||
if n, e := f.WriteString(k); m.Assert(e) {
|
||||
m.Log_EXPORT(kit.MDB_FILE, p, kit.MDB_SIZE, n)
|
||||
m.Log_EXPORT(FILE, p, kit.MDB_SIZE, n)
|
||||
}
|
||||
}
|
||||
m.Echo(p)
|
||||
@ -53,8 +53,8 @@ func _copy_file(m *ice.Message, name string, from ...string) {
|
||||
defer s.Close()
|
||||
|
||||
if n, e := io.Copy(f, s); !m.Warn(e, ice.ErrNotFound, name) {
|
||||
m.Log_IMPORT(kit.MDB_FILE, v, kit.MDB_SIZE, n)
|
||||
m.Log_EXPORT(kit.MDB_FILE, p, kit.MDB_SIZE, n)
|
||||
m.Log_IMPORT(FILE, v, kit.MDB_SIZE, n)
|
||||
m.Log_EXPORT(FILE, p, kit.MDB_SIZE, n)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -18,9 +18,9 @@ func _tail_create(m *ice.Message, arg ...string) {
|
||||
r, w := io.Pipe()
|
||||
m.Go(func() {
|
||||
for bio := bufio.NewScanner(r); bio.Scan(); {
|
||||
m.Log_IMPORT(kit.MDB_FILE, file, kit.MDB_SIZE, len(bio.Text()))
|
||||
m.Log_IMPORT(FILE, file, kit.MDB_SIZE, len(bio.Text()))
|
||||
m.Grow(TAIL, kit.Keys(kit.MDB_HASH, h), kit.Dict(
|
||||
kit.MDB_FILE, file, kit.MDB_SIZE, len(bio.Text()), kit.MDB_TEXT, bio.Text(),
|
||||
FILE, file, kit.MDB_SIZE, len(bio.Text()), kit.MDB_TEXT, bio.Text(),
|
||||
))
|
||||
}
|
||||
})
|
||||
@ -46,7 +46,7 @@ func init() {
|
||||
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Richs(TAIL, "", kit.MDB_FOREACH, func(key string, value map[string]interface{}) {
|
||||
value, _ = kit.GetMeta(value), m.Option(kit.MDB_HASH, key)
|
||||
m.Cmd(TAIL, mdb.CREATE, kit.MDB_FILE, kit.Format(value[kit.MDB_FILE]), kit.MDB_NAME, kit.Format(value[kit.MDB_NAME]))
|
||||
m.Cmd(TAIL, mdb.CREATE, FILE, kit.Format(value[FILE]), kit.MDB_NAME, kit.Format(value[kit.MDB_NAME]))
|
||||
})
|
||||
}},
|
||||
TAIL: {Name: "tail name id auto page filter:text create", Help: "日志流", Action: ice.MergeAction(map[string]*ice.Action{
|
||||
|
@ -22,10 +22,10 @@ func _trash_create(m *ice.Message, name string) {
|
||||
defer f.Close()
|
||||
|
||||
h := kit.Hashs(f)
|
||||
p := path.Join(m.Config(kit.MDB_PATH), h[:2], h)
|
||||
p := path.Join(m.Config(PATH), h[:2], h)
|
||||
os.MkdirAll(path.Dir(p), ice.MOD_DIR)
|
||||
os.Rename(name, p)
|
||||
m.Cmdy(mdb.INSERT, TRASH, "", mdb.HASH, kit.MDB_FILE, p, kit.MDB_FROM, name)
|
||||
m.Cmdy(mdb.INSERT, TRASH, "", mdb.HASH, FILE, p, kit.MDB_FROM, name)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -36,21 +36,21 @@ func init() {
|
||||
Index.Merge(&ice.Context{Configs: map[string]*ice.Config{
|
||||
TRASH: {Name: TRASH, Help: "回收站", Value: kit.Data(
|
||||
kit.MDB_SHORT, kit.MDB_FROM, kit.MDB_FIELD, "time,hash,file,from",
|
||||
kit.MDB_PATH, ice.VAR_TRASH,
|
||||
PATH, ice.VAR_TRASH,
|
||||
)},
|
||||
}, Commands: map[string]*ice.Command{
|
||||
TRASH: {Name: "trash hash auto prunes", Help: "回收站", Action: ice.MergeAction(map[string]*ice.Action{
|
||||
mdb.REVERT: {Name: "revert", Help: "恢复", Hand: func(m *ice.Message, arg ...string) {
|
||||
os.Rename(m.Option(kit.MDB_FILE), m.Option(kit.MDB_FROM))
|
||||
os.Rename(m.Option(FILE), m.Option(kit.MDB_FROM))
|
||||
m.Cmd(mdb.DELETE, TRASH, "", mdb.HASH, m.OptionSimple(kit.MDB_HASH))
|
||||
}},
|
||||
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
os.Remove(m.Option(kit.MDB_FILE))
|
||||
os.Remove(m.Option(FILE))
|
||||
m.Cmd(mdb.DELETE, TRASH, "", mdb.HASH, m.OptionSimple(kit.MDB_HASH))
|
||||
}},
|
||||
mdb.PRUNES: {Name: "prunes before@date", Help: "清理", Hand: func(m *ice.Message, arg ...string) {
|
||||
mdb.HashPrunes(m, func(value map[string]string) bool {
|
||||
os.Remove(value[kit.MDB_FILE])
|
||||
os.Remove(value[FILE])
|
||||
return false
|
||||
})
|
||||
}},
|
||||
|
@ -58,7 +58,7 @@ func init() {
|
||||
m.Option(nfs.DIR_ROOT, m.Conf(cli.DAEMON, kit.META_PATH))
|
||||
m.Cmd(nfs.DIR, ice.PWD, "time,path,size").Table(func(index int, value map[string]string, head []string) {
|
||||
m.Push(kit.MDB_TIME, value[kit.MDB_TIME])
|
||||
m.Push(PORT, path.Base(value[kit.MDB_PATH]))
|
||||
m.Push(PORT, path.Base(value[nfs.PATH]))
|
||||
m.Push(kit.MDB_SIZE, value[kit.MDB_SIZE])
|
||||
})
|
||||
m.SortInt(PORT)
|
||||
|
@ -13,7 +13,7 @@ import (
|
||||
)
|
||||
|
||||
func _cache_name(m *ice.Message, h string) string {
|
||||
return path.Join(m.Config(kit.MDB_PATH), h[:2], h)
|
||||
return path.Join(m.Config(nfs.PATH), h[:2], h)
|
||||
}
|
||||
func _cache_save(m *ice.Message, kind, name, text string, arg ...string) { // file size
|
||||
if name == "" {
|
||||
@ -30,7 +30,7 @@ func _cache_save(m *ice.Message, kind, name, text string, arg ...string) { // fi
|
||||
text = kit.Select(file, text)
|
||||
h := m.Cmdx(mdb.INSERT, CACHE, "", mdb.HASH,
|
||||
kit.MDB_TYPE, kind, kit.MDB_NAME, name, kit.MDB_TEXT, text,
|
||||
kit.MDB_FILE, file, kit.MDB_SIZE, size)
|
||||
nfs.FILE, file, kit.MDB_SIZE, size)
|
||||
|
||||
// 返回结果
|
||||
m.Push(kit.MDB_TIME, m.Time())
|
||||
@ -38,16 +38,16 @@ func _cache_save(m *ice.Message, kind, name, text string, arg ...string) { // fi
|
||||
m.Push(kit.MDB_NAME, name)
|
||||
m.Push(kit.MDB_TEXT, text)
|
||||
m.Push(kit.MDB_SIZE, size)
|
||||
m.Push(kit.MDB_FILE, file)
|
||||
m.Push(nfs.FILE, file)
|
||||
m.Push(kit.MDB_HASH, h)
|
||||
m.Push(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) {
|
||||
if value[kit.MDB_FILE] == "" {
|
||||
if value[nfs.FILE] == "" {
|
||||
m.Cmdy(nfs.SAVE, file, value[kit.MDB_TEXT])
|
||||
} else {
|
||||
m.Cmdy(nfs.LINK, file, value[kit.MDB_FILE])
|
||||
m.Cmdy(nfs.LINK, file, value[nfs.FILE])
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -72,7 +72,7 @@ func _cache_upload(m *ice.Message, r *http.Request) (kind, name, file, size stri
|
||||
// 导入数据
|
||||
buf.Seek(0, os.SEEK_SET)
|
||||
if n, e := io.Copy(f, buf); m.Assert(e) {
|
||||
m.Log_IMPORT(kit.MDB_FILE, p, kit.MDB_SIZE, kit.FmtSize(int64(n)))
|
||||
m.Log_IMPORT(nfs.FILE, p, kit.MDB_SIZE, kit.FmtSize(int64(n)))
|
||||
return h.Header.Get(ContentType), h.Filename, p, kit.Format(n)
|
||||
}
|
||||
}
|
||||
@ -102,7 +102,7 @@ func _cache_download(m *ice.Message, r *http.Response) (file, size string) {
|
||||
})
|
||||
default:
|
||||
if s != step && s%10 == 0 {
|
||||
m.Log_IMPORT(kit.MDB_FILE, p, kit.MDB_STEP, s,
|
||||
m.Log_IMPORT(nfs.FILE, p, kit.MDB_STEP, s,
|
||||
kit.MDB_SIZE, kit.FmtSize(int64(size)), kit.MDB_TOTAL, kit.FmtSize(int64(total)))
|
||||
}
|
||||
}
|
||||
@ -117,7 +117,7 @@ func _cache_download(m *ice.Message, r *http.Response) (file, size string) {
|
||||
if f, e := os.Open(p); m.Assert(e) {
|
||||
defer f.Close()
|
||||
|
||||
m.Log_IMPORT(kit.MDB_FILE, p, kit.MDB_SIZE, kit.FmtSize(int64(size)))
|
||||
m.Log_IMPORT(nfs.FILE, p, kit.MDB_SIZE, kit.FmtSize(int64(size)))
|
||||
c := _cache_name(m, kit.Hashs(f))
|
||||
m.Cmd(nfs.LINK, c, p)
|
||||
return c, kit.Format(size)
|
||||
@ -139,16 +139,16 @@ func init() {
|
||||
Index.Merge(&ice.Context{Configs: map[string]*ice.Config{
|
||||
CACHE: {Name: CACHE, Help: "缓存池", Value: kit.Data(
|
||||
kit.MDB_SHORT, kit.MDB_TEXT, kit.MDB_FIELD, "time,hash,size,type,name,text",
|
||||
kit.MDB_STORE, ice.VAR_DATA, kit.MDB_PATH, ice.VAR_FILE, kit.MDB_FSIZE, "200000",
|
||||
kit.MDB_STORE, ice.VAR_DATA, nfs.PATH, ice.VAR_FILE, kit.MDB_FSIZE, "200000",
|
||||
kit.MDB_LIMIT, "50", kit.MDB_LEAST, "30",
|
||||
)},
|
||||
}, Commands: map[string]*ice.Command{
|
||||
"/cache/": {Name: "/cache/", Help: "缓存池", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Richs(CACHE, nil, arg[0], func(key string, value map[string]interface{}) {
|
||||
if kit.Format(value[kit.MDB_FILE]) == "" {
|
||||
if kit.Format(value[nfs.FILE]) == "" {
|
||||
m.RenderResult(value[kit.MDB_TEXT])
|
||||
} else {
|
||||
m.RenderDownload(value[kit.MDB_FILE])
|
||||
m.RenderDownload(value[nfs.FILE])
|
||||
}
|
||||
})
|
||||
}},
|
||||
@ -178,7 +178,7 @@ func init() {
|
||||
return
|
||||
}
|
||||
|
||||
if m.Append(kit.MDB_FILE) == "" {
|
||||
if m.Append(nfs.FILE) == "" {
|
||||
m.PushScript("inner", m.Append(kit.MDB_TEXT))
|
||||
} else {
|
||||
m.PushDownload(m.Append(kit.MDB_NAME), m.MergeURL2("/share/cache/"+arg[0]))
|
||||
|
@ -16,7 +16,7 @@ import (
|
||||
)
|
||||
|
||||
func _dream_list(m *ice.Message) {
|
||||
m.Cmdy(nfs.DIR, m.Config(kit.MDB_PATH), "time,size,name").Table(func(index int, value map[string]string, head []string) {
|
||||
m.Cmdy(nfs.DIR, m.Config(nfs.PATH), "time,size,name").Table(func(index int, value map[string]string, head []string) {
|
||||
if m.Richs(SPACE, nil, value[kit.MDB_NAME], func(key string, value map[string]interface{}) {
|
||||
m.Push(kit.MDB_TYPE, value[kit.MDB_TYPE])
|
||||
m.Push(kit.MDB_STATUS, cli.START)
|
||||
@ -36,9 +36,9 @@ func _dream_show(m *ice.Message, name string) {
|
||||
m.Option(kit.MDB_NAME, name)
|
||||
|
||||
// 任务目录
|
||||
p := path.Join(m.Config(kit.MDB_PATH), name)
|
||||
p := path.Join(m.Config(nfs.PATH), name)
|
||||
if m.Option(kit.SSH_REPOS) != "" { // 下载源码
|
||||
m.Cmd("web.code.git.repos", mdb.CREATE, m.OptionSimple(kit.SSH_REPOS), kit.MDB_PATH, p)
|
||||
m.Cmd("web.code.git.repos", mdb.CREATE, m.OptionSimple(kit.SSH_REPOS), nfs.PATH, p)
|
||||
} else { // 创建目录
|
||||
os.MkdirAll(p, ice.MOD_DIR)
|
||||
}
|
||||
@ -77,12 +77,12 @@ func _dream_show(m *ice.Message, name string) {
|
||||
m.Optionv(cli.CMD_ENV, kit.Simple(
|
||||
cli.CTX_DEV, "http://:"+m.Cmd(SERVE).Append(tcp.PORT),
|
||||
cli.PATH, kit.Path(path.Join(p, ice.BIN))+":"+kit.Path(ice.BIN)+":"+os.Getenv(cli.PATH),
|
||||
cli.USER, ice.Info.UserName, m.Confv(DREAM, kit.Keym(cli.ENV)),
|
||||
cli.USER, ice.Info.UserName, m.Configv(cli.ENV),
|
||||
))
|
||||
|
||||
// 启动任务
|
||||
m.Optionv(cli.CMD_OUTPUT, path.Join(p, m.Config(kit.Keys(cli.ENV, cli.CTX_LOG))))
|
||||
m.Cmd(cli.DAEMON, m.Confv(DREAM, kit.Keym(ice.CMD)), ice.DEV, ice.DEV, kit.MDB_NAME, name, m.OptionSimple(RIVER))
|
||||
m.Cmd(cli.DAEMON, m.Configv(ice.CMD), ice.DEV, ice.DEV, kit.MDB_NAME, name, m.OptionSimple(RIVER))
|
||||
m.Sleep(ice.MOD_TICK)
|
||||
m.Event(DREAM_CREATE, kit.MDB_TYPE, m.Option(kit.MDB_TYPE), kit.MDB_NAME, name)
|
||||
}
|
||||
@ -102,10 +102,10 @@ func init() {
|
||||
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||
switch arg[0] {
|
||||
case kit.MDB_NAME:
|
||||
m.Cmdy(nfs.DIR, m.Config(kit.MDB_PATH), "name,time")
|
||||
m.Cmdy(nfs.DIR, m.Config(nfs.PATH), "name,time")
|
||||
case kit.MDB_TEMPLATE:
|
||||
m.Cmdy(nfs.DIR, m.Config(kit.MDB_PATH), "path,size,time")
|
||||
m.SortStrR(kit.MDB_PATH)
|
||||
m.Cmdy(nfs.DIR, m.Config(nfs.PATH), "path,size,time")
|
||||
m.SortStrR(nfs.PATH)
|
||||
}
|
||||
}},
|
||||
mdb.CREATE: {Name: "create main=src/main.go@key name=hi@key from=usr/icebergs/misc/bash/bash.go@key", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
@ -124,11 +124,11 @@ func init() {
|
||||
return
|
||||
}
|
||||
|
||||
m.Option(nfs.DIR_ROOT, path.Join(m.Config(kit.MDB_PATH), arg[0]))
|
||||
m.Option(nfs.DIR_ROOT, path.Join(m.Config(nfs.PATH), arg[0]))
|
||||
m.Cmdy(nfs.CAT, arg[1:])
|
||||
}},
|
||||
}, Configs: map[string]*ice.Config{
|
||||
DREAM: {Name: DREAM, Help: "梦想家", Value: kit.Data(kit.MDB_PATH, ice.USR_LOCAL_WORK,
|
||||
DREAM: {Name: DREAM, Help: "梦想家", Value: kit.Data(nfs.PATH, ice.USR_LOCAL_WORK,
|
||||
ice.CMD, []interface{}{"ice.bin", SPACE, tcp.DIAL},
|
||||
cli.ENV, kit.Dict(cli.CTX_LOG, ice.BIN_BOOT_LOG),
|
||||
"miss", `#!/bin/bash
|
||||
|
@ -96,11 +96,11 @@ func init() {
|
||||
switch arg[0] {
|
||||
case kit.MDB_NAME:
|
||||
m.Cmdy(nfs.DIR, m.Conf(DREAM, kit.META_PATH), "name,size,time")
|
||||
m.SortStrR(kit.MDB_PATH)
|
||||
m.SortStrR(nfs.PATH)
|
||||
|
||||
case kit.MDB_TEMPLATE:
|
||||
m.Cmdy(nfs.DIR, m.Conf(DREAM, kit.META_PATH), "path,size,time")
|
||||
m.SortStrR(kit.MDB_PATH)
|
||||
m.SortStrR(nfs.PATH)
|
||||
}
|
||||
}},
|
||||
mdb.CREATE: {Name: "create main=src/main.go@key name=hi@key from=usr/icebergs/misc/bash/bash.go@key", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
|
@ -67,7 +67,7 @@ func _serve_main(m *ice.Message, w http.ResponseWriter, r *http.Request) bool {
|
||||
msg := m.Spawn()
|
||||
msg.W, msg.R = w, r
|
||||
repos := kit.Select(ice.INTSHELL, ice.VOLCANOS, strings.Contains(r.Header.Get("User-Agent"), "Mozilla/5.0"))
|
||||
Render(msg, ice.RENDER_DOWNLOAD, path.Join(m.Config(kit.Keys(repos, kit.MDB_PATH)), m.Config(kit.Keys(repos, kit.MDB_INDEX))))
|
||||
Render(msg, ice.RENDER_DOWNLOAD, path.Join(m.Config(kit.Keys(repos, nfs.PATH)), m.Config(kit.Keys(repos, kit.MDB_INDEX))))
|
||||
return false // 网站主页
|
||||
}
|
||||
|
||||
@ -263,12 +263,12 @@ func init() {
|
||||
"help", ice.TRUE, "x", ice.TRUE,
|
||||
), LOGHEADERS, ice.FALSE,
|
||||
|
||||
kit.MDB_PATH, kit.Dict("/", ice.USR_VOLCANOS),
|
||||
ice.VOLCANOS, kit.Dict(kit.MDB_PATH, ice.USR_VOLCANOS, kit.MDB_INDEX, "page/index.html",
|
||||
nfs.PATH, kit.Dict("/", ice.USR_VOLCANOS),
|
||||
ice.VOLCANOS, kit.Dict(nfs.PATH, ice.USR_VOLCANOS, kit.MDB_INDEX, "page/index.html",
|
||||
kit.SSH_REPOS, "https://shylinux.com/x/volcanos", kit.SSH_BRANCH, kit.SSH_MASTER,
|
||||
), ice.PUBLISH, ice.USR_PUBLISH,
|
||||
|
||||
ice.INTSHELL, kit.Dict(kit.MDB_PATH, ice.USR_INTSHELL, kit.MDB_INDEX, ice.INDEX_SH,
|
||||
ice.INTSHELL, kit.Dict(nfs.PATH, ice.USR_INTSHELL, kit.MDB_INDEX, ice.INDEX_SH,
|
||||
kit.SSH_REPOS, "https://shylinux.com/x/intshell", kit.SSH_BRANCH, kit.SSH_MASTER,
|
||||
), ice.REQUIRE, ".ish/pluged",
|
||||
)},
|
||||
|
@ -12,6 +12,7 @@ import (
|
||||
"shylinux.com/x/icebergs/base/aaa"
|
||||
"shylinux.com/x/icebergs/base/cli"
|
||||
"shylinux.com/x/icebergs/base/mdb"
|
||||
"shylinux.com/x/icebergs/base/nfs"
|
||||
"shylinux.com/x/icebergs/base/ssh"
|
||||
"shylinux.com/x/icebergs/base/tcp"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
@ -24,33 +25,33 @@ func _share_link(m *ice.Message, p string, arg ...interface{}) string {
|
||||
func _share_repos(m *ice.Message, repos string, arg ...string) {
|
||||
prefix := kit.Path(m.Conf(SERVE, kit.Keym(ice.REQUIRE)))
|
||||
if _, e := os.Stat(path.Join(prefix, repos)); e != nil { // 克隆代码
|
||||
m.Cmd("web.code.git.repos", mdb.CREATE, kit.SSH_REPOS, "https://"+repos, kit.MDB_PATH, path.Join(prefix, repos))
|
||||
m.Cmd("web.code.git.repos", mdb.CREATE, kit.SSH_REPOS, "https://"+repos, nfs.PATH, path.Join(prefix, repos))
|
||||
}
|
||||
m.RenderDownload(path.Join(prefix, repos, path.Join(arg...)))
|
||||
}
|
||||
func _share_proxy(m *ice.Message) {
|
||||
switch p := path.Join(ice.VAR_PROXY, m.Option(ice.POD), m.Option(kit.MDB_PATH)); m.R.Method {
|
||||
switch p := path.Join(ice.VAR_PROXY, m.Option(ice.POD), m.Option(nfs.PATH)); m.R.Method {
|
||||
case http.MethodGet: // 下发文件
|
||||
m.RenderDownload(path.Join(p, m.Option(kit.MDB_NAME)))
|
||||
|
||||
case http.MethodPost: // 上传文件
|
||||
m.Cmdy(CACHE, UPLOAD)
|
||||
m.Cmdy(CACHE, WATCH, m.Option(kit.MDB_DATA), p)
|
||||
m.RenderResult(m.Option(kit.MDB_PATH))
|
||||
m.RenderResult(m.Option(nfs.PATH))
|
||||
}
|
||||
}
|
||||
func _share_cache(m *ice.Message, arg ...string) {
|
||||
if pod := m.Option(ice.POD); m.PodCmd(CACHE, arg[0]) {
|
||||
if m.Append(kit.MDB_FILE) == "" {
|
||||
if m.Append(nfs.FILE) == "" {
|
||||
m.RenderResult(m.Append(kit.MDB_TEXT))
|
||||
} else {
|
||||
m.Option(ice.POD, pod)
|
||||
_share_local(m, m.Append(kit.MDB_FILE))
|
||||
_share_local(m, m.Append(nfs.FILE))
|
||||
}
|
||||
return
|
||||
}
|
||||
msg := m.Cmd(CACHE, arg[0])
|
||||
m.RenderDownload(msg.Append(kit.MDB_FILE), msg.Append(kit.MDB_TYPE), msg.Append(kit.MDB_NAME))
|
||||
m.RenderDownload(msg.Append(nfs.FILE), msg.Append(kit.MDB_TYPE), msg.Append(kit.MDB_NAME))
|
||||
}
|
||||
func _share_local(m *ice.Message, arg ...string) {
|
||||
p := path.Join(arg...)
|
||||
@ -76,7 +77,7 @@ func _share_local(m *ice.Message, arg ...string) {
|
||||
|
||||
// 上传文件
|
||||
m.Cmdy(SPACE, m.Option(ice.POD), SPIDE, ice.DEV, SPIDE_RAW, m.MergeURL2("/share/proxy"),
|
||||
SPIDE_PART, m.OptionSimple(ice.POD), kit.MDB_PATH, p, CACHE, cache.Format(ice.MOD_TIME), UPLOAD, "@"+p)
|
||||
SPIDE_PART, m.OptionSimple(ice.POD), nfs.PATH, p, CACHE, cache.Format(ice.MOD_TIME), UPLOAD, "@"+p)
|
||||
|
||||
if s, e := os.Stat(pp); e == nil && !s.IsDir() {
|
||||
p = pp
|
||||
|
@ -16,6 +16,7 @@ import (
|
||||
ice "shylinux.com/x/icebergs"
|
||||
"shylinux.com/x/icebergs/base/cli"
|
||||
"shylinux.com/x/icebergs/base/mdb"
|
||||
"shylinux.com/x/icebergs/base/nfs"
|
||||
"shylinux.com/x/icebergs/base/tcp"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
)
|
||||
@ -31,7 +32,7 @@ func _spide_create(m *ice.Message, name, address string) {
|
||||
SPIDE_COOKIE, kit.Dict(), SPIDE_HEADER, kit.Dict(), SPIDE_CLIENT, kit.Dict(
|
||||
kit.MDB_NAME, name, SPIDE_METHOD, SPIDE_POST, "url", address,
|
||||
tcp.PROTOCOL, uri.Scheme, tcp.HOSTNAME, uri.Host,
|
||||
kit.MDB_PATH, dir, kit.MDB_FILE, file, "query", uri.RawQuery,
|
||||
nfs.PATH, dir, nfs.FILE, file, "query", uri.RawQuery,
|
||||
kit.MDB_TIMEOUT, "600s", LOGHEADERS, ice.FALSE,
|
||||
),
|
||||
)))
|
||||
@ -259,7 +260,7 @@ func _spide_save(m *ice.Message, cache, save, uri string, res *http.Response) {
|
||||
defer f.Close()
|
||||
|
||||
if n, e := io.Copy(f, res.Body); m.Assert(e) {
|
||||
m.Log_EXPORT(kit.MDB_SIZE, n, kit.MDB_FILE, p)
|
||||
m.Log_EXPORT(kit.MDB_SIZE, n, nfs.FILE, p)
|
||||
m.Echo(p)
|
||||
}
|
||||
}
|
||||
|
@ -45,12 +45,12 @@ func _story_index(m *ice.Message, name string, withdata bool) {
|
||||
m.Richs(CACHE, nil, name, func(key string, value map[string]interface{}) {
|
||||
// 查询数据
|
||||
m.Push(DATA, key)
|
||||
m.Push(key, value, []string{kit.MDB_TEXT, kit.MDB_FILE, kit.MDB_SIZE, kit.MDB_TIME, kit.MDB_NAME, kit.MDB_TYPE})
|
||||
m.Push(key, value, []string{kit.MDB_TEXT, nfs.FILE, kit.MDB_SIZE, kit.MDB_TIME, kit.MDB_NAME, kit.MDB_TYPE})
|
||||
if withdata {
|
||||
if value[kit.MDB_FILE] == "" {
|
||||
if value[nfs.FILE] == "" {
|
||||
m.Echo("%s", kit.Format(value[kit.MDB_TEXT]))
|
||||
} else {
|
||||
m.Echo("%s", m.Cmdx(nfs.CAT, value[kit.MDB_FILE]))
|
||||
m.Echo("%s", m.Cmdx(nfs.CAT, value[nfs.FILE]))
|
||||
}
|
||||
}
|
||||
})
|
||||
|
@ -7,6 +7,7 @@ import (
|
||||
"shylinux.com/x/icebergs/base/aaa"
|
||||
"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"
|
||||
)
|
||||
@ -131,7 +132,7 @@ func _action_domain(m *ice.Message, cmd string, arg ...string) (domain string) {
|
||||
case PRIVATE: // 私有群
|
||||
domain = m.Option(ice.MSG_DOMAIN, kit.Keys("U"+m.Option(ice.MSG_USERNAME)))
|
||||
}
|
||||
m.Option(ice.MSG_LOCAL, path.Join(m.Config(kit.MDB_PATH), domain))
|
||||
m.Option(ice.MSG_LOCAL, path.Join(m.Config(nfs.PATH), domain))
|
||||
})
|
||||
m.Log_AUTH(RIVER, river, STORM, storm, DOMAIN, domain)
|
||||
return
|
||||
@ -154,7 +155,7 @@ func init() {
|
||||
Index.Merge(&ice.Context{Configs: map[string]*ice.Config{
|
||||
ACTION: {Name: ACTION, Help: "应用", Value: kit.Data(
|
||||
MENUS, kit.List(kit.List("help", "tutor", "manual", "service", "devops", "refer")),
|
||||
kit.MDB_PATH, ice.USR_LOCAL_RIVER,
|
||||
nfs.PATH, ice.USR_LOCAL_RIVER,
|
||||
)},
|
||||
}, Commands: map[string]*ice.Command{
|
||||
"/action": {Name: "/action river storm action arg...", Help: "工作台", Action: ice.MergeAction(map[string]*ice.Action{
|
||||
|
@ -16,7 +16,7 @@ const CMD = "cmd"
|
||||
|
||||
func init() {
|
||||
Index.Merge(&ice.Context{Configs: map[string]*ice.Config{
|
||||
CMD: {Name: CMD, Help: "命令", Value: kit.Data(kit.MDB_SHORT, "type", kit.MDB_PATH, ice.PWD)},
|
||||
CMD: {Name: CMD, Help: "命令", Value: kit.Data(kit.MDB_SHORT, "type", nfs.PATH, ice.PWD)},
|
||||
}, Commands: map[string]*ice.Command{
|
||||
"/cmd/": {Name: "/cmd/", Help: "命令", Action: ice.MergeAction(map[string]*ice.Action{
|
||||
ice.CTX_INIT: {Name: "_init", Help: "初始化", Hand: func(m *ice.Message, arg ...string) {
|
||||
@ -35,7 +35,7 @@ func init() {
|
||||
return // 目录
|
||||
}
|
||||
|
||||
p := path.Join(m.Config(kit.MDB_PATH), path.Join(arg...))
|
||||
p := path.Join(m.Config(nfs.PATH), path.Join(arg...))
|
||||
if mdb.HashSelect(m.Spawn(), kit.Ext(m.R.URL.Path)).Table(func(index int, value map[string]string, head []string) {
|
||||
m.RenderCmd(value[kit.MDB_NAME], p)
|
||||
}).Length() > 0 {
|
||||
@ -52,7 +52,7 @@ func init() {
|
||||
}},
|
||||
CMD: {Name: "cmd path auto upload up home", Help: "命令", Action: ice.MergeAction(map[string]*ice.Action{
|
||||
web.UPLOAD: {Name: "upload", Help: "上传", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Upload(path.Join(m.Config(kit.MDB_PATH), strings.TrimPrefix(path.Dir(m.R.URL.Path), "/cmd")))
|
||||
m.Upload(path.Join(m.Config(nfs.PATH), strings.TrimPrefix(path.Dir(m.R.URL.Path), "/cmd")))
|
||||
}},
|
||||
|
||||
"home": {Name: "home", Help: "根目录", Hand: func(m *ice.Message, arg ...string) {
|
||||
@ -72,7 +72,7 @@ func init() {
|
||||
m.ProcessLocation(arg[0])
|
||||
return
|
||||
}
|
||||
m.Option(nfs.DIR_ROOT, path.Join(m.Config(kit.MDB_PATH), strings.TrimPrefix(path.Dir(m.R.URL.Path), "/cmd")))
|
||||
m.Option(nfs.DIR_ROOT, path.Join(m.Config(nfs.PATH), strings.TrimPrefix(path.Dir(m.R.URL.Path), "/cmd")))
|
||||
m.Cmdy(nfs.DIR, arg)
|
||||
}},
|
||||
}})
|
||||
|
@ -27,7 +27,7 @@ const DIV = "div"
|
||||
func init() {
|
||||
Index.Merge(&ice.Context{Configs: map[string]*ice.Config{
|
||||
DIV: {Name: "div", Help: "定制", Value: kit.Data(
|
||||
kit.MDB_FIELD, "time,hash,type,name,text", kit.MDB_PATH, ice.USR_PUBLISH,
|
||||
kit.MDB_FIELD, "time,hash,type,name,text", nfs.PATH, ice.USR_PUBLISH,
|
||||
kit.MDB_TEMPLATE, _div_template,
|
||||
)},
|
||||
}, Commands: map[string]*ice.Command{
|
||||
|
@ -46,7 +46,6 @@ func _header_grant(m *ice.Message, arg ...string) {
|
||||
}
|
||||
|
||||
// 授权登录
|
||||
m.Cmd(aaa.ROLE, kit.Select(aaa.TECH, aaa.VOID, m.Option(ice.MSG_USERROLE) == aaa.VOID), m.Option(ice.MSG_USERNAME))
|
||||
m.Cmd(web.SPACE, m.Option(web.SPACE), ice.MSG_SESSID, aaa.SessCreate(m, m.Option(ice.MSG_USERNAME)))
|
||||
}
|
||||
func _header_share(m *ice.Message, arg ...string) {
|
||||
|
@ -6,6 +6,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"
|
||||
"shylinux.com/x/icebergs/core/code"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
@ -170,8 +171,8 @@ func init() {
|
||||
}},
|
||||
aaa.INVITE: {Name: "invite", Help: "脚本", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(code.PUBLISH, ice.CONTEXTS)
|
||||
m.Cmd(code.PUBLISH, mdb.CREATE, kit.MDB_FILE, ice.BIN_ICE_SH)
|
||||
m.Cmd(code.PUBLISH, mdb.CREATE, kit.MDB_FILE, ice.BIN_ICE_BIN)
|
||||
m.Cmd(code.PUBLISH, mdb.CREATE, nfs.FILE, ice.BIN_ICE_SH)
|
||||
m.Cmd(code.PUBLISH, mdb.CREATE, nfs.FILE, ice.BIN_ICE_BIN)
|
||||
}},
|
||||
SHARE: {Name: "share", Help: "共享", Hand: func(m *ice.Message, arg ...string) {
|
||||
_header_share(m, arg...)
|
||||
|
@ -149,7 +149,7 @@ func init() {
|
||||
switch arg[0] {
|
||||
case kit.MDB_MAIN:
|
||||
m.Cmdy(nfs.DIR, ice.SRC, "path,size,time", ice.Option{nfs.DIR_REG, `.*\.go`})
|
||||
m.RenameAppend(kit.MDB_PATH, arg[0])
|
||||
m.RenameAppend(nfs.PATH, arg[0])
|
||||
}
|
||||
}},
|
||||
mdb.CREATE: {Name: "create main=src/main.go@key key zone type=Zone,Hash,Data name=hi list help", Help: "模块", Hand: func(m *ice.Message, arg ...string) {
|
||||
|
@ -38,16 +38,16 @@ func _pack_dir(m *ice.Message, pack *os.File, dir string) {
|
||||
m.Option(nfs.DIR_TYPE, nfs.CAT)
|
||||
m.Option(nfs.DIR_ROOT, dir)
|
||||
|
||||
m.Cmd(nfs.DIR, ice.PWD).Sort(kit.MDB_PATH).Table(func(index int, value map[string]string, head []string) {
|
||||
if path.Base(value[kit.MDB_PATH]) == "binpack.go" {
|
||||
m.Cmd(nfs.DIR, ice.PWD).Sort(nfs.PATH).Table(func(index int, value map[string]string, head []string) {
|
||||
if path.Base(value[nfs.PATH]) == "binpack.go" {
|
||||
return
|
||||
}
|
||||
switch strings.Split(value[kit.MDB_PATH], ice.PS)[0] {
|
||||
switch strings.Split(value[nfs.PATH], ice.PS)[0] {
|
||||
case "pluged", "trash":
|
||||
return
|
||||
}
|
||||
|
||||
pack.WriteString(_pack_file(m, path.Join(dir, value[kit.MDB_PATH]), path.Join(dir, value[kit.MDB_PATH])))
|
||||
pack.WriteString(_pack_file(m, path.Join(dir, value[nfs.PATH]), path.Join(dir, value[nfs.PATH])))
|
||||
})
|
||||
pack.WriteString(ice.NL)
|
||||
}
|
||||
@ -61,8 +61,8 @@ func _pack_volcanos(m *ice.Message, pack *os.File, dir string) {
|
||||
pack.WriteString(_pack_file(m, ice.PS+k, path.Join(dir, k)))
|
||||
}
|
||||
for _, k := range []string{"lib", "page", "panel", "plugin"} {
|
||||
m.Cmd(nfs.DIR, k).Sort(kit.MDB_PATH).Table(func(index int, value map[string]string, head []string) {
|
||||
pack.WriteString(_pack_file(m, ice.PS+value[kit.MDB_PATH], path.Join(dir, value[kit.MDB_PATH])))
|
||||
m.Cmd(nfs.DIR, k).Sort(nfs.PATH).Table(func(index int, value map[string]string, head []string) {
|
||||
pack.WriteString(_pack_file(m, ice.PS+value[nfs.PATH], path.Join(dir, value[nfs.PATH])))
|
||||
})
|
||||
}
|
||||
pack.WriteString(ice.NL)
|
||||
|
@ -8,6 +8,7 @@ import (
|
||||
ice "shylinux.com/x/icebergs"
|
||||
"shylinux.com/x/icebergs/base/cli"
|
||||
"shylinux.com/x/icebergs/base/mdb"
|
||||
"shylinux.com/x/icebergs/base/nfs"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
)
|
||||
|
||||
@ -95,7 +96,7 @@ func init() {
|
||||
}
|
||||
for _, i := range []string{"1", "2", "3", "8"} {
|
||||
if text := _c_help(m, i, kit.Select(kit.MDB_MAIN, arg, 1)); text != "" {
|
||||
m.PushSearch(ice.CMD, MAN, kit.MDB_FILE, kit.Keys(arg[1], MAN+i), kit.MDB_LINE, 1, kit.MDB_TEXT, text)
|
||||
m.PushSearch(ice.CMD, MAN, nfs.FILE, kit.Keys(arg[1], MAN+i), nfs.LINE, 1, kit.MDB_TEXT, text)
|
||||
}
|
||||
}
|
||||
}},
|
||||
|
@ -27,7 +27,7 @@ func init() {
|
||||
COMPILE: {Name: "compile arch=amd64,386,arm os=linux,darwin,windows src=src/main.go@key run:button", Help: "编译", Action: map[string]*ice.Action{
|
||||
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(nfs.DIR, ice.SRC, "path,size,time", ice.Option{nfs.DIR_REG, `.*\.go$`})
|
||||
m.Sort(kit.MDB_PATH)
|
||||
m.Sort(nfs.PATH)
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
|
@ -10,6 +10,7 @@ import (
|
||||
ice "shylinux.com/x/icebergs"
|
||||
"shylinux.com/x/icebergs/base/cli"
|
||||
"shylinux.com/x/icebergs/base/mdb"
|
||||
"shylinux.com/x/icebergs/base/nfs"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
)
|
||||
|
||||
@ -40,7 +41,7 @@ func _go_tags(m *ice.Message, key string) {
|
||||
bio := bufio.NewScanner(f)
|
||||
for i := 1; bio.Scan(); i++ {
|
||||
if i == line || bio.Text() == text {
|
||||
m.PushSearch(ice.CMD, "tags", kit.MDB_FILE, strings.TrimPrefix(file, ice.PWD), kit.MDB_LINE, kit.Format(i), kit.MDB_TEXT, bio.Text())
|
||||
m.PushSearch(ice.CMD, "tags", nfs.FILE, strings.TrimPrefix(file, ice.PWD), nfs.LINE, kit.Format(i), kit.MDB_TEXT, bio.Text())
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -50,14 +51,14 @@ func _go_help(m *ice.Message, key string) {
|
||||
if p == "" {
|
||||
return
|
||||
}
|
||||
m.PushSearch(ice.CMD, "help", kit.MDB_FILE, key+".godoc", kit.MDB_LINE, 1, kit.MDB_TEXT, p)
|
||||
m.PushSearch(ice.CMD, "help", nfs.FILE, key+".godoc", nfs.LINE, 1, kit.MDB_TEXT, p)
|
||||
}
|
||||
func _go_find(m *ice.Message, key string) {
|
||||
for _, p := range strings.Split(m.Cmdx(cli.SYSTEM, FIND, ".", "-name", key), ice.NL) {
|
||||
if p == "" {
|
||||
continue
|
||||
}
|
||||
m.PushSearch(ice.CMD, FIND, kit.MDB_FILE, strings.TrimPrefix(p, ice.PWD), kit.MDB_LINE, 1, kit.MDB_TEXT, "")
|
||||
m.PushSearch(ice.CMD, FIND, nfs.FILE, strings.TrimPrefix(p, ice.PWD), nfs.LINE, 1, kit.MDB_TEXT, "")
|
||||
}
|
||||
}
|
||||
func _go_grep(m *ice.Message, key string) {
|
||||
|
@ -94,7 +94,7 @@ func init() {
|
||||
return
|
||||
}
|
||||
if len(arg) < 2 {
|
||||
nfs.Dir(m, kit.MDB_PATH)
|
||||
nfs.Dir(m, nfs.PATH)
|
||||
m.Set(ice.MSG_STATUS)
|
||||
return
|
||||
}
|
||||
|
@ -18,7 +18,7 @@ import (
|
||||
func _install_download(m *ice.Message) {
|
||||
link := m.Option(kit.MDB_LINK)
|
||||
name := path.Base(link)
|
||||
file := path.Join(kit.Select(m.Config(kit.MDB_PATH), m.Option(kit.MDB_PATH)), name)
|
||||
file := path.Join(kit.Select(m.Config(nfs.PATH), m.Option(nfs.PATH)), name)
|
||||
|
||||
defer m.Cmdy(nfs.DIR, file)
|
||||
if _, e := os.Stat(file); e == nil {
|
||||
@ -46,7 +46,7 @@ func _install_download(m *ice.Message) {
|
||||
|
||||
// 下载
|
||||
msg := m.Cmd("web.spide", ice.DEV, web.SPIDE_CACHE, web.SPIDE_GET, link)
|
||||
m.Cmd(nfs.LINK, file, msg.Append(kit.MDB_FILE))
|
||||
m.Cmd(nfs.LINK, file, msg.Append(nfs.FILE))
|
||||
|
||||
// 解压
|
||||
m.Option(cli.CMD_DIR, path.Dir(file))
|
||||
@ -54,7 +54,7 @@ func _install_download(m *ice.Message) {
|
||||
})
|
||||
}
|
||||
func _install_build(m *ice.Message, arg ...string) {
|
||||
p := m.Option(cli.CMD_DIR, path.Join(m.Config(kit.MDB_PATH), kit.TrimExt(m.Option(kit.MDB_LINK))))
|
||||
p := m.Option(cli.CMD_DIR, path.Join(m.Config(nfs.PATH), kit.TrimExt(m.Option(kit.MDB_LINK))))
|
||||
pp := kit.Path(path.Join(p, "_install"))
|
||||
|
||||
// 推流
|
||||
@ -90,7 +90,7 @@ func _install_build(m *ice.Message, arg ...string) {
|
||||
m.Toast(ice.SUCCESS, cli.BUILD)
|
||||
}
|
||||
func _install_order(m *ice.Message, arg ...string) {
|
||||
p := path.Join(m.Config(kit.MDB_PATH), kit.TrimExt(m.Option(kit.MDB_LINK)), m.Option(kit.MDB_PATH)+ice.NL)
|
||||
p := path.Join(m.Config(nfs.PATH), kit.TrimExt(m.Option(kit.MDB_LINK)), m.Option(nfs.PATH)+ice.NL)
|
||||
if !strings.Contains(m.Cmdx(nfs.CAT, ice.ETC_PATH), p) {
|
||||
m.Cmd(nfs.PUSH, ice.ETC_PATH, p)
|
||||
}
|
||||
@ -108,10 +108,10 @@ func _install_spawn(m *ice.Message, arg ...string) {
|
||||
}
|
||||
|
||||
target := path.Join(m.Conf(cli.DAEMON, kit.META_PATH), m.Option(tcp.PORT))
|
||||
source := path.Join(m.Config(kit.MDB_PATH), kit.TrimExt(m.Option(kit.MDB_LINK)))
|
||||
source := path.Join(m.Config(nfs.PATH), kit.TrimExt(m.Option(kit.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) {
|
||||
m.Cmd(cli.SYSTEM, "cp", "-r", strings.TrimSuffix(value[kit.MDB_PATH], ice.PS), target)
|
||||
m.Cmd(cli.SYSTEM, "cp", "-r", strings.TrimSuffix(value[nfs.PATH], ice.PS), target)
|
||||
})
|
||||
m.Echo(target)
|
||||
}
|
||||
@ -154,7 +154,7 @@ const INSTALL = "install"
|
||||
func init() {
|
||||
Index.Merge(&ice.Context{Configs: map[string]*ice.Config{
|
||||
INSTALL: {Name: INSTALL, Help: "安装", Value: kit.Data(
|
||||
kit.MDB_SHORT, kit.MDB_NAME, kit.MDB_PATH, ice.USR_INSTALL,
|
||||
kit.MDB_SHORT, kit.MDB_NAME, nfs.PATH, ice.USR_INSTALL,
|
||||
)},
|
||||
}, Commands: map[string]*ice.Command{
|
||||
INSTALL: {Name: "install name port path auto download", Help: "安装", Meta: kit.Dict(), Action: map[string]*ice.Action{
|
||||
@ -174,9 +174,9 @@ func init() {
|
||||
_install_start(m, arg...)
|
||||
}},
|
||||
cli.SOURCE: {Name: "source link path", Help: "源码", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Option(nfs.DIR_ROOT, path.Join(m.Config(kit.MDB_PATH), kit.TrimExt(m.Option(kit.MDB_LINK)), "_install"))
|
||||
m.Option(nfs.DIR_ROOT, path.Join(m.Config(nfs.PATH), kit.TrimExt(m.Option(kit.MDB_LINK)), "_install"))
|
||||
defer m.StatusTime(nfs.PATH, m.Option(nfs.DIR_ROOT))
|
||||
m.Cmdy(nfs.DIR, m.Option(kit.MDB_PATH))
|
||||
m.Cmdy(nfs.DIR, m.Option(nfs.PATH))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
switch len(arg) {
|
||||
|
@ -48,7 +48,7 @@ func init() {
|
||||
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||
switch arg[0] {
|
||||
case BINNARY:
|
||||
m.Cmdy(nfs.DIR, "bin/", "path,size,time").RenameAppend(kit.MDB_PATH, BINNARY)
|
||||
m.Cmdy(nfs.DIR, "bin/", "path,size,time").RenameAppend(nfs.PATH, BINNARY)
|
||||
case SERVICE:
|
||||
m.Cmd(web.SPIDE).Table(func(index int, value map[string]string, head []string) {
|
||||
m.Push(SERVICE, kit.MergeURL2(value["client.url"], "/debug/pprof/profile"))
|
||||
|
@ -24,7 +24,7 @@ func _bin_list(m *ice.Message, dir string) {
|
||||
if s, e := os.Stat(path.Join(p, file)); e == nil {
|
||||
m.Push(kit.MDB_TIME, s.ModTime())
|
||||
m.Push(kit.MDB_SIZE, kit.FmtSize(s.Size()))
|
||||
m.Push(kit.MDB_FILE, file)
|
||||
m.Push(nfs.FILE, file)
|
||||
m.PushDownload(kit.MDB_LINK, file, path.Join(p, file))
|
||||
}
|
||||
}
|
||||
@ -44,7 +44,7 @@ func _publish_file(m *ice.Message, file string, arg ...string) string {
|
||||
}
|
||||
|
||||
// 发布文件
|
||||
target := path.Join(m.Config(kit.MDB_PATH), kit.Select(path.Base(file), arg, 0))
|
||||
target := path.Join(m.Config(nfs.PATH), kit.Select(path.Base(file), arg, 0))
|
||||
m.Log_EXPORT(PUBLISH, target, kit.MDB_FROM, file)
|
||||
m.Cmd(nfs.LINK, target, file)
|
||||
return target
|
||||
@ -52,7 +52,7 @@ func _publish_file(m *ice.Message, file string, arg ...string) string {
|
||||
func _publish_list(m *ice.Message, arg ...string) {
|
||||
m.Option(nfs.DIR_DEEP, ice.TRUE)
|
||||
m.Option(nfs.DIR_REG, kit.Select("", arg, 0))
|
||||
m.Option(nfs.DIR_ROOT, m.Config(kit.MDB_PATH))
|
||||
m.Option(nfs.DIR_ROOT, m.Config(nfs.PATH))
|
||||
m.Cmdy(nfs.DIR, ice.PWD, kit.Select("time,size,line,path,link", arg, 1))
|
||||
}
|
||||
|
||||
@ -61,7 +61,7 @@ const PUBLISH = "publish"
|
||||
func init() {
|
||||
Index.Merge(&ice.Context{Configs: map[string]*ice.Config{
|
||||
PUBLISH: {Name: PUBLISH, Help: "发布", Value: kit.Data(
|
||||
kit.MDB_PATH, ice.USR_PUBLISH, ice.CONTEXTS, _contexts,
|
||||
nfs.PATH, ice.USR_PUBLISH, ice.CONTEXTS, _contexts,
|
||||
SH, `#!/bin/bash
|
||||
echo "hello world"
|
||||
`,
|
||||
@ -71,30 +71,30 @@ echo "hello world"
|
||||
}, Commands: map[string]*ice.Command{
|
||||
PUBLISH: {Name: "publish path auto create volcanos icebergs intshell export", Help: "发布", Action: map[string]*ice.Action{
|
||||
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmd(aaa.ROLE, aaa.WHITE, aaa.VOID, m.Config(kit.MDB_PATH))
|
||||
m.Cmd(aaa.ROLE, aaa.WHITE, aaa.VOID, m.Config(nfs.PATH))
|
||||
m.Cmd(aaa.ROLE, aaa.WHITE, aaa.VOID, m.PrefixKey())
|
||||
m.Config(ice.CONTEXTS, _contexts)
|
||||
}},
|
||||
ice.VOLCANOS: {Name: "volcanos", Help: "火山架", Hand: func(m *ice.Message, arg ...string) {
|
||||
defer func() { m.EchoQRCode(m.Option(ice.MSG_USERWEB)) }()
|
||||
defer func() { m.Cmdy(PUBLISH, ice.CONTEXTS, ice.CORE) }()
|
||||
m.Cmd(PUBLISH, mdb.CREATE, kit.MDB_FILE, ice.ETC_MISS_SH)
|
||||
m.Cmd(PUBLISH, mdb.CREATE, kit.MDB_FILE, ice.GO_MOD)
|
||||
m.Cmd(PUBLISH, mdb.CREATE, nfs.FILE, ice.ETC_MISS_SH)
|
||||
m.Cmd(PUBLISH, mdb.CREATE, nfs.FILE, ice.GO_MOD)
|
||||
|
||||
m.Cmd(nfs.DEFS, path.Join(m.Config(kit.MDB_PATH), ice.ORDER_JS), m.Config(JS))
|
||||
m.Cmd(nfs.DEFS, path.Join(m.Config(nfs.PATH), ice.ORDER_JS), m.Config(JS))
|
||||
m.Cmd(nfs.DEFS, path.Join(m.Conf(web.SERVE, kit.Keym(ice.VOLCANOS, nfs.PATH)), PAGE_CACHE_JS), "")
|
||||
m.Cmd(nfs.DEFS, path.Join(m.Conf(web.SERVE, kit.Keym(ice.VOLCANOS, nfs.PATH)), PAGE_CACHE_CSS), "")
|
||||
_publish_list(m, `.*\.(html|css|js)$`)
|
||||
}},
|
||||
ice.ICEBERGS: {Name: "icebergs", Help: "冰山架", Hand: func(m *ice.Message, arg ...string) {
|
||||
defer func() { m.Cmdy(PUBLISH, ice.CONTEXTS, ice.BASE) }()
|
||||
m.Cmd(PUBLISH, mdb.CREATE, kit.MDB_FILE, ice.BIN_ICE_BIN)
|
||||
m.Cmd(PUBLISH, mdb.CREATE, kit.MDB_FILE, ice.BIN_ICE_SH)
|
||||
_bin_list(m, m.Config(kit.MDB_PATH))
|
||||
m.Cmd(PUBLISH, mdb.CREATE, nfs.FILE, ice.BIN_ICE_BIN)
|
||||
m.Cmd(PUBLISH, mdb.CREATE, nfs.FILE, ice.BIN_ICE_SH)
|
||||
_bin_list(m, m.Config(nfs.PATH))
|
||||
}},
|
||||
ice.INTSHELL: {Name: "intshell", Help: "神农架", Hand: func(m *ice.Message, arg ...string) {
|
||||
defer func() { m.Cmdy(PUBLISH, ice.CONTEXTS, ice.MISC) }()
|
||||
m.Cmd(nfs.DEFS, path.Join(m.Config(kit.MDB_PATH), ice.ORDER_SH), m.Config(SH))
|
||||
m.Cmd(nfs.DEFS, path.Join(m.Config(nfs.PATH), ice.ORDER_SH), m.Config(SH))
|
||||
_publish_list(m, ".*\\.(sh|vim|conf)$")
|
||||
}},
|
||||
ice.CONTEXTS: {Name: "contexts", Help: "环境", Hand: func(m *ice.Message, arg ...string) {
|
||||
@ -115,11 +115,11 @@ echo "hello world"
|
||||
m.ProcessAgain()
|
||||
}},
|
||||
mdb.CREATE: {Name: "create file", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
_publish_file(m, m.Option(kit.MDB_FILE))
|
||||
_publish_file(m, m.Option(nfs.FILE))
|
||||
}},
|
||||
nfs.TRASH: {Name: "trash", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
p := m.Option(cli.CMD_DIR, m.Config(kit.MDB_PATH))
|
||||
os.Remove(path.Join(p, m.Option(kit.MDB_PATH)))
|
||||
p := m.Option(cli.CMD_DIR, m.Config(nfs.PATH))
|
||||
os.Remove(path.Join(p, m.Option(nfs.PATH)))
|
||||
}},
|
||||
mdb.EXPORT: {Name: "export", Help: "工具链", Hand: func(m *ice.Message, arg ...string) {
|
||||
var list = []string{}
|
||||
@ -152,7 +152,7 @@ echo "hello world"
|
||||
m.ToastSuccess()
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Option(nfs.DIR_ROOT, m.Config(kit.MDB_PATH))
|
||||
m.Option(nfs.DIR_ROOT, m.Config(nfs.PATH))
|
||||
m.Cmdy(nfs.DIR, kit.Select("", arg, 0), "time,size,path,action,link")
|
||||
}},
|
||||
}})
|
||||
|
@ -6,6 +6,7 @@ import (
|
||||
|
||||
ice "shylinux.com/x/icebergs"
|
||||
"shylinux.com/x/icebergs/base/cli"
|
||||
"shylinux.com/x/icebergs/base/nfs"
|
||||
"shylinux.com/x/icebergs/base/web"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
)
|
||||
@ -16,27 +17,27 @@ func init() {
|
||||
Index.Merge(&ice.Context{Configs: map[string]*ice.Config{
|
||||
UPGRADE: {Name: UPGRADE, Help: "升级", Value: kit.Dict(kit.MDB_HASH, kit.Dict(
|
||||
cli.SYSTEM, kit.Dict(kit.MDB_LIST, kit.List(
|
||||
kit.MDB_TYPE, "bin", kit.MDB_FILE, "ice.sh", kit.MDB_PATH, ice.BIN_ICE_SH,
|
||||
kit.MDB_TYPE, "bin", kit.MDB_FILE, "ice.bin", kit.MDB_PATH, ice.BIN_ICE_BIN,
|
||||
kit.MDB_TYPE, "bin", nfs.FILE, "ice.sh", nfs.PATH, ice.BIN_ICE_SH,
|
||||
kit.MDB_TYPE, "bin", nfs.FILE, "ice.bin", nfs.PATH, ice.BIN_ICE_BIN,
|
||||
)),
|
||||
cli.SOURCE, kit.Dict(kit.MDB_LIST, kit.List(
|
||||
kit.MDB_TYPE, "txt", kit.MDB_FILE, "main.go", kit.MDB_PATH, ice.SRC_MAIN_GO,
|
||||
kit.MDB_TYPE, "txt", kit.MDB_FILE, "miss.sh", kit.MDB_PATH, ice.ETC_MISS_SH,
|
||||
kit.MDB_TYPE, "txt", kit.MDB_FILE, "go.mod", kit.MDB_PATH, ice.GO_MOD,
|
||||
kit.MDB_TYPE, "txt", nfs.FILE, "main.go", nfs.PATH, ice.SRC_MAIN_GO,
|
||||
kit.MDB_TYPE, "txt", nfs.FILE, "miss.sh", nfs.PATH, ice.ETC_MISS_SH,
|
||||
kit.MDB_TYPE, "txt", nfs.FILE, "go.mod", nfs.PATH, ice.GO_MOD,
|
||||
)),
|
||||
))},
|
||||
}, Commands: map[string]*ice.Command{
|
||||
UPGRADE: {Name: "upgrade item=system,source run:button", Help: "升级", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Grows(cmd, kit.Keys(kit.MDB_HASH, kit.Select(cli.SYSTEM, arg, 0)), "", "", func(index int, value map[string]interface{}) {
|
||||
if value[kit.MDB_PATH] == ice.BIN_ICE_BIN { // 程序文件
|
||||
value[kit.MDB_FILE] = kit.Keys(ice.ICE, runtime.GOOS, runtime.GOARCH)
|
||||
if value[nfs.PATH] == ice.BIN_ICE_BIN { // 程序文件
|
||||
value[nfs.FILE] = kit.Keys(ice.ICE, runtime.GOOS, runtime.GOARCH)
|
||||
m.Option(ice.EXIT, ice.TRUE)
|
||||
}
|
||||
|
||||
// 下载文件
|
||||
msg := m.Cmd(web.SPIDE, ice.DEV, web.SPIDE_CACHE, web.SPIDE_GET, "/publish/"+kit.Format(value[kit.MDB_FILE]))
|
||||
m.Cmd(web.STORY, web.WATCH, msg.Append(kit.MDB_FILE), value[kit.MDB_PATH])
|
||||
os.Chmod(kit.Format(value[kit.MDB_PATH]), 0770)
|
||||
msg := m.Cmd(web.SPIDE, ice.DEV, web.SPIDE_CACHE, web.SPIDE_GET, "/publish/"+kit.Format(value[nfs.FILE]))
|
||||
m.Cmd(web.STORY, web.WATCH, msg.Append(nfs.FILE), value[nfs.PATH])
|
||||
os.Chmod(kit.Format(value[nfs.PATH]), 0770)
|
||||
})
|
||||
if m.Option(ice.EXIT) == ice.TRUE {
|
||||
m.Sleep("1s").Go(func() { m.Cmd(ice.EXIT, 1) })
|
||||
|
@ -18,7 +18,7 @@ func init() {
|
||||
ice.Display("/plugin/local/code/vimer.js", INNER),
|
||||
), Action: map[string]*ice.Action{
|
||||
nfs.SAVE: {Name: "save type file path", Help: "保存", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(nfs.SAVE, path.Join(m.Option(kit.MDB_PATH), m.Option(kit.MDB_FILE)))
|
||||
m.Cmdy(nfs.SAVE, path.Join(m.Option(nfs.PATH), m.Option(nfs.FILE)))
|
||||
}},
|
||||
ice.RUN: {Name: "run", Help: "运行", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(cli.SYSTEM, GO, ice.RUN, path.Join(kit.Slice(arg, 0, 2)...))
|
||||
|
@ -12,10 +12,10 @@ import (
|
||||
)
|
||||
|
||||
func _volcanos(m *ice.Message, file ...string) string {
|
||||
return path.Join(m.Conf(web.SERVE, kit.Keym(ice.VOLCANOS, kit.MDB_PATH)), path.Join(file...))
|
||||
return path.Join(m.Conf(web.SERVE, kit.Keym(ice.VOLCANOS, nfs.PATH)), path.Join(file...))
|
||||
}
|
||||
func _publish(m *ice.Message, file ...string) string {
|
||||
return path.Join(m.Conf(PUBLISH, kit.Keym(kit.MDB_PATH)), path.Join(file...))
|
||||
return path.Join(m.Conf(PUBLISH, kit.Keym(nfs.PATH)), path.Join(file...))
|
||||
}
|
||||
|
||||
const (
|
||||
@ -50,18 +50,18 @@ func init() {
|
||||
|
||||
for _, k := range []string{"lib", "panel", "plugin"} {
|
||||
m.Cmd(nfs.DIR, k).Table(func(index int, value map[string]string, head []string) {
|
||||
if kit.Ext(value[kit.MDB_PATH]) == CSS {
|
||||
js.WriteString(`Volcanos.meta.cache["` + path.Join(ice.PS, value[kit.MDB_PATH]) + "\"] = []\n")
|
||||
css.WriteString(m.Cmdx(nfs.CAT, value[kit.MDB_PATH]))
|
||||
if kit.Ext(value[nfs.PATH]) == CSS {
|
||||
js.WriteString(`Volcanos.meta.cache["` + path.Join(ice.PS, value[nfs.PATH]) + "\"] = []\n")
|
||||
css.WriteString(m.Cmdx(nfs.CAT, value[nfs.PATH]))
|
||||
}
|
||||
})
|
||||
}
|
||||
js.WriteString(ice.NL)
|
||||
for _, k := range []string{"lib", "panel", "plugin"} {
|
||||
m.Cmd(nfs.DIR, k).Table(func(index int, value map[string]string, head []string) {
|
||||
if kit.Ext(value[kit.MDB_PATH]) == JS {
|
||||
js.WriteString(`_can_name = "` + path.Join(ice.PS, value[kit.MDB_PATH]) + "\";\n")
|
||||
js.WriteString(m.Cmdx(nfs.CAT, value[kit.MDB_PATH]))
|
||||
if kit.Ext(value[nfs.PATH]) == JS {
|
||||
js.WriteString(`_can_name = "` + path.Join(ice.PS, value[nfs.PATH]) + "\";\n")
|
||||
js.WriteString(m.Cmdx(nfs.CAT, value[nfs.PATH]))
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -11,7 +11,7 @@ const DATA = "data"
|
||||
func init() {
|
||||
Index.Merge(&ice.Context{Configs: map[string]*ice.Config{
|
||||
DATA: {Name: DATA, Help: "数据表格", Value: kit.Data(
|
||||
kit.MDB_PATH, ice.USR_LOCAL_EXPORT, kit.MDB_REGEXP, ".*\\.csv",
|
||||
nfs.PATH, ice.USR_LOCAL_EXPORT, kit.MDB_REGEXP, ".*\\.csv",
|
||||
)},
|
||||
}, Commands: map[string]*ice.Command{
|
||||
DATA: {Name: "data path auto", Help: "数据表格", Meta: kit.Dict(
|
||||
|
@ -6,6 +6,7 @@ import (
|
||||
|
||||
ice "shylinux.com/x/icebergs"
|
||||
"shylinux.com/x/icebergs/base/mdb"
|
||||
"shylinux.com/x/icebergs/base/nfs"
|
||||
"shylinux.com/x/icebergs/base/web"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
)
|
||||
@ -15,14 +16,14 @@ const FEEL = "feel"
|
||||
func init() {
|
||||
Index.Merge(&ice.Context{Configs: map[string]*ice.Config{
|
||||
FEEL: {Name: FEEL, Help: "影音媒体", Value: kit.Data(
|
||||
kit.MDB_PATH, ice.USR_LOCAL_IMAGE, kit.MDB_REGEXP, ".*.(png|PNG|jpg|JPG|jpeg|mp4|m4v|MOV)",
|
||||
nfs.PATH, ice.USR_LOCAL_IMAGE, kit.MDB_REGEXP, ".*.(png|PNG|jpg|JPG|jpeg|mp4|m4v|MOV)",
|
||||
)},
|
||||
}, Commands: map[string]*ice.Command{
|
||||
FEEL: {Name: "feel path auto upload 上一页 下一页 actions", Help: "影音媒体", Meta: kit.Dict(
|
||||
ice.Display("/plugin/local/wiki/feel.js"),
|
||||
), Action: map[string]*ice.Action{
|
||||
web.UPLOAD: {Name: "upload", Help: "上传", Hand: func(m *ice.Message, arg ...string) {
|
||||
_wiki_upload(m, m.CommandKey(), m.Option(kit.MDB_PATH))
|
||||
_wiki_upload(m, m.CommandKey(), m.Option(nfs.PATH))
|
||||
}},
|
||||
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
os.Remove(strings.TrimPrefix(arg[0], "/share/local/"))
|
||||
|
@ -5,6 +5,7 @@ import (
|
||||
|
||||
ice "shylinux.com/x/icebergs"
|
||||
"shylinux.com/x/icebergs/base/mdb"
|
||||
"shylinux.com/x/icebergs/base/nfs"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
)
|
||||
|
||||
@ -34,7 +35,7 @@ func init() {
|
||||
}, Configs: map[string]*ice.Config{
|
||||
IMAGE: {Name: IMAGE, Help: "图片", Value: kit.Data(
|
||||
kit.MDB_TEMPLATE, `<img {{.OptionTemplate}} title="{{.Option "text"}}" src="{{.Option "text"}}">`,
|
||||
kit.MDB_PATH, ice.USR_LOCAL_IMAGE,
|
||||
nfs.PATH, ice.USR_LOCAL_IMAGE,
|
||||
)},
|
||||
}})
|
||||
}
|
||||
|
@ -52,7 +52,7 @@ const JSON = "json"
|
||||
func init() {
|
||||
Index.Merge(&ice.Context{Configs: map[string]*ice.Config{
|
||||
JSON: {Name: JSON, Help: "数据结构", Value: kit.Data(
|
||||
kit.MDB_PATH, ice.USR_LOCAL_EXPORT, kit.MDB_REGEXP, ".*\\.json",
|
||||
nfs.PATH, ice.USR_LOCAL_EXPORT, kit.MDB_REGEXP, ".*\\.json",
|
||||
)},
|
||||
}, Commands: map[string]*ice.Command{
|
||||
JSON: {Name: "json path auto", Help: "数据结构", Meta: kit.Dict(
|
||||
|
@ -5,6 +5,7 @@ import (
|
||||
|
||||
ice "shylinux.com/x/icebergs"
|
||||
"shylinux.com/x/icebergs/base/mdb"
|
||||
"shylinux.com/x/icebergs/base/nfs"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
)
|
||||
|
||||
@ -32,7 +33,7 @@ func init() {
|
||||
}, Configs: map[string]*ice.Config{
|
||||
VIDEO: {Name: "video", Help: "视频", Value: kit.Data(
|
||||
kit.MDB_TEMPLATE, `<video {{.OptionTemplate}} title="{{.Option "text"}}" src="{{.Option "text"}}" controls></video>`,
|
||||
kit.MDB_PATH, ice.USR_LOCAL_IMAGE,
|
||||
nfs.PATH, ice.USR_LOCAL_IMAGE,
|
||||
)},
|
||||
}})
|
||||
}
|
||||
|
@ -25,7 +25,7 @@ const WORD = "word"
|
||||
func init() {
|
||||
Index.Merge(&ice.Context{Configs: map[string]*ice.Config{
|
||||
WORD: {Name: WORD, Help: "语言文字", Value: kit.Data(
|
||||
kit.MDB_PATH, "", kit.MDB_REGEXP, ".*\\.shy", kit.MDB_ALIAS, kit.Dict(
|
||||
nfs.PATH, "", kit.MDB_REGEXP, ".*\\.shy", kit.MDB_ALIAS, kit.Dict(
|
||||
NAVMENU, kit.List(TITLE, NAVMENU),
|
||||
PREMENU, kit.List(TITLE, PREMENU),
|
||||
CHAPTER, kit.List(TITLE, CHAPTER),
|
||||
|
@ -8,6 +8,7 @@ import (
|
||||
ice "shylinux.com/x/icebergs"
|
||||
"shylinux.com/x/icebergs/base/cli"
|
||||
"shylinux.com/x/icebergs/base/mdb"
|
||||
"shylinux.com/x/icebergs/base/nfs"
|
||||
"shylinux.com/x/icebergs/core/wiki"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
)
|
||||
@ -67,7 +68,7 @@ var Index = &ice.Context{Name: ALPHA, Help: "英汉词典", Configs: map[string]
|
||||
}, Commands: map[string]*ice.Command{
|
||||
ALPHA: {Name: "alpha method=word,line word auto", Help: "英汉", Action: map[string]*ice.Action{
|
||||
mdb.IMPORT: {Name: "import file=usr/word-dict/ecdict name=ecdict", Help: "加载词库", Hand: func(m *ice.Message, arg ...string) {
|
||||
_alpha_load(m, m.Option(kit.MDB_FILE), kit.Select(path.Base(m.Option(kit.MDB_FILE)), m.Option(kit.MDB_NAME)))
|
||||
_alpha_load(m, m.Option(nfs.FILE), kit.Select(path.Base(m.Option(nfs.FILE)), m.Option(kit.MDB_NAME)))
|
||||
}},
|
||||
mdb.SEARCH: {Name: "search type name text", Help: "搜索", Hand: func(m *ice.Message, arg ...string) {
|
||||
if arg[0] == ALPHA {
|
||||
|
@ -2,6 +2,7 @@ package bash
|
||||
|
||||
import (
|
||||
ice "shylinux.com/x/icebergs"
|
||||
"shylinux.com/x/icebergs/base/nfs"
|
||||
"shylinux.com/x/icebergs/base/web"
|
||||
"shylinux.com/x/icebergs/core/chat"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
@ -17,7 +18,7 @@ func init() {
|
||||
|
||||
// 下载文件
|
||||
m.Cmdy(web.CACHE, m.Cmd(chat.FILES, arg[0]).Append(kit.MDB_DATA))
|
||||
m.Render(kit.Select(ice.RENDER_DOWNLOAD, ice.RENDER_RESULT, m.Append(kit.MDB_FILE) == ""), m.Append(kit.MDB_TEXT))
|
||||
m.Render(kit.Select(ice.RENDER_DOWNLOAD, ice.RENDER_RESULT, m.Append(nfs.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(chat.FILES, web.UPLOAD) // 上传文件
|
||||
|
@ -16,7 +16,7 @@ func init() {
|
||||
Index.Merge(&ice.Context{Configs: map[string]*ice.Config{
|
||||
CACHE: {Name: CACHE, Help: "爬虫缓存", Value: kit.Data(
|
||||
kit.MDB_SHORT, kit.MDB_LINK, kit.MDB_FIELD, "time,hash,step,size,total,type,name,text,link",
|
||||
kit.MDB_PATH, ice.USR_LOCAL_IMAGE,
|
||||
nfs.PATH, ice.USR_LOCAL_IMAGE,
|
||||
)},
|
||||
}, Commands: map[string]*ice.Command{
|
||||
CACHE: {Name: "cache hash auto prunes", Help: "爬虫缓存", Action: ice.MergeAction(map[string]*ice.Action{
|
||||
@ -31,8 +31,8 @@ func init() {
|
||||
value[kit.MDB_TOTAL], value[kit.MDB_SIZE], value[kit.MDB_STEP] = total, size, kit.Format(size*100/total)
|
||||
})
|
||||
|
||||
p := path.Join(m.Config(kit.MDB_PATH), m.Option(kit.MDB_NAME))
|
||||
m.Cmdy(nfs.LINK, p, msg.Append(kit.MDB_FILE))
|
||||
p := path.Join(m.Config(nfs.PATH), m.Option(kit.MDB_NAME))
|
||||
m.Cmdy(nfs.LINK, p, msg.Append(nfs.FILE))
|
||||
m.Toast("下载成功")
|
||||
}},
|
||||
mdb.PRUNES: {Name: "prunes", Help: "清理", Hand: func(m *ice.Message, arg ...string) {
|
||||
|
@ -24,7 +24,7 @@ func _repos_path(name string) string {
|
||||
func _repos_insert(m *ice.Message, name string, dir string) {
|
||||
if s, e := os.Stat(m.Option(cli.CMD_DIR, path.Join(dir, ".git"))); e == nil && s.IsDir() {
|
||||
ls := strings.SplitN(strings.Trim(m.Cmdx(cli.SYSTEM, GIT, "log", "-n1", `--pretty=format:"%ad %s"`, "--date=iso"), `"`), ice.SP, 4)
|
||||
m.Rich(REPOS, nil, kit.Data(kit.MDB_NAME, name, kit.MDB_PATH, dir,
|
||||
m.Rich(REPOS, nil, kit.Data(kit.MDB_NAME, name, nfs.PATH, dir,
|
||||
COMMIT, kit.Select("", ls, 3), kit.MDB_TIME, strings.Join(ls[:2], ice.SP),
|
||||
BRANCH, strings.TrimSpace(m.Cmdx(cli.SYSTEM, GIT, BRANCH)),
|
||||
REMOTE, strings.TrimSpace(m.Cmdx(cli.SYSTEM, GIT, REMOTE, "-v")),
|
||||
@ -55,30 +55,30 @@ func init() {
|
||||
m.Conf(REPOS, kit.MDB_HASH, "")
|
||||
_repos_insert(m, path.Base(kit.Pwd()), kit.Pwd())
|
||||
m.Cmd(nfs.DIR, ice.USR, "name,path").Table(func(index int, value map[string]string, head []string) {
|
||||
_repos_insert(m, value[kit.MDB_NAME], value[kit.MDB_PATH])
|
||||
_repos_insert(m, value[kit.MDB_NAME], value[nfs.PATH])
|
||||
})
|
||||
}},
|
||||
mdb.CREATE: {Name: "create repos branch name path", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Option(kit.MDB_NAME, kit.Select(strings.TrimSuffix(path.Base(m.Option(REPOS)), ".git"), m.Option(kit.MDB_NAME)))
|
||||
m.Option(kit.MDB_PATH, kit.Select(path.Join(ice.USR, m.Option(kit.MDB_NAME)), m.Option(kit.MDB_PATH)))
|
||||
m.Option(nfs.PATH, kit.Select(path.Join(ice.USR, m.Option(kit.MDB_NAME)), m.Option(nfs.PATH)))
|
||||
m.Option(REPOS, kit.Select(m.Config(REPOS)+ice.PS+m.Option(kit.MDB_NAME), m.Option(REPOS)))
|
||||
|
||||
if s, e := os.Stat(path.Join(m.Option(kit.MDB_PATH), ".git")); e == nil && s.IsDir() {
|
||||
if s, e := os.Stat(path.Join(m.Option(nfs.PATH), ".git")); e == nil && s.IsDir() {
|
||||
return
|
||||
}
|
||||
|
||||
// 下载仓库
|
||||
if s, e := os.Stat(m.Option(kit.MDB_PATH)); e == nil && s.IsDir() {
|
||||
m.Option(cli.CMD_DIR, m.Option(kit.MDB_PATH))
|
||||
if s, e := os.Stat(m.Option(nfs.PATH)); e == nil && s.IsDir() {
|
||||
m.Option(cli.CMD_DIR, m.Option(nfs.PATH))
|
||||
m.Cmd(cli.SYSTEM, GIT, INIT)
|
||||
m.Cmd(cli.SYSTEM, GIT, REMOTE, ADD, ORIGIN, m.Option(REPOS))
|
||||
m.Cmd(cli.SYSTEM, GIT, PULL, ORIGIN, MASTER)
|
||||
} else {
|
||||
m.Cmd(cli.SYSTEM, GIT, CLONE, "-b", kit.Select(MASTER, m.Option(BRANCH)),
|
||||
m.Option(REPOS), m.Option(kit.MDB_PATH))
|
||||
m.Option(REPOS), m.Option(nfs.PATH))
|
||||
}
|
||||
|
||||
_repos_insert(m, m.Option(kit.MDB_NAME), m.Option(kit.MDB_PATH))
|
||||
_repos_insert(m, m.Option(kit.MDB_NAME), m.Option(nfs.PATH))
|
||||
}},
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
if len(arg) == 0 { // 仓库列表
|
||||
|
@ -43,8 +43,8 @@ func _spide_go(m *ice.Message, file string) {
|
||||
}
|
||||
|
||||
m.Push(kit.MDB_NAME, ls[0])
|
||||
m.Push(kit.MDB_FILE, ls[1])
|
||||
m.Push(kit.MDB_LINE, strings.TrimSuffix(ls[2], ";\""))
|
||||
m.Push(nfs.FILE, ls[1])
|
||||
m.Push(nfs.LINE, strings.TrimSuffix(ls[2], ";\""))
|
||||
m.Push(kit.MDB_TYPE, ls[3])
|
||||
m.Push(kit.MDB_EXTRA, strings.Join(ls[4:], ice.SP))
|
||||
})
|
||||
@ -52,8 +52,8 @@ func _spide_go(m *ice.Message, file string) {
|
||||
func _spide_c(m *ice.Message, file string) {
|
||||
_spide_for(m.Cmdx(cli.SYSTEM, "ctags", "-f", "-", file), func(ls []string) {
|
||||
m.Push(kit.MDB_NAME, ls[0])
|
||||
m.Push(kit.MDB_FILE, ls[1])
|
||||
m.Push(kit.MDB_LINE, "1")
|
||||
m.Push(nfs.FILE, ls[1])
|
||||
m.Push(nfs.LINE, "1")
|
||||
})
|
||||
}
|
||||
|
||||
@ -61,10 +61,48 @@ const SPIDE = "spide"
|
||||
|
||||
func init() {
|
||||
Index.Merge(&ice.Context{Commands: map[string]*ice.Command{
|
||||
SPIDE: {Name: "spide name auto", Help: "构架图", Action: ice.MergeAction(map[string]*ice.Action{
|
||||
SPIDE: {Name: "spide name auto depend", Help: "构架图", Action: ice.MergeAction(map[string]*ice.Action{
|
||||
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(REPOS, ice.OptionFields("name,time"))
|
||||
}}, code.INNER: {Name: "web.code.inner"},
|
||||
"depend": {Name: "depend path=icebergs/base", Help: "依赖", Hand: func(m *ice.Message, arg ...string) {
|
||||
keys := map[string]bool{}
|
||||
list := map[string]map[string]bool{}
|
||||
dir := path.Join(ice.USR, m.Option(nfs.PATH)) + ice.PS
|
||||
_spide_for(m.Cmdx(cli.SYSTEM, "gotags", "-R", dir), func(ls []string) {
|
||||
if kit.Select("", ls, 3) != "i" {
|
||||
return
|
||||
}
|
||||
if !strings.Contains(ls[0], m.Option(nfs.PATH)) {
|
||||
return
|
||||
}
|
||||
|
||||
item, ok := list[ls[0]]
|
||||
if !ok {
|
||||
item = map[string]bool{}
|
||||
list[ls[0]] = item
|
||||
}
|
||||
|
||||
p := strings.TrimPrefix(path.Dir(ls[1]), path.Join(ice.USR, m.Option(nfs.PATH)))
|
||||
keys[p], item[p] = true, true
|
||||
})
|
||||
|
||||
item := []string{}
|
||||
for k := range keys {
|
||||
item = append(item, k)
|
||||
}
|
||||
item = kit.Sort(item)
|
||||
|
||||
for k, v := range list {
|
||||
m.Push("pkg", k)
|
||||
m.Push("count", len(v))
|
||||
for _, i := range item {
|
||||
m.Push(i, kit.Select("", "ok", v[i]))
|
||||
}
|
||||
}
|
||||
m.SortIntR("count")
|
||||
m.ProcessInner()
|
||||
}},
|
||||
}, ctx.CmdAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
if len(arg) == 0 { // 仓库列表
|
||||
m.Cmdy(REPOS)
|
||||
@ -81,8 +119,8 @@ func init() {
|
||||
if len(arg) == 1 { // 目录列表
|
||||
m.Option(nfs.DIR_DEEP, ice.TRUE)
|
||||
color := []string{cli.YELLOW, cli.BLUE, cli.CYAN, cli.RED}
|
||||
nfs.Dir(m, kit.MDB_PATH).Table(func(index int, value map[string]string, head []string) {
|
||||
m.Push(kit.MDB_COLOR, color[strings.Count(value[kit.MDB_PATH], ice.PS)%len(color)])
|
||||
nfs.Dir(m, nfs.PATH).Table(func(index int, value map[string]string, head []string) {
|
||||
m.Push(kit.MDB_COLOR, color[strings.Count(value[nfs.PATH], ice.PS)%len(color)])
|
||||
})
|
||||
return
|
||||
}
|
||||
@ -97,7 +135,7 @@ func init() {
|
||||
default:
|
||||
_spide_c(m, arg[1])
|
||||
}
|
||||
m.SortInt(kit.MDB_LINE)
|
||||
m.SortInt(nfs.LINE)
|
||||
}},
|
||||
}})
|
||||
}
|
||||
|
@ -92,7 +92,7 @@ func _status_each(m *ice.Message, title string, cmds ...string) {
|
||||
m.Cmd(REPOS, ice.OptionFields("name,path")).Table(func(index int, value map[string]string, head []string) {
|
||||
toast(value[kit.MDB_NAME], count, total)
|
||||
|
||||
if msg := m.Cmd(cmds, ice.Option{cli.CMD_DIR, value[kit.MDB_PATH]}); !cli.IsSuccess(msg) {
|
||||
if msg := m.Cmd(cmds, ice.Option{cli.CMD_DIR, value[nfs.PATH]}); !cli.IsSuccess(msg) {
|
||||
m.Toast3s(msg.Append(cli.CMD_ERR), "error: "+value[kit.MDB_NAME])
|
||||
list = append(list, value[kit.MDB_NAME])
|
||||
m.Sleep3s()
|
||||
@ -123,7 +123,7 @@ func _status_stat(m *ice.Message, files, adds, dels int) (int, int, int) {
|
||||
}
|
||||
func _status_list(m *ice.Message) (files, adds, dels int, last time.Time) {
|
||||
m.Cmd(REPOS, ice.OptionFields("name,path")).Table(func(index int, value map[string]string, head []string) {
|
||||
m.Option(cli.CMD_DIR, value[kit.MDB_PATH])
|
||||
m.Option(cli.CMD_DIR, value[nfs.PATH])
|
||||
diff := m.Cmdx(cli.SYSTEM, GIT, STATUS, "-sb")
|
||||
tags := m.Cmdx(cli.SYSTEM, GIT, "describe", "--tags")
|
||||
|
||||
@ -139,7 +139,7 @@ func _status_list(m *ice.Message) (files, adds, dels int, last time.Time) {
|
||||
|
||||
m.Push(kit.MDB_NAME, value[kit.MDB_NAME])
|
||||
m.Push(kit.MDB_TYPE, vs[0])
|
||||
m.Push(kit.MDB_FILE, vs[1])
|
||||
m.Push(nfs.FILE, vs[1])
|
||||
|
||||
list := []string{}
|
||||
switch vs[0] {
|
||||
@ -229,7 +229,7 @@ func init() {
|
||||
_repos_cmd(m, m.Option(kit.MDB_NAME), PUSH, "--tags")
|
||||
}},
|
||||
ADD: {Name: "add", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
_repos_cmd(m, m.Option(kit.MDB_NAME), ADD, m.Option(kit.MDB_FILE))
|
||||
_repos_cmd(m, m.Option(kit.MDB_NAME), ADD, m.Option(nfs.FILE))
|
||||
}}, OPT: {Name: "opt", Help: "优化"}, PRO: {Name: "pro", Help: "升级"},
|
||||
COMMIT: {Name: "commit action=opt,add,pro comment=some@key", Help: "提交", Hand: func(m *ice.Message, arg ...string) {
|
||||
if arg[0] == ctx.ACTION {
|
||||
@ -254,8 +254,8 @@ func init() {
|
||||
}
|
||||
|
||||
case COMMENT:
|
||||
m.Push(kit.MDB_TEXT, m.Option(kit.MDB_FILE))
|
||||
for _, v := range kit.Split(m.Option(kit.MDB_FILE), " /") {
|
||||
m.Push(kit.MDB_TEXT, m.Option(nfs.FILE))
|
||||
for _, v := range kit.Split(m.Option(nfs.FILE), " /") {
|
||||
m.Push(kit.MDB_TEXT, v)
|
||||
}
|
||||
}
|
||||
|
@ -55,7 +55,7 @@ func init() {
|
||||
return
|
||||
}
|
||||
|
||||
msg := m.Cmd("_sum", value[kit.MDB_PATH], kit.MDB_TOTAL, "10000")
|
||||
msg := m.Cmd("_sum", value[nfs.PATH], kit.MDB_TOTAL, "10000")
|
||||
|
||||
mu.Lock()
|
||||
defer mu.Unlock()
|
||||
|
@ -4,6 +4,7 @@ import (
|
||||
ice "shylinux.com/x/icebergs"
|
||||
"shylinux.com/x/icebergs/base/aaa"
|
||||
"shylinux.com/x/icebergs/base/mdb"
|
||||
"shylinux.com/x/icebergs/base/nfs"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
|
||||
"encoding/csv"
|
||||
@ -213,7 +214,7 @@ func _favor_import(m *ice.Message, file string) {
|
||||
count++
|
||||
})
|
||||
}
|
||||
m.Log_IMPORT(kit.MDB_FILE, file, kit.MDB_COUNT, count)
|
||||
m.Log_IMPORT(nfs.FILE, file, kit.MDB_COUNT, count)
|
||||
}
|
||||
func _favor_export(m *ice.Message, file string) {
|
||||
f, p, e := kit.Create(file)
|
||||
@ -246,7 +247,7 @@ func _favor_export(m *ice.Message, file string) {
|
||||
count++
|
||||
})
|
||||
})
|
||||
m.Log_EXPORT(kit.MDB_FILE, p, kit.MDB_COUNT, count)
|
||||
m.Log_EXPORT(nfs.FILE, p, kit.MDB_COUNT, count)
|
||||
}
|
||||
|
||||
func FavorInsert(m *ice.Message, zone, kind string, name interface{}, text interface{}, extra ...string) {
|
||||
|
@ -6,6 +6,7 @@ import (
|
||||
ice "shylinux.com/x/icebergs"
|
||||
"shylinux.com/x/icebergs/base/cli"
|
||||
"shylinux.com/x/icebergs/base/mdb"
|
||||
"shylinux.com/x/icebergs/base/nfs"
|
||||
"shylinux.com/x/icebergs/core/code"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
)
|
||||
@ -30,14 +31,14 @@ func init() {
|
||||
}, 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])
|
||||
value[nfs.FILE], value[nfs.LINE], "1", value[kit.MDB_NAME], value[kit.MDB_TEXT])
|
||||
})
|
||||
}},
|
||||
FAVOR: {Name: "favor zone id auto", Help: "收藏夹", Action: ice.MergeAction(map[string]*ice.Action{
|
||||
mdb.INSERT: {Name: "insert zone=数据结构 type name=hi text=hello file line", Help: "添加"},
|
||||
code.INNER: {Name: "inner", Help: "源码", Hand: func(m *ice.Message, arg ...string) {
|
||||
p := path.Join(m.Option(cli.PWD), m.Option(kit.MDB_FILE))
|
||||
m.ProcessCommand(code.INNER, []string{path.Dir(p) + ice.PS, path.Base(p), m.Option(kit.MDB_LINE)}, arg...)
|
||||
p := path.Join(m.Option(cli.PWD), m.Option(nfs.FILE))
|
||||
m.ProcessCommand(code.INNER, []string{path.Dir(p) + ice.PS, path.Base(p), m.Option(nfs.LINE)}, arg...)
|
||||
}},
|
||||
}, mdb.ZoneAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
if mdb.ZoneSelect(m, arg...); len(arg) == 0 {
|
||||
|
@ -6,6 +6,7 @@ import (
|
||||
|
||||
ice "shylinux.com/x/icebergs"
|
||||
"shylinux.com/x/icebergs/base/mdb"
|
||||
"shylinux.com/x/icebergs/base/nfs"
|
||||
"shylinux.com/x/icebergs/core/code"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
)
|
||||
@ -28,9 +29,9 @@ func init() {
|
||||
if mdb.ZoneSelect(m, m.Option("module")); m.Length() > 0 {
|
||||
switch m.Append(kit.MDB_TYPE) {
|
||||
case "function":
|
||||
m.Echo("4\nusr/volcanos%s\n/\\<%s: \\(shy\\|func\\)/\n", m.Append(kit.MDB_FILE), m.Option("pattern"))
|
||||
m.Echo("4\nusr/volcanos%s\n/\\<%s: \\(shy\\|func\\)/\n", m.Append(nfs.FILE), m.Option("pattern"))
|
||||
default:
|
||||
m.Echo("4\nusr/volcanos%s\n/\\<%s: /\n", m.Append(kit.MDB_FILE), m.Option("pattern"))
|
||||
m.Echo("4\nusr/volcanos%s\n/\\<%s: /\n", m.Append(nfs.FILE), m.Option("pattern"))
|
||||
}
|
||||
return
|
||||
}
|
||||
@ -41,9 +42,9 @@ func init() {
|
||||
mdb.INSERT: {Name: "insert zone=core type name=hi text=hello file line", Help: "添加"},
|
||||
code.INNER: {Name: "inner", Help: "源码", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.ProcessCommand(code.INNER, []string{
|
||||
kit.Select(ice.PWD, path.Dir(m.Option(kit.MDB_FILE))),
|
||||
path.Base(m.Option(kit.MDB_FILE)),
|
||||
m.Option(kit.MDB_LINE),
|
||||
kit.Select(ice.PWD, path.Dir(m.Option(nfs.FILE))),
|
||||
path.Base(m.Option(nfs.FILE)),
|
||||
m.Option(nfs.LINE),
|
||||
}, arg...)
|
||||
}},
|
||||
"listTags": {Name: "listTags", Help: "索引", Hand: func(m *ice.Message, arg ...string) {
|
||||
@ -64,7 +65,7 @@ func init() {
|
||||
m.Sort(kit.MDB_NAME)
|
||||
m.Echo("func\n").Table(func(index int, value map[string]string, head []string) {
|
||||
m.Echo(arg[0] + ice.PT + value[kit.MDB_NAME] + ice.NL)
|
||||
m.Echo("%s: %s: %s // %s\n", value[kit.MDB_TYPE], value[kit.MDB_NAME], strings.Split(value[kit.MDB_TEXT], ice.NL)[0], value[kit.MDB_FILE])
|
||||
m.Echo("%s: %s: %s // %s\n", value[kit.MDB_TYPE], value[kit.MDB_NAME], strings.Split(value[kit.MDB_TEXT], ice.NL)[0], value[nfs.FILE])
|
||||
})
|
||||
return
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user