diff --git a/base/aaa/aaa.go b/base/aaa/aaa.go index 27b08e01..9670b504 100644 --- a/base/aaa/aaa.go +++ b/base/aaa/aaa.go @@ -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) } diff --git a/base/aaa/role.go b/base/aaa/role.go index d510b344..03dd8e80 100644 --- a/base/aaa/role.go +++ b/base/aaa/role.go @@ -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) }}, }}) } diff --git a/base/aaa/sess.go b/base/aaa/sess.go index c67a5ffd..f2b1653c 100644 --- a/base/aaa/sess.go +++ b/base/aaa/sess.go @@ -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{ diff --git a/base/aaa/totp.go b/base/aaa/totp.go index b4e80249..f91a9e33 100644 --- a/base/aaa/totp.go +++ b/base/aaa/totp.go @@ -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]))) } }) diff --git a/base/aaa/user.go b/base/aaa/user.go index 89c35958..bb96b3f1 100644 --- a/base/aaa/user.go +++ b/base/aaa/user.go @@ -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...) }}, }}) } diff --git a/base/gdb/signal.go b/base/gdb/signal.go index 19dfcce9..3ad681fb 100644 --- a/base/gdb/signal.go +++ b/base/gdb/signal.go @@ -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) { diff --git a/base/log/log.go b/base/log/log.go index 3389dfa1..cdbfe530 100644 --- a/base/log/log.go +++ b/base/log/log.go @@ -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) } }) }}, diff --git a/base/mdb/hash.go b/base/mdb/hash.go index f6fdaecb..8fefa1ca 100644 --- a/base/mdb/hash.go +++ b/base/mdb/hash.go @@ -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) diff --git a/base/mdb/mdb.go b/base/mdb/mdb.go index 5e85f4ee..bd915bf1 100644 --- a/base/mdb/mdb.go +++ b/base/mdb/mdb.go @@ -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" diff --git a/base/nfs/cat.go b/base/nfs/cat.go index 699c423f..4b5763ed 100644 --- a/base/nfs/cat.go +++ b/base/nfs/cat.go @@ -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 diff --git a/base/nfs/dir.go b/base/nfs/dir.go index da1275c6..a1441a21 100644 --- a/base/nfs/dir.go +++ b/base/nfs/dir.go @@ -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) != "" { diff --git a/base/nfs/save.go b/base/nfs/save.go index 31391140..bce145a5 100644 --- a/base/nfs/save.go +++ b/base/nfs/save.go @@ -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) } } } diff --git a/base/nfs/tail.go b/base/nfs/tail.go index 607e9b92..339724ca 100644 --- a/base/nfs/tail.go +++ b/base/nfs/tail.go @@ -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{ diff --git a/base/nfs/trash.go b/base/nfs/trash.go index 1d49aeb2..ac3198e4 100644 --- a/base/nfs/trash.go +++ b/base/nfs/trash.go @@ -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 }) }}, diff --git a/base/tcp/port.go b/base/tcp/port.go index 66bfb82d..e6519fd2 100644 --- a/base/tcp/port.go +++ b/base/tcp/port.go @@ -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) diff --git a/base/web/cache.go b/base/web/cache.go index 7e7a7c97..f8cd5de7 100644 --- a/base/web/cache.go +++ b/base/web/cache.go @@ -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])) diff --git a/base/web/dream.go b/base/web/dream.go index 5bef0e55..a71dfa3a 100644 --- a/base/web/dream.go +++ b/base/web/dream.go @@ -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 diff --git a/base/web/route.go b/base/web/route.go index 954a3dd2..b344dc59 100644 --- a/base/web/route.go +++ b/base/web/route.go @@ -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) { diff --git a/base/web/serve.go b/base/web/serve.go index 005967f8..aeeffb04 100644 --- a/base/web/serve.go +++ b/base/web/serve.go @@ -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", )}, diff --git a/base/web/share.go b/base/web/share.go index 72694065..0c9d4765 100644 --- a/base/web/share.go +++ b/base/web/share.go @@ -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 diff --git a/base/web/spide.go b/base/web/spide.go index fbe3ef7b..abc25ca1 100644 --- a/base/web/spide.go +++ b/base/web/spide.go @@ -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) } } diff --git a/base/web/story.go b/base/web/story.go index 9e0e686b..29bc0580 100644 --- a/base/web/story.go +++ b/base/web/story.go @@ -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])) } } }) diff --git a/core/chat/action.go b/core/chat/action.go index f6ba738d..a3100188 100644 --- a/core/chat/action.go +++ b/core/chat/action.go @@ -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{ diff --git a/core/chat/cmd.go b/core/chat/cmd.go index d884e3c9..14563605 100644 --- a/core/chat/cmd.go +++ b/core/chat/cmd.go @@ -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) }}, }}) diff --git a/core/chat/div.go b/core/chat/div.go index acd04abc..f8ca2189 100644 --- a/core/chat/div.go +++ b/core/chat/div.go @@ -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{ diff --git a/core/chat/header.go b/core/chat/header.go index f79b1d46..e4eb3f18 100644 --- a/core/chat/header.go +++ b/core/chat/header.go @@ -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) { diff --git a/core/chat/river.go b/core/chat/river.go index 53253a4a..6bddb974 100644 --- a/core/chat/river.go +++ b/core/chat/river.go @@ -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...) diff --git a/core/code/autogen.go b/core/code/autogen.go index f4baf4a5..198842bc 100644 --- a/core/code/autogen.go +++ b/core/code/autogen.go @@ -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) { diff --git a/core/code/binpack.go b/core/code/binpack.go index 743d18e5..64a753d7 100644 --- a/core/code/binpack.go +++ b/core/code/binpack.go @@ -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) diff --git a/core/code/c.go b/core/code/c.go index e158b53a..cf45eb65 100644 --- a/core/code/c.go +++ b/core/code/c.go @@ -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) } } }}, diff --git a/core/code/compile.go b/core/code/compile.go index f626b2ee..ca569293 100644 --- a/core/code/compile.go +++ b/core/code/compile.go @@ -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 { diff --git a/core/code/go.go b/core/code/go.go index 6e3b4e16..03ec58d9 100644 --- a/core/code/go.go +++ b/core/code/go.go @@ -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) { diff --git a/core/code/inner.go b/core/code/inner.go index 235edddc..b6a22811 100644 --- a/core/code/inner.go +++ b/core/code/inner.go @@ -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 } diff --git a/core/code/install.go b/core/code/install.go index 92b80b83..e088a56a 100644 --- a/core/code/install.go +++ b/core/code/install.go @@ -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) { diff --git a/core/code/pprof.go b/core/code/pprof.go index 041e8282..335261bb 100644 --- a/core/code/pprof.go +++ b/core/code/pprof.go @@ -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")) diff --git a/core/code/publish.go b/core/code/publish.go index ee649427..35bd2ac1 100644 --- a/core/code/publish.go +++ b/core/code/publish.go @@ -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") }}, }}) diff --git a/core/code/upgrade.go b/core/code/upgrade.go index 02fe3ef0..11492146 100644 --- a/core/code/upgrade.go +++ b/core/code/upgrade.go @@ -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) }) diff --git a/core/code/vimer.go b/core/code/vimer.go index c55a33d8..2883f972 100644 --- a/core/code/vimer.go +++ b/core/code/vimer.go @@ -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)...)) diff --git a/core/code/webpack.go b/core/code/webpack.go index 02647121..f0e3f21d 100644 --- a/core/code/webpack.go +++ b/core/code/webpack.go @@ -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])) } }) } diff --git a/core/wiki/data.go b/core/wiki/data.go index 6c9fc5ea..cf56cbcc 100644 --- a/core/wiki/data.go +++ b/core/wiki/data.go @@ -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( diff --git a/core/wiki/feel.go b/core/wiki/feel.go index 5c5f42a2..dcab8115 100644 --- a/core/wiki/feel.go +++ b/core/wiki/feel.go @@ -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/")) diff --git a/core/wiki/image.go b/core/wiki/image.go index 11b34501..654075b4 100644 --- a/core/wiki/image.go +++ b/core/wiki/image.go @@ -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, ``, - kit.MDB_PATH, ice.USR_LOCAL_IMAGE, + nfs.PATH, ice.USR_LOCAL_IMAGE, )}, }}) } diff --git a/core/wiki/json.go b/core/wiki/json.go index b5b83de7..9b87b32b 100644 --- a/core/wiki/json.go +++ b/core/wiki/json.go @@ -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( diff --git a/core/wiki/video.go b/core/wiki/video.go index 54f118f3..304a75d9 100644 --- a/core/wiki/video.go +++ b/core/wiki/video.go @@ -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, ``, - kit.MDB_PATH, ice.USR_LOCAL_IMAGE, + nfs.PATH, ice.USR_LOCAL_IMAGE, )}, }}) } diff --git a/core/wiki/word.go b/core/wiki/word.go index 0e21f41b..05368a90 100644 --- a/core/wiki/word.go +++ b/core/wiki/word.go @@ -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), diff --git a/misc/alpha/alpha.go b/misc/alpha/alpha.go index 94089bc2..0f5fd697 100644 --- a/misc/alpha/alpha.go +++ b/misc/alpha/alpha.go @@ -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 { diff --git a/misc/bash/download.go b/misc/bash/download.go index f19bec1f..5a3ca257 100644 --- a/misc/bash/download.go +++ b/misc/bash/download.go @@ -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) // 上传文件 diff --git a/misc/chrome/cache.go b/misc/chrome/cache.go index 4dca43a8..1fcb30cd 100644 --- a/misc/chrome/cache.go +++ b/misc/chrome/cache.go @@ -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) { diff --git a/misc/git/repos.go b/misc/git/repos.go index 5595c9cf..004b5087 100644 --- a/misc/git/repos.go +++ b/misc/git/repos.go @@ -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 { // 仓库列表 diff --git a/misc/git/spide.go b/misc/git/spide.go index 45e08898..f592e707 100644 --- a/misc/git/spide.go +++ b/misc/git/spide.go @@ -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) }}, }}) } diff --git a/misc/git/status.go b/misc/git/status.go index 64fd81ef..e5c9d22c 100644 --- a/misc/git/status.go +++ b/misc/git/status.go @@ -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) } } diff --git a/misc/git/total.go b/misc/git/total.go index 933928e5..8a1b8b45 100644 --- a/misc/git/total.go +++ b/misc/git/total.go @@ -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() diff --git a/misc/trash/web/_favor.go b/misc/trash/web/_favor.go index 3df2c71c..b26fe3b6 100644 --- a/misc/trash/web/_favor.go +++ b/misc/trash/web/_favor.go @@ -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) { diff --git a/misc/vim/favor.go b/misc/vim/favor.go index a75c5fe8..200cea32 100644 --- a/misc/vim/favor.go +++ b/misc/vim/favor.go @@ -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 { diff --git a/misc/vim/tags.go b/misc/vim/tags.go index e28c6d0e..ad022eae 100644 --- a/misc/vim/tags.go +++ b/misc/vim/tags.go @@ -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 }