1
0
forked from x/icebergs
This commit is contained in:
harveyshao 2022-04-08 18:24:52 +08:00
parent 20ebcc4754
commit 762bb6056f
8 changed files with 66 additions and 18 deletions

View File

@ -20,7 +20,7 @@ func _dream_list(m *ice.Message) *ice.Message {
m.Push(mdb.TYPE, val[mdb.TYPE]) m.Push(mdb.TYPE, val[mdb.TYPE])
m.Push(cli.STATUS, cli.START) m.Push(cli.STATUS, cli.START)
m.PushButton("edit", "open", cli.STOP) m.PushButton("edit", "open", cli.STOP)
m.PushAnchor(strings.Split(m.MergePOD(value[mdb.NAME]), "?")[0]) m.PushAnchor(strings.Split(m.MergePod(value[mdb.NAME]), "?")[0])
}) == nil { }) == nil {
m.Push(mdb.TYPE, WORKER) m.Push(mdb.TYPE, WORKER)
m.Push(cli.STATUS, cli.STOP) m.Push(cli.STATUS, cli.STOP)
@ -33,8 +33,8 @@ func _dream_show(m *ice.Message, name string) {
if !strings.Contains(name, "-") || !strings.HasPrefix(name, "20") { if !strings.Contains(name, "-") || !strings.HasPrefix(name, "20") {
name = m.Time("20060102-") + kit.ReplaceAll(name, "-", "_") name = m.Time("20060102-") + kit.ReplaceAll(name, "-", "_")
} }
defer m.ProcessOpen(m.MergePOD(m.Option(mdb.NAME, name))) defer m.ProcessOpen(m.MergePod(m.Option(mdb.NAME, name)))
defer m.Echo(m.MergePOD(m.Option(mdb.NAME, name))) defer m.Echo(m.MergePod(m.Option(mdb.NAME, name)))
// 任务目录 // 任务目录
p := path.Join(m.Config(nfs.PATH), name) p := path.Join(m.Config(nfs.PATH), name)
@ -115,10 +115,10 @@ func init() {
_dream_show(m, m.Option(mdb.NAME, kit.Select(path.Base(m.Option(nfs.REPOS)), m.Option(mdb.NAME)))) _dream_show(m, m.Option(mdb.NAME, kit.Select(path.Base(m.Option(nfs.REPOS)), m.Option(mdb.NAME))))
}}, }},
"open": {Name: "open", Help: "打开", Hand: func(m *ice.Message, arg ...string) { "open": {Name: "open", Help: "打开", Hand: func(m *ice.Message, arg ...string) {
m.ProcessOpen(m.MergePOD(m.Option(mdb.NAME), "", "")) m.ProcessOpen(m.MergePod(m.Option(mdb.NAME), "", ""))
}}, }},
"edit": {Name: "edit", Help: "编辑", Hand: func(m *ice.Message, arg ...string) { "edit": {Name: "edit", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
m.ProcessOpen(m.MergePOD(m.Option(mdb.NAME)+"/cmd/web.code.vimer", "", "")) m.ProcessOpen(m.MergePod(m.Option(mdb.NAME)+"/cmd/web.code.vimer", "", ""))
}}, }},
cli.STOP: {Name: "stop", Help: "停止", Hand: func(m *ice.Message, arg ...string) { cli.STOP: {Name: "stop", Help: "停止", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(SPACE, mdb.MODIFY, m.OptionSimple(mdb.NAME), mdb.STATUS, cli.STOP) m.Cmdy(SPACE, mdb.MODIFY, m.OptionSimple(mdb.NAME), mdb.STATUS, cli.STOP)

View File

@ -179,8 +179,8 @@ func _website_render(m *ice.Message, w http.ResponseWriter, r *http.Request, kin
return true return true
} }
func _website_search(m *ice.Message, kind, name, text string, arg ...string) { func _website_search(m *ice.Message, kind, name, text string, arg ...string) {
m.Cmd(m.PrefixKey()).Table(func(index int, value map[string]string, head []string) { m.Cmd(m.PrefixKey(), ice.OptionFields("")).Table(func(index int, value map[string]string, head []string) {
m.PushSearch(value, mdb.TEXT, m.MergeURL2(path.Join("/chat/website", value[nfs.PATH]))) m.PushSearch(value, mdb.TEXT, m.MergeWebsite(value[nfs.PATH]))
}) })
} }
@ -216,13 +216,21 @@ func init() {
}) })
}}, }},
"show": {Hand: func(m *ice.Message, arg ...string) { "show": {Hand: func(m *ice.Message, arg ...string) {
if text := m.Cmd(m.PrefixKey(), ice.PS+arg[0]).Append(mdb.TEXT); text != "" {
if res, ok := _website_parse(m, text, arg[1:]...); ok {
m.Echo(_website_template2, kit.Format(res))
return
}
}
if res, ok := _website_parse(m, m.Cmdx(nfs.CAT, path.Join(SRC_WEBSITE, arg[0])), arg[1:]...); ok { if res, ok := _website_parse(m, m.Cmdx(nfs.CAT, path.Join(SRC_WEBSITE, arg[0])), arg[1:]...); ok {
m.Echo(_website_template2, kit.Format(res)) m.Echo(_website_template2, kit.Format(res))
} }
}}, }},
"inner": {Hand: func(m *ice.Message, arg ...string) {}}, "inner": {Hand: func(m *ice.Message, arg ...string) {}},
mdb.SEARCH: {Hand: func(m *ice.Message, arg ...string) { mdb.SEARCH: {Hand: func(m *ice.Message, arg ...string) {
_website_search(m, arg[0], arg[1], kit.Select("", arg, 2)) if arg[0] == mdb.FOREACH && arg[1] == "" {
_website_search(m, arg[0], arg[1], kit.Select("", arg, 2))
}
}}, }},
mdb.RENDER: {Hand: func(m *ice.Message, arg ...string) { mdb.RENDER: {Hand: func(m *ice.Message, arg ...string) {
m.EchoIFrame(_website_url(m, strings.TrimPrefix(path.Join(arg[2], arg[1]), SRC_WEBSITE))) m.EchoIFrame(_website_url(m, strings.TrimPrefix(path.Join(arg[2], arg[1]), SRC_WEBSITE)))
@ -256,7 +264,7 @@ func init() {
}}, }},
}, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { }, 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) { mdb.HashSelect(m, arg...).Table(func(index int, value map[string]string, head []string) {
m.PushAnchor(m.MergeLink(value[nfs.PATH])) m.PushAnchor(m.MergeWebsite(value[nfs.PATH]))
}) })
if len(arg) == 0 { if len(arg) == 0 {
m.Cmd(nfs.DIR, SRC_WEBSITE, func(f os.FileInfo, p string) { m.Cmd(nfs.DIR, SRC_WEBSITE, func(f os.FileInfo, p string) {

View File

@ -37,7 +37,9 @@ func init() {
m.Cmdy(TEMPLATE, nfs.DEFS) m.Cmdy(TEMPLATE, nfs.DEFS)
}}, }},
mdb.SEARCH: {Name: "search type name text", Help: "搜索", Hand: func(m *ice.Message, arg ...string) { mdb.SEARCH: {Name: "search type name text", Help: "搜索", Hand: func(m *ice.Message, arg ...string) {
m.PushSearch(mdb.TYPE, "go", mdb.NAME, "src/main.go", mdb.TEXT, m.MergeURL2("/chat/cmd/web.code.vimer")) if arg[0] == mdb.FOREACH && arg[1] == "" {
m.PushSearch(mdb.TYPE, "go", mdb.NAME, "src/main.go", mdb.TEXT, m.MergeCmd(""))
}
}}, }},
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) { mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
switch m.Option(ctx.ACTION) { switch m.Option(ctx.ACTION) {

View File

@ -76,6 +76,11 @@ func init() {
mdb.PLUGIN: {Name: "plugin extra.ctx extra.cmd extra.arg", Help: "插件", Hand: func(m *ice.Message, arg ...string) { mdb.PLUGIN: {Name: "plugin extra.ctx extra.cmd extra.arg", Help: "插件", Hand: func(m *ice.Message, arg ...string) {
_task_modify(m, arg[0], arg[1], arg[2:]...) _task_modify(m, arg[0], arg[1], arg[2:]...)
}}, }},
mdb.SEARCH: {Name: "search", Help: "搜索", Hand: func(m *ice.Message, arg ...string) {
if arg[0] == mdb.FOREACH && arg[1] == "" {
m.PushSearch(mdb.TYPE, "plan", mdb.NAME, "", mdb.TEXT, m.MergeCmd(""))
}
}},
ice.RUN: {Name: "run", Help: "执行", Hand: func(m *ice.Message, arg ...string) { ice.RUN: {Name: "run", Help: "执行", Hand: func(m *ice.Message, arg ...string) {
m.Option(ice.POD, m.Option("task.pod")) m.Option(ice.POD, m.Option("task.pod"))
m.Option("task.pod", "") m.Option("task.pod", "")

View File

@ -39,7 +39,9 @@ func init() {
}, Commands: map[string]*ice.Command{ }, Commands: map[string]*ice.Command{
WORD: {Name: "word path=src/main.shy@key auto play", Help: "语言文字", Meta: kit.Dict(ice.DisplayLocal("")), Action: ice.MergeAction(map[string]*ice.Action{ WORD: {Name: "word path=src/main.shy@key auto play", Help: "语言文字", Meta: kit.Dict(ice.DisplayLocal("")), Action: ice.MergeAction(map[string]*ice.Action{
mdb.SEARCH: {Name: "search", Help: "搜索", Hand: func(m *ice.Message, arg ...string) { mdb.SEARCH: {Name: "search", Help: "搜索", Hand: func(m *ice.Message, arg ...string) {
m.PushSearch(mdb.TYPE, "shy", mdb.NAME, "src/main.shy", mdb.TEXT, m.MergeURL2("/chat/cmd/web.wiki.word")) if arg[0] == mdb.FOREACH && arg[1] == "" {
m.PushSearch(mdb.TYPE, "shy", mdb.NAME, "src/main.shy", mdb.TEXT, m.MergeCmd(""))
}
m.Cmd(mdb.SELECT, m.PrefixKey(), "", mdb.HASH).Table(func(index int, value map[string]string, head []string) { m.Cmd(mdb.SELECT, m.PrefixKey(), "", mdb.HASH).Table(func(index int, value map[string]string, head []string) {
if arg[1] == "" { if arg[1] == "" {
if value[mdb.TYPE] == SPARK { if value[mdb.TYPE] == SPARK {

View File

@ -71,6 +71,7 @@ func FileKey(dir string) string {
if Info.Make.Path != "" && strings.HasPrefix(dir, Info.Make.Path+PS) { if Info.Make.Path != "" && strings.HasPrefix(dir, Info.Make.Path+PS) {
dir = strings.TrimPrefix(dir, Info.Make.Path+PS) dir = strings.TrimPrefix(dir, Info.Make.Path+PS)
} }
// println("what ", dir, kit.Path(""), Info.Make.Path)
if strings.HasPrefix(dir, kit.Path("")+PS) { if strings.HasPrefix(dir, kit.Path("")+PS) {
dir = strings.TrimPrefix(dir, kit.Path("")+PS) dir = strings.TrimPrefix(dir, kit.Path("")+PS)
} }

18
misc.go
View File

@ -4,6 +4,7 @@ import (
"bytes" "bytes"
"encoding/csv" "encoding/csv"
"net/url" "net/url"
"path"
"reflect" "reflect"
"strings" "strings"
@ -171,9 +172,24 @@ func (m *Message) MergeLink(url string, arg ...interface{}) string {
func (m *Message) MergeURL2(url string, arg ...interface{}) string { func (m *Message) MergeURL2(url string, arg ...interface{}) string {
return kit.MergeURL2(m.Option(MSG_USERWEB), url, arg...) return kit.MergeURL2(m.Option(MSG_USERWEB), url, arg...)
} }
func (m *Message) MergePOD(name string, arg ...interface{}) string { func (m *Message) MergePod(name string, arg ...interface{}) string {
return kit.MergePOD(kit.Select(Info.Domain, m.Option(MSG_USERWEB)), name, arg...) return kit.MergePOD(kit.Select(Info.Domain, m.Option(MSG_USERWEB)), name, arg...)
} }
func (m *Message) MergeCmd(name string, arg ...interface{}) string {
if name == "" {
name = m.PrefixKey()
}
if m.Option(MSG_USERPOD) == "" {
return kit.MergeURL2(kit.Select(Info.Domain, m.Option(MSG_USERWEB)), path.Join("/chat/cmd", name))
}
return kit.MergeURL2(kit.Select(Info.Domain, m.Option(MSG_USERWEB)), path.Join("cmd", name), arg...)
}
func (m *Message) MergeWebsite(name string, arg ...interface{}) string {
if m.Option(MSG_USERPOD) == "" {
return kit.MergeURL2(kit.Select(Info.Domain, m.Option(MSG_USERWEB)), path.Join("/chat/website", name))
}
return kit.MergeURL2(kit.Select(Info.Domain, m.Option(MSG_USERWEB)), path.Join("website", name), arg...)
}
func (m *Message) cmd(arg ...interface{}) *Message { func (m *Message) cmd(arg ...interface{}) *Message {
opts := map[string]interface{}{} opts := map[string]interface{}{}

View File

@ -9,13 +9,27 @@ const GRANT = "grant"
func init() { func init() {
Index.Merge(&ice.Context{Commands: map[string]*ice.Command{ Index.Merge(&ice.Context{Commands: map[string]*ice.Command{
"grant": {Name: "grant sid auto", Help: "授权", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { "grant": {Name: "grant hash auto", Help: "授权", Action: ice.MergeAction(map[string]*ice.Action{
if len(arg) > 0 { "confirm": {Name: "confirm", Help: "同意", Hand: func(m *ice.Message, arg ...string) {
if m.Confirm("grant "+arg[0]+"?") == ice.TRUE { m.Cmd(SESS, mdb.MODIFY, GRANT, m.Option(ice.MSG_USERNAME), ice.Option{mdb.HASH, m.Option("hash")})
m.Cmdy(SESS, mdb.MODIFY, GRANT, m.Option(ice.MSG_USERNAME), ice.Option{mdb.HASH, arg[0]}) }},
} "revert": {Name: "confirm", Help: "撤销", Hand: func(m *ice.Message, arg ...string) {
m.Cmd(SESS, mdb.MODIFY, GRANT, "", ice.Option{mdb.HASH, m.Option("hash")})
}},
"remove": {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
m.Cmd(SESS, mdb.REMOVE, mdb.HASH, m.Option(mdb.HASH))
}},
}, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
if m.Cmdy(SESS, arg); len(arg) > 0 && m.Append("grant") == "" {
m.Process("_confirm", "授权设备")
} }
m.Cmdy(SESS, arg) m.Table(func(index int, value map[string]string, head []string) {
if value["grant"] == "" {
m.PushButton("confirm", mdb.REMOVE)
} else {
m.PushButton("revert", mdb.REMOVE)
}
})
}}, }},
}}) }})
} }