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) {
data, msg := ice.Map{}, m.Spawn(m.Source())
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
} else {
data[k] = v

View File

@ -189,10 +189,10 @@ func ZoneAction(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_EXIT: {Hand: func(m *ice.Message, arg ...string) { m.OptionFields(""); ZoneExport(m, arg) }},
})
}, ZoneAction(arg...))
}
func PageZoneAction(arg ...ice.Any) ice.Actions {
return ice.MergeActions(ice.Actions{

View File

@ -55,6 +55,36 @@ func _dream_list(m *ice.Message) *ice.Message {
})
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) {
if m.Warn(name == "", ice.ErrNotValid, mdb.NAME) {
return
@ -390,37 +420,17 @@ func init() {
}
return value
})
ctx.DisplayTableCard(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"))
})
_dream_more_list(m)
stat := map[string]int{}
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) })
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 {
gdb.Event(m, DREAM_ACTION, arg)
} else {

View File

@ -158,6 +158,7 @@ func RenderVersion(m *ice.Message) string {
const (
CHAT = "chat"
GRANT = "grant"
VIMER = "vimer"
XTERM = "xterm"
DESKTOP = "desktop"
@ -165,6 +166,7 @@ const (
COMPILE = "compile"
BINPACK = "binpack"
AUTOGEN = "autogen"
INSTALL = "install"
CODE_GIT_SERVICE = "web.code.git.service"
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() {
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.Cmd(nfs.SAVE, ice.VAR_LOG_ICE_PORT, m.Option(tcp.PORT))
kit.For(kit.Split(m.Option(ice.DEV)), func(dev string) {

View File

@ -24,13 +24,15 @@ import (
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) {
dir, file := path.Split(u.EscapedPath())
m.Logs(mdb.INSERT, SPIDE, name, LINK, link)
mdb.HashSelectUpdate(m, mdb.HashCreate(m, CLIENT_NAME, name), func(value ice.Map) {
value[mdb.ICON] = icon
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",
)
})
@ -261,6 +263,13 @@ const (
QS = "?"
)
var agentIcon = map[string]string{
"Safari": "usr/icons/Safari.png",
"Edg": "usr/icons/Edg.png",
"MicroMessenger": "usr/icons/wechat.png",
}
const SPIDE = "spide"
func init() {
@ -304,7 +313,7 @@ func init() {
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.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.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]))
@ -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.CREATE: {Name: "create name origin type", Hand: func(m *ice.Message, arg ...string) {
_spide_create(m, m.Option(mdb.NAME), m.Option(ORIGIN), m.Option(mdb.TYPE))
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), m.Option(mdb.ICON))
}},
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))
@ -364,8 +373,9 @@ func init() {
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) {
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] == "") {
list := m.CmdMap(SPACE, mdb.NAME)
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() {
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) {
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) {
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 !nfs.Exists(m, path.Join(ice.USR_LOCAL_WORK, m.Option(mdb.NAME))) {
if strings.HasPrefix(m.Option(mdb.ICON), nfs.REQUIRE) {
@ -63,8 +63,9 @@ func init() {
return
}
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])) {
m.PushButton("install", PORTAL)
m.PushButton(INSTALL, PORTAL)
} else {
m.PushButton(OPEN, PORTAL)
}

View File

@ -1,5 +1,6 @@
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.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, {
_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) }
can.ui = can.onappend.layout(can), can.onimport._project(can, msg)
},

View File

@ -65,6 +65,7 @@ func init() {
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.PushButton(kit.Dict(m.CommandKey(), "源码"))
}},