1
0
forked from x/icebergs
This commit is contained in:
IT 老营长 @云轩领航-创始人 2024-09-03 07:35:53 +08:00
parent 53c5a80da6
commit 329f963a38
5 changed files with 79 additions and 44 deletions

View File

@ -61,7 +61,7 @@ func (f *Frame) Start(m *ice.Message, arg ...string) {
view := mdb.Confm(m, VIEW, m.Conf(SHOW, kit.Keys(l.l, VIEW)))
kit.If(ice.Info.Colors || l.c, func() { bio.WriteString(kit.Format(view[PREFIX])) })
defer kit.If(ice.Info.Colors || l.c, func() { bio.WriteString(kit.Format(view[SUFFIX])) })
fmt.Fprint(bio, l.l, lex.SP, l.s)
fmt.Fprint(bio, l.l, lex.SP, l.s+kit.Format("what %v", len(f.p)))
})
}
}

View File

@ -1,6 +1,7 @@
package mdb
import (
"time"
"sync"
ice "shylinux.com/x/icebergs"
@ -18,8 +19,44 @@ func getLock(m *ice.Message, arg ...string) *task.Lock {
kit.If(!ok, func() { l = &task.Lock{}; _locks[key] = l })
return l
}
func Lock(m *ice.Message, arg ...string) func() { return getLock(m, arg...).Lock() }
func RLock(m *ice.Message, arg ...string) func() { return getLock(m, arg...).RLock() }
func Lock(m *ice.Message, arg ...string) func() {
return getLock(m, arg...).Lock()
key := kit.Select(m.PrefixKey(), kit.Keys(arg))
m.Info("what %v", key)
cb := getLock(m, arg...).Lock()
m.Info("what %v", key)
go func() {
time.Sleep(30*time.Second)
if cb == nil {
return
}
cb()
m.Warn("lock time out %v %v", key, m.FormatStack(1, 100))
}()
return func() {
cb()
cb = nil
}
}
func RLock(m *ice.Message, arg ...string) func() {
return getLock(m, arg...).RLock()
key := kit.Select(m.PrefixKey(), kit.Keys(arg))
m.Info("what %v", key)
cb := getLock(m, arg...).RLock()
m.Info("what %v", key)
go func() {
time.Sleep(30*time.Second)
if cb == nil {
return
}
cb()
m.Warn("lock time out %v %v", key, m.FormatStack(1, 100))
}()
return func() {
cb()
cb = nil
}
}
func ConfigSimple(m *ice.Message, key ...string) (res []string) {
for _, key := range key {

View File

@ -226,26 +226,22 @@ var Index = &ice.Context{Name: MDB, Help: "数据模块", Commands: ice.Commands
EXPORT: {Name: "export index auto", Help: "导出数据", Actions: ice.MergeActions(ice.Actions{
IMPORT: {Hand: func(m *ice.Message, arg ...string) {
HashSelect(m).Table(func(value ice.Maps) {
if value[STATUS] != DISABLE {
if value[ENABLE] != ice.FALSE {
m.Cmd(IMPORT, value[INDEX], "", value[TYPE])
}
})
}},
EXPORT: {Hand: func(m *ice.Message, arg ...string) {
HashSelect(m).Table(func(value ice.Maps) {
if value[STATUS] != DISABLE {
if value[ENABLE] != ice.FALSE {
m.Cmd(EXPORT, value[INDEX], "", value[TYPE])
}
})
}},
ENABLE: {Hand: func(m *ice.Message, arg ...string) { HashModify(m, STATUS, ENABLE) }},
DISABLE: {Hand: func(m *ice.Message, arg ...string) { HashModify(m, STATUS, DISABLE) }},
}, ExportHashAction(SHORT, INDEX, FIELD, "time,index,type,status")), Hand: func(m *ice.Message, arg ...string) {
}, ExportHashAction(SHORT, INDEX, FIELD, "time,index,type,enable")), Hand: func(m *ice.Message, arg ...string) {
if len(arg) < 2 {
HashSelect(m, arg...).RewriteAppend(func(value, key string, index int) string {
kit.If(key == STATUS, func() { value = kit.Select(ENABLE, value) })
return value
}).PushAction()
HashSelect(m, arg...)
m.PushAction(REMOVE)
if len(arg) == 1 {
m.Cmdy("nfs.cat", "usr/local/export/"+arg[0]+"/hash.json")
}

View File

@ -205,36 +205,39 @@ const (
UPGRADE = "upgrade"
INSTALL = "install"
CODE_GIT_SERVICE = "web.code.git.service"
CODE_GIT_SEARCH = "web.code.git.search"
CODE_GIT_STATUS = "web.code.git.status"
CODE_GIT_REPOS = "web.code.git.repos"
CODE_AUTOGEN = "web.code.autogen"
CODE_COMPILE = "web.code.compile"
CODE_PUBLISH = "web.code.publish"
CODE_UPGRADE = "web.code.upgrade"
CODE_VIMER = "web.code.vimer"
CODE_INNER = "web.code.inner"
CODE_XTERM = "web.code.xterm"
CODE_MOD = "web.code.mod"
WIKI_FEEL = "web.wiki.feel"
WIKI_DRAW = "web.wiki.draw"
WIKI_WORD = "web.wiki.word"
WIKI_PORTAL = "web.wiki.portal"
CHAT_OAUTH_CLIENT = "web.chat.oauth.client"
CHAT_WX_ACCESS = "web.chat.wx.access"
CHAT_WX_AGENT = "web.chat.wx.agent"
CHAT_WX_TEMPLATE = "web.chat.wx.template"
CHAT_WX_OCR = "web.chat.wx.ocr"
CHAT_MESSAGE = "web.chat.message"
CHAT_HEADER = "web.chat.header"
CHAT_IFRAME = "web.chat.iframe"
CHAT_FAVOR = "web.chat.favor"
CHAT_FLOWS = "web.chat.flows"
CHAT_GRANT = "web.chat.grant"
CHAT_POD = "web.chat.pod"
CHAT_CMD = "web.chat.cmd"
TEAM_PLAN = "web.team.plan"
CODE_MYSQL_CLIENT = "web.code.mysql.client"
CODE_GIT_SERVICE = "web.code.git.service"
CODE_GIT_SEARCH = "web.code.git.search"
CODE_GIT_STATUS = "web.code.git.status"
CODE_GIT_REPOS = "web.code.git.repos"
CODE_AUTOGEN = "web.code.autogen"
CODE_COMPILE = "web.code.compile"
CODE_PUBLISH = "web.code.publish"
CODE_UPGRADE = "web.code.upgrade"
CODE_VIMER = "web.code.vimer"
CODE_INNER = "web.code.inner"
CODE_XTERM = "web.code.xterm"
CODE_MOD = "web.code.mod"
WIKI_FEEL = "web.wiki.feel"
WIKI_DRAW = "web.wiki.draw"
WIKI_WORD = "web.wiki.word"
WIKI_PORTAL = "web.wiki.portal"
CHAT_OAUTH_CLIENT = "web.chat.oauth.client"
CHAT_WX_ACCESS = "web.chat.wx.access"
CHAT_WX_AGENT = "web.chat.wx.agent"
CHAT_WX_TEMPLATE = "web.chat.wx.template"
CHAT_WX_OCR = "web.chat.wx.ocr"
CHAT_MESSAGE = "web.chat.message"
CHAT_HEADER = "web.chat.header"
CHAT_IFRAME = "web.chat.iframe"
CHAT_FAVOR = "web.chat.favor"
CHAT_FLOWS = "web.chat.flows"
CHAT_GRANT = "web.chat.grant"
CHAT_POD = "web.chat.pod"
CHAT_CMD = "web.chat.cmd"
TEAM_PLAN = "web.team.plan"
TEAM_GONGANXITONG_USER = "web.team.gonganxitong.user"
TEAM_RENZHENGSHOUQUAN_AUTH = "web.team.renzhengshouquan.auth"
)
func MessageInsertJSON(m *ice.Message, zone, name, text string, arg ...string) {

View File

@ -415,9 +415,8 @@ func init() {
}},
})
nfs.TemplateText = func(m *ice.Message, p string) string {
// if p := kit.Select(nfs.TemplatePath(m, path.Base(p)), m.Option("_template")); kit.HasPrefix(p, nfs.P, nfs.REQUIRE, ice.HTTP) {
if p := kit.Select(nfs.TemplatePath(m, p), m.Option("_template")); kit.HasPrefix(p, nfs.P, nfs.REQUIRE, ice.HTTP) {
return m.Cmdx(SPIDE, ice.OPS, SPIDE_RAW, http.MethodGet, p)
return kit.Format(mdb.Cache(ice.Pulse, p, func() ice.Any { return m.Cmdx(SPIDE, ice.OPS, SPIDE_RAW, http.MethodGet, p) }))
} else if p == "" {
return ""
} else {