1
0
forked from x/icebergs
This commit is contained in:
IT 老营长 @云轩领航-创始人 2024-01-26 16:07:31 +08:00
parent b54ba9a300
commit 0ce48b54f4
10 changed files with 72 additions and 42 deletions

View File

@ -53,7 +53,12 @@ func _config_only(v ice.Any, arg ...string) bool {
func _config_save(m *ice.Message, name string, arg ...string) { func _config_save(m *ice.Message, name string, arg ...string) {
data, msg := ice.Map{}, m.Spawn(m.Source()) data, msg := ice.Map{}, m.Spawn(m.Source())
for _, k := range arg { for _, k := range arg {
if v := mdb.Confv(msg, k); _config_only(v, mdb.META) && _config_only(kit.Value(v, mdb.META), mdb.SHORT, mdb.FIELD, mdb.FIELDS, mdb.ACTION, mdb.SORT, mdb.TOOLS) { if v := mdb.Confv(msg, k); _config_only(v, mdb.META) && _config_only(kit.Value(v, mdb.META),
mdb.IMPORTANT, mdb.EXPIRE, mdb.SHORT, mdb.FIELD, mdb.FIELDS, mdb.ACTION, mdb.SORT, mdb.TOOLS,
"regexp", "path", "link",
"linux", "darwin", "windows",
"source", "script",
) {
continue continue
} else { } else {
data[k] = v data[k] = v

View File

@ -189,10 +189,10 @@ func ZoneAction(arg ...ice.Any) ice.Actions {
} }
} }
func ExportZoneAction(arg ...ice.Any) ice.Actions { func ExportZoneAction(arg ...ice.Any) ice.Actions {
return ice.MergeActions(ZoneAction(arg...), ice.Actions{ return ice.MergeActions(ice.Actions{
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { Config(m, IMPORTANT, ice.TRUE); ZoneImport(m, arg) }}, ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { Config(m, IMPORTANT, ice.TRUE); ZoneImport(m, arg) }},
ice.CTX_EXIT: {Hand: func(m *ice.Message, arg ...string) { m.OptionFields(""); ZoneExport(m, arg) }}, ice.CTX_EXIT: {Hand: func(m *ice.Message, arg ...string) { m.OptionFields(""); ZoneExport(m, arg) }},
}) }, ZoneAction(arg...))
} }
func PageZoneAction(arg ...ice.Any) ice.Actions { func PageZoneAction(arg ...ice.Any) ice.Actions {
return ice.MergeActions(ice.Actions{ return ice.MergeActions(ice.Actions{

View File

@ -55,6 +55,36 @@ func _dream_list(m *ice.Message) *ice.Message {
}) })
return m return m
} }
func _dream_more_list(m *ice.Message) *ice.Message {
list := m.Spawn(ice.Maps{ice.MSG_FIELDS: ""}).CmdMap(SPIDE, CLIENT_NAME)
m.Cmds(SPACE).Table(func(value ice.Maps) {
value[mdb.ICON] = nfs.USR_ICONS_VOLCANOS
value[nfs.REPOS] = "https://" + value[nfs.MODULE]
value[mdb.STATUS] = cli.START
switch value[mdb.TYPE] {
case SERVER:
value[mdb.ICON] = nfs.USR_ICONS_ICEBERGS
value[mdb.TEXT] = kit.JoinLine(value[nfs.MODULE], value[mdb.TEXT])
msg := gdb.Event(m.Spawn(value), DREAM_TABLES)
defer m.PushButton(strings.Join(msg.Appendv(ctx.ACTION), ""))
case MASTER:
if spide, ok := list[value[mdb.NAME]]; ok {
value[mdb.ICON] = spide[mdb.ICON]
}
value[mdb.TEXT] = kit.JoinLine(value[nfs.MODULE], value[mdb.TEXT])
msg := gdb.Event(m.Spawn(value), DREAM_TABLES)
defer m.PushButton(strings.Join(msg.Appendv(ctx.ACTION), ""))
case aaa.LOGIN:
value[mdb.ICON] = kit.Select(value[mdb.ICON], agentIcon[value[AGENT]])
value[mdb.TEXT] = kit.JoinWord(value[AGENT], value[cli.SYSTEM], value[aaa.IP])
defer m.PushButton(GRANT)
default:
return
}
m.Push("", value, kit.Split(mdb.Config(m, mdb.FIELD)+",type,status,module,version,text"))
})
return m
}
func _dream_start(m *ice.Message, name string) { func _dream_start(m *ice.Message, name string) {
if m.Warn(name == "", ice.ErrNotValid, mdb.NAME) { if m.Warn(name == "", ice.ErrNotValid, mdb.NAME) {
return return
@ -390,37 +420,17 @@ func init() {
} }
return value return value
}) })
ctx.DisplayTableCard(m) _dream_more_list(m)
kit.If(cli.SystemFind(m, "go"), func() {
m.Action("filter", mdb.CREATE, STARTALL, STOPALL, cli.BUILD, PUBLISH)
}, func() {
m.Action(mdb.CREATE, STARTALL, STOPALL)
})
msg := m.Cmds(SPACE)
msg.Table(func(value ice.Maps) {
value[mdb.ICON] = nfs.USR_ICONS_VOLCANOS
value[mdb.STATUS] = cli.START
value[nfs.REPOS] = "https://" + value[nfs.MODULE]
switch value[mdb.TYPE] {
case SERVER:
value[mdb.ICON] = nfs.USR_ICONS_ICEBERGS
msg := gdb.Event(m.Spawn(value), DREAM_TABLES)
defer m.PushButton(strings.Join(msg.Appendv(ctx.ACTION), ""))
case MASTER:
msg := gdb.Event(m.Spawn(value), DREAM_TABLES)
defer m.PushButton(strings.Join(msg.Appendv(ctx.ACTION), ""))
case aaa.LOGIN:
value[mdb.TEXT] = kit.JoinWord(value["agent"], value[cli.SYSTEM], value[aaa.IP])
defer m.PushButton("grant")
default:
return
}
m.Push("", value, kit.Split(mdb.Config(m, mdb.FIELD)+",type,status,module,version,text"))
})
stat := map[string]int{} stat := map[string]int{}
m.Table(func(value ice.Maps) { stat[value[mdb.TYPE]]++; stat[value[mdb.STATUS]]++ }) m.Table(func(value ice.Maps) { stat[value[mdb.TYPE]]++; stat[value[mdb.STATUS]]++ })
kit.If(stat[cli.START] == stat[WORKER], func() { delete(stat, cli.START) }) kit.If(stat[cli.START] == stat[WORKER], func() { delete(stat, cli.START) })
m.Sort("type,status,name", []string{aaa.LOGIN, WORKER, SERVER, MASTER}, []string{cli.START, cli.STOP, cli.BEGIN}, ice.STR_R).StatusTimeCount(stat) m.Sort("type,status,name", []string{aaa.LOGIN, WORKER, SERVER, MASTER}, []string{cli.START, cli.STOP, cli.BEGIN}, ice.STR_R).StatusTimeCount(stat)
ctx.DisplayTableCard(m)
kit.If(cli.SystemFind(m, "go"), func() {
m.Action(html.FILTER, mdb.CREATE, STARTALL, STOPALL, cli.BUILD, PUBLISH)
}, func() {
m.Action(mdb.CREATE, STARTALL, STOPALL)
})
} else if arg[0] == ctx.ACTION { } else if arg[0] == ctx.ACTION {
gdb.Event(m, DREAM_ACTION, arg) gdb.Event(m, DREAM_ACTION, arg)
} else { } else {

View File

@ -158,6 +158,7 @@ func RenderVersion(m *ice.Message) string {
const ( const (
CHAT = "chat" CHAT = "chat"
GRANT = "grant"
VIMER = "vimer" VIMER = "vimer"
XTERM = "xterm" XTERM = "xterm"
DESKTOP = "desktop" DESKTOP = "desktop"
@ -165,6 +166,7 @@ const (
COMPILE = "compile" COMPILE = "compile"
BINPACK = "binpack" BINPACK = "binpack"
AUTOGEN = "autogen" AUTOGEN = "autogen"
INSTALL = "install"
CODE_GIT_SERVICE = "web.code.git.service" CODE_GIT_SERVICE = "web.code.git.service"
CODE_GIT_SEARCH = "web.code.git.search" CODE_GIT_SEARCH = "web.code.git.search"

View File

@ -31,7 +31,7 @@ func _serve_start(m *ice.Message) {
kit.If(runtime.GOOS == cli.WINDOWS || m.Cmdx(cli.SYSTEM, "lsof", "-i", ":"+m.Option(tcp.PORT)) != "", func() { kit.If(runtime.GOOS == cli.WINDOWS || m.Cmdx(cli.SYSTEM, "lsof", "-i", ":"+m.Option(tcp.PORT)) != "", func() {
m.Go(func() { m.Cmd(SPIDE, ice.OPS, _serve_address(m)+"/exit", ice.Maps{CLIENT_TIMEOUT: "30ms"}) }).Sleep300ms() m.Go(func() { m.Cmd(SPIDE, ice.OPS, _serve_address(m)+"/exit", ice.Maps{CLIENT_TIMEOUT: "30ms"}) }).Sleep300ms()
}) })
cli.NodeInfo(m, kit.Select(ice.Info.Hostname, m.Option(tcp.NODENAME)), SERVER) cli.NodeInfo(m, kit.Select(strings.TrimSuffix(ice.Info.Hostname, ".local"), m.Option(tcp.NODENAME)), SERVER)
m.Start("", m.OptionSimple(tcp.HOST, tcp.PORT)...) m.Start("", m.OptionSimple(tcp.HOST, tcp.PORT)...)
m.Cmd(nfs.SAVE, ice.VAR_LOG_ICE_PORT, m.Option(tcp.PORT)) m.Cmd(nfs.SAVE, ice.VAR_LOG_ICE_PORT, m.Option(tcp.PORT))
kit.For(kit.Split(m.Option(ice.DEV)), func(dev string) { kit.For(kit.Split(m.Option(ice.DEV)), func(dev string) {

View File

@ -24,13 +24,15 @@ import (
kit "shylinux.com/x/toolkits" kit "shylinux.com/x/toolkits"
) )
func _spide_create(m *ice.Message, name, link, types string) { func _spide_create(m *ice.Message, name, link, types, icon string) {
if u, e := url.Parse(link); !m.Warn(e != nil || link == "", ice.ErrNotValid, link) { if u, e := url.Parse(link); !m.Warn(e != nil || link == "", ice.ErrNotValid, link) {
dir, file := path.Split(u.EscapedPath()) dir, file := path.Split(u.EscapedPath())
m.Logs(mdb.INSERT, SPIDE, name, LINK, link) m.Logs(mdb.INSERT, SPIDE, name, LINK, link)
mdb.HashSelectUpdate(m, mdb.HashCreate(m, CLIENT_NAME, name), func(value ice.Map) { mdb.HashSelectUpdate(m, mdb.HashCreate(m, CLIENT_NAME, name), func(value ice.Map) {
value[mdb.ICON] = icon
value[SPIDE_CLIENT] = kit.Dict( value[SPIDE_CLIENT] = kit.Dict(
mdb.NAME, name, mdb.TYPE, types, SPIDE_METHOD, http.MethodGet, URL, link, ORIGIN, u.Scheme+"://"+u.Host, mdb.NAME, name, mdb.TYPE, types,
SPIDE_METHOD, http.MethodGet, URL, link, ORIGIN, u.Scheme+"://"+u.Host,
tcp.PROTOCOL, u.Scheme, tcp.HOSTNAME, u.Hostname(), tcp.HOST, u.Host, nfs.PATH, dir, nfs.FILE, file, cli.TIMEOUT, "300s", tcp.PROTOCOL, u.Scheme, tcp.HOSTNAME, u.Hostname(), tcp.HOST, u.Host, nfs.PATH, dir, nfs.FILE, file, cli.TIMEOUT, "300s",
) )
}) })
@ -261,6 +263,13 @@ const (
QS = "?" QS = "?"
) )
var agentIcon = map[string]string{
"Safari": "usr/icons/Safari.png",
"Edg": "usr/icons/Edg.png",
"MicroMessenger": "usr/icons/wechat.png",
}
const SPIDE = "spide" const SPIDE = "spide"
func init() { func init() {
@ -304,7 +313,7 @@ func init() {
dev := kit.Select("https://2021.shylinux.com", ice.Info.Make.Domain, conf[cli.CTX_DEV]) dev := kit.Select("https://2021.shylinux.com", ice.Info.Make.Domain, conf[cli.CTX_DEV])
m.Cmd("", mdb.CREATE, ice.SHY, kit.Select("https://shylinux.com", conf[cli.CTX_SHY]), nfs.REPOS) m.Cmd("", mdb.CREATE, ice.SHY, kit.Select("https://shylinux.com", conf[cli.CTX_SHY]), nfs.REPOS)
m.Cmd("", mdb.CREATE, ice.DEV, dev, nfs.REPOS) m.Cmd("", mdb.CREATE, ice.DEV, dev, nfs.REPOS)
m.Cmd("", mdb.CREATE, ice.DEV_IP, kit.Select(dev, os.Getenv("ctx_dev_ip")), nfs.REPOS) m.Cmd("", mdb.CREATE, ice.DEV_IP, kit.Select(dev, os.Getenv("ctx_dev_ip")))
m.Cmd("", mdb.CREATE, ice.OPS, kit.Select("http://localhost:9020", conf[cli.CTX_OPS]), nfs.REPOS) m.Cmd("", mdb.CREATE, ice.OPS, kit.Select("http://localhost:9020", conf[cli.CTX_OPS]), nfs.REPOS)
m.Cmd("", mdb.CREATE, ice.DEMO, kit.Select("http://localhost:20000", conf[cli.CTX_DEMO])) m.Cmd("", mdb.CREATE, ice.DEMO, kit.Select("http://localhost:20000", conf[cli.CTX_DEMO]))
m.Cmd("", mdb.CREATE, ice.MAIL, kit.Select("https://mail.shylinux.com", conf[cli.CTX_MAIL])) m.Cmd("", mdb.CREATE, ice.MAIL, kit.Select("https://mail.shylinux.com", conf[cli.CTX_MAIL]))
@ -342,8 +351,8 @@ func init() {
mdb.HashSelectValue(m.Spawn(), func(value ice.Map) { m.Push(kit.Select(ORIGIN, arg, 0), kit.Value(value, CLIENT_ORIGIN)) }) mdb.HashSelectValue(m.Spawn(), func(value ice.Map) { m.Push(kit.Select(ORIGIN, arg, 0), kit.Value(value, CLIENT_ORIGIN)) })
} }
}}, }},
mdb.CREATE: {Name: "create name origin type", Hand: func(m *ice.Message, arg ...string) { mdb.CREATE: {Name: "create name origin type icon", Hand: func(m *ice.Message, arg ...string) {
_spide_create(m, m.Option(mdb.NAME), m.Option(ORIGIN), m.Option(mdb.TYPE)) _spide_create(m, m.Option(mdb.NAME), m.Option(ORIGIN), m.Option(mdb.TYPE), m.Option(mdb.ICON))
}}, }},
COOKIE: {Name: "cookie key* value", Help: "状态量", Hand: func(m *ice.Message, arg ...string) { COOKIE: {Name: "cookie key* value", Help: "状态量", Hand: func(m *ice.Message, arg ...string) {
mdb.HashModify(m, m.OptionSimple(CLIENT_NAME), kit.Keys(COOKIE, m.Option(mdb.KEY)), m.Option(mdb.VALUE)) mdb.HashModify(m, m.OptionSimple(CLIENT_NAME), kit.Keys(COOKIE, m.Option(mdb.KEY)), m.Option(mdb.VALUE))
@ -364,8 +373,9 @@ func init() {
DEV_REQUEST_TEXT: {Hand: func(m *ice.Message, arg ...string) { m.Echo(SpaceName(ice.Info.NodeName)) }}, DEV_REQUEST_TEXT: {Hand: func(m *ice.Message, arg ...string) { m.Echo(SpaceName(ice.Info.NodeName)) }},
DEV_CREATE_TOKEN: {Hand: func(m *ice.Message, arg ...string) { DEV_CREATE_TOKEN: {Hand: func(m *ice.Message, arg ...string) {
m.Cmd(SPACE, tcp.DIAL, ice.DEV, m.Option(CLIENT_NAME), m.OptionSimple(TOKEN)) m.Cmd(SPACE, tcp.DIAL, ice.DEV, m.Option(CLIENT_NAME), m.OptionSimple(TOKEN))
m.Sleep300ms()
}}, }},
}, DevTokenAction(CLIENT_NAME, CLIENT_URL), mdb.HashAction(mdb.SHORT, CLIENT_NAME, mdb.FIELD, "time,client.name,client.url,client.type,token")), Hand: func(m *ice.Message, arg ...string) { }, DevTokenAction(CLIENT_NAME, CLIENT_URL), mdb.HashAction(mdb.SHORT, CLIENT_NAME, mdb.FIELD, "time,client.name,client.url,client.type,token,icon")), Hand: func(m *ice.Message, arg ...string) {
if len(arg) < 2 || arg[0] == "" || (len(arg) > 3 && arg[3] == "") { if len(arg) < 2 || arg[0] == "" || (len(arg) > 3 && arg[3] == "") {
list := m.CmdMap(SPACE, mdb.NAME) list := m.CmdMap(SPACE, mdb.NAME)
mdb.HashSelect(m, kit.Slice(arg, 0, 1)...).Sort("client.type,client.name", []string{nfs.REPOS, ""}) mdb.HashSelect(m, kit.Slice(arg, 0, 1)...).Sort("client.type,client.name", []string{nfs.REPOS, ""})

View File

@ -18,14 +18,14 @@ const STORE = "store"
func init() { func init() {
Index.MergeCommands(ice.Commands{ Index.MergeCommands(ice.Commands{
STORE: {Name: "store", Help: "系统商店", Role: aaa.VOID, Actions: ice.MergeActions(ice.Actions{ STORE: {Name: "store list", Help: "系统商店", Role: aaa.VOID, Actions: ice.MergeActions(ice.Actions{
mdb.INPUTS: {Hand: func(m *ice.Message, arg ...string) { mdb.INPUTS: {Hand: func(m *ice.Message, arg ...string) {
m.Cmds(SPIDE).Table(func(value ice.Maps) { kit.If(value[CLIENT_TYPE] == nfs.REPOS, func() { m.Push("", value, arg[0]) }) }) m.Cmds(SPIDE).Table(func(value ice.Maps) { kit.If(value[CLIENT_TYPE] == nfs.REPOS, func() { m.Push("", value, arg[0]) }) })
}}, }},
mdb.CREATE: {Name: "create name* origin*", Hand: func(m *ice.Message, arg ...string) { mdb.CREATE: {Name: "create name* origin*", Hand: func(m *ice.Message, arg ...string) {
m.Cmd(SPIDE, mdb.CREATE, m.OptionSimple("name,origin"), mdb.TYPE, nfs.REPOS) m.Cmd(SPIDE, mdb.CREATE, m.OptionSimple("name,origin"), mdb.TYPE, nfs.REPOS)
}}, }},
"install": {Hand: func(m *ice.Message, arg ...string) { INSTALL: {Hand: func(m *ice.Message, arg ...string) {
if !kit.HasPrefixList(arg, ctx.RUN) { if !kit.HasPrefixList(arg, ctx.RUN) {
if !nfs.Exists(m, path.Join(ice.USR_LOCAL_WORK, m.Option(mdb.NAME))) { if !nfs.Exists(m, path.Join(ice.USR_LOCAL_WORK, m.Option(mdb.NAME))) {
if strings.HasPrefix(m.Option(mdb.ICON), nfs.REQUIRE) { if strings.HasPrefix(m.Option(mdb.ICON), nfs.REQUIRE) {
@ -63,8 +63,9 @@ func init() {
return return
} }
m.Push("", value, kit.Split("time,name,icon,repos,binary,module,version")) m.Push("", value, kit.Split("time,name,icon,repos,binary,module,version"))
m.Push(mdb.TEXT, kit.JoinLine(value[nfs.REPOS], value[nfs.BINARY]))
if m.Push(ORIGIN, origin); !nfs.Exists(m, path.Join(ice.USR_LOCAL_WORK, value[mdb.NAME])) { if m.Push(ORIGIN, origin); !nfs.Exists(m, path.Join(ice.USR_LOCAL_WORK, value[mdb.NAME])) {
m.PushButton("install", PORTAL) m.PushButton(INSTALL, PORTAL)
} else { } else {
m.PushButton(OPEN, PORTAL) m.PushButton(OPEN, PORTAL)
} }

View File

@ -1,5 +1,6 @@
Volcanos(chat.ONIMPORT, { Volcanos(chat.ONIMPORT, {
_init: function(can, msg) { can.ui = can.onappend.layout(can), can.onimport._project(can, msg) _init: function(can, msg) {
can.ui = can.onappend.layout(can), can.onimport._project(can, msg)
can.onappend.style(can, "output card", can.ui.content), can.onmotion.delay(can, function() { can.onimport.layout(can) }) can.onappend.style(can, "output card", can.ui.content), can.onmotion.delay(can, function() { can.onimport.layout(can) })
can.sup.onimport._field = function(sup, msg) { msg.Table(function(item) { can.onappend._plugin(can, item, {style: html.FLOAT}, function(sub) {}) }) } can.sup.onimport._field = function(sup, msg) { msg.Table(function(item) { can.onappend._plugin(can, item, {style: html.FLOAT}, function(sub) {}) }) }
}, },

View File

@ -1,5 +1,5 @@
Volcanos(chat.ONIMPORT, { Volcanos(chat.ONIMPORT, {
_init: function(can, msg) { delete(can._status._cache), delete(can._status._cache_key) _init: function(can, msg) {
if (can.isCmdMode()) { can.onappend.style(can, html.OUTPUT) } if (can.isCmdMode()) { can.onappend.style(can, html.OUTPUT) }
can.ui = can.onappend.layout(can), can.onimport._project(can, msg) can.ui = can.onappend.layout(can), can.onimport._project(can, msg)
}, },

View File

@ -65,6 +65,7 @@ func init() {
text = append(text, list[0]+" ---") text = append(text, list[0]+" ---")
} }
} }
// m.Push(mdb.TEXT, kit.JoinLine(m.Option(nfs.MODULE), strings.Join(text, ", ")))
m.Push(mdb.TEXT, strings.Join(text, ", ")) m.Push(mdb.TEXT, strings.Join(text, ", "))
m.PushButton(kit.Dict(m.CommandKey(), "源码")) m.PushButton(kit.Dict(m.CommandKey(), "源码"))
}}, }},