1
0
mirror of https://shylinux.com/x/icebergs synced 2025-06-26 02:17:30 +08:00

add script

This commit is contained in:
IT 老营长 @云轩领航-创始人 2024-01-22 22:24:08 +08:00
parent 6023c1506d
commit af481aec3b
9 changed files with 48 additions and 37 deletions

View File

@ -253,10 +253,12 @@ func init() {
m.Echo("%v", string(buf))
}},
"upgrade": {Help: "升级", Hand: func(m *ice.Message, arg ...string) {
if nfs.Exists(m, ".git") && SystemFind(m, "go") != "" {
if nfs.Exists(m, ice.SRC_MAIN_GO) && nfs.Exists(m, ".git") && SystemFind(m, "go") != "" {
m.Cmdy("web.code.compile")
} else {
} else if nfs.Exists(m, ice.BIN_ICE_BIN) {
m.Cmdy("web.code.upgrade")
} else {
m.Cmdy("", "reboot")
}
}},
"reboot": {Help: "重启", Icon: "bi bi-bootstrap-reboot", Hand: func(m *ice.Message, arg ...string) {

View File

@ -190,10 +190,7 @@ func ZoneAction(arg ...ice.Any) ice.Actions {
}
func ExportZoneAction(arg ...ice.Any) ice.Actions {
return ice.MergeActions(ZoneAction(arg...), 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) }},
})
}

View File

@ -240,38 +240,53 @@ func init() {
})
}},
cli.BUILD: {Name: "build name", Hand: func(m *ice.Message, arg ...string) {
m.Option(ice.MSG_TITLE, kit.Keys(m.CommandKey(), m.ActionKey()))
m.Cmd("", FOR_FLOW, m.Option(mdb.NAME), kit.JoinWord(cli.SH, ice.ETC_MISS_SH))
m.Sleep3s().Cmdy(ROUTE, cli.BUILD).ProcessInner()
m.Option(ice.MSG_TITLE, kit.Keys(m.Option(ice.MSG_USERPOD), m.CommandKey(), m.ActionKey()))
compile := cli.SystemFind(m, "go") != ""
m.Cmd("", FOR_FLOW, m.Option(mdb.NAME), kit.JoinWord(cli.SH, ice.ETC_MISS_SH), func(p string) bool {
if compile && nfs.Exists(m, path.Join(p, ice.SRC_MAIN_GO)) {
return false
} else {
m.Cmd(SPACE, path.Base(p), cli.RUNTIME, UPGRADE)
return true
}
})
// kit.If(m.Option(mdb.NAME) == "", func() { m.Sleep3s().Cmdy(ROUTE, cli.BUILD).ProcessInner() })
}},
PUBLISH: {Name: "publish name", Help: "发布", Icon: "bi bi-send-check", Hand: func(m *ice.Message, arg ...string) {
m.Option(ice.MSG_TITLE, kit.Keys(m.CommandKey(), m.ActionKey()))
defer ToastProcess(m)()
list := []string{cli.LINUX, cli.DARWIN, cli.WINDOWS}
msg := m.Spawn(ice.Maps{ice.MSG_DAEMON: ""})
m.Cmd(CODE_AUTOGEN, "binpack")
m.Cmd(AUTOGEN, BINPACK)
kit.For(list, func(goos string) {
PushNoticeRich(m, mdb.NAME, ice.Info.NodeName, msg.Cmd(CODE_COMPILE, goos, cli.AMD64).AppendSimple())
PushNoticeRich(m, mdb.NAME, ice.Info.NodeName, msg.Cmd(COMPILE, goos, cli.AMD64).AppendSimple())
})
DreamEach(m, m.Option(mdb.NAME), "", func(name string) {
m.Cmd(SPACE, name, CODE_AUTOGEN, "binpack")
m.Cmd(SPACE, name, AUTOGEN, BINPACK)
kit.For(list, func(goos string) {
PushNoticeRich(m, mdb.NAME, name, msg.Cmd(SPACE, name, CODE_COMPILE, goos, cli.AMD64, kit.Dict(ice.MSG_USERPOD, name)).AppendSimple())
PushNoticeRich(m, mdb.NAME, name, msg.Cmd(SPACE, name, COMPILE, goos, cli.AMD64, kit.Dict(ice.MSG_USERPOD, name)).AppendSimple())
})
})
m.ProcessHold()
}},
FOR_FLOW: {Name: "forFlow name cmd*='sh etc/miss.sh'", Help: "流程", Icon: "bi bi-terminal", Hand: func(m *ice.Message, arg ...string) {
list := []string{}
DreamEach(m.Spawn(ice.Maps{ice.MSG_DAEMON: ""}), m.Option(mdb.NAME), "", func(name string) { list = append(list, name) })
m.Options(ctx.DISPLAY, PLUGIN_XTERM, cli.CMD_OUTPUT, nfs.NewWriteCloser(func(buf []byte) (int, error) {
PushNoticeGrow(m.Options(ice.MSG_COUNT, "0"), strings.ReplaceAll(string(buf), lex.NL, "\r\n"))
return len(buf), nil
}, func() error { return nil }))
msg := mdb.HashSelects(m.Spawn(), m.Option(mdb.NAME))
GoToast(m, "", func(toast func(string, int, int)) []string {
msg.Table(func(index int, value ice.Maps) {
toast(value[mdb.NAME], index, msg.Length())
p := path.Join(ice.USR_LOCAL_WORK, value[mdb.NAME])
PushNoticeGrow(m, strings.ReplaceAll(kit.Format("[%s]%s$ %s\n", time.Now().Format(ice.MOD_TIME_ONLY), value[mdb.NAME], m.Option(ice.CMD)), lex.NL, "\r\n"))
kit.For(list, func(index int, name string) {
toast(name, index, len(list))
p := path.Join(ice.USR_LOCAL_WORK, name)
switch cb := m.OptionCB("").(type) {
case func(string) bool:
if cb(p) {
return
}
}
PushNoticeGrow(m, strings.ReplaceAll(kit.Format("[%s]%s$ %s\n", time.Now().Format(ice.MOD_TIME_ONLY), name, m.Option(ice.CMD)), lex.NL, "\r\n"))
m.Cmd(cli.SYSTEM, kit.Split(m.Option(ice.CMD)), kit.Dict(cli.CMD_DIR, p)).Sleep300ms()
PushNoticeGrow(m, "\r\n\r\n\r\n")
})
@ -350,7 +365,7 @@ func init() {
}},
}, StatsAction(), DreamAction(), mdb.ImportantHashAction(
mdb.SHORT, mdb.NAME, mdb.FIELD, "time,name,icon,repos,binary,template,restart", ctx.TOOLS, kit.Simple(CODE_GIT_SEARCH, ROUTE, SPIDE),
html.BUTTON, kit.JoinWord(PORTAL, ADMIN, DESKTOP, WIKI_WORD, CODE_GIT_STATUS, CODE_VIMER, CODE_XTERM, CODE_COMPILE),
html.BUTTON, kit.JoinWord(PORTAL, ADMIN, DESKTOP, WIKI_WORD, STATUS, VIMER, XTERM, COMPILE),
)), Hand: func(m *ice.Message, arg ...string) {
if len(arg) == 0 {
_dream_list(m).RewriteAppend(func(value, key string, index int) string {

View File

@ -136,7 +136,7 @@ var Icons = map[string]string{ice.PROCESS: "🕑", ice.FAILURE: "❌", ice.SUCCE
func toastContent(m *ice.Message, state string, arg ...ice.Any) string {
if len(arg) == 0 {
return kit.JoinWord(kit.Simple(Icons[state], m.ActionKey(), state)...)
return kit.JoinWord(kit.Simple(Icons[state], kit.Select("", m.ActionKey(), m.ActionKey() != ice.LIST), state)...)
} else {
return kit.JoinWord(kit.Simple(Icons[state], arg)...)
}
@ -156,7 +156,7 @@ func GoToast(m *ice.Message, title string, cb func(toast func(name string, count
icon := Icons[ice.PROCESS]
toast := func(name string, count, total int) {
kit.If(total == 0, func() { total = 1 })
Toast(m, kit.Format("%s %s %s/%s", icon, kit.JoinWord(kit.Select(m.ActionKey(), m.Option(ice.MSG_TITLE)), name), strings.TrimSuffix(kit.FmtSize(int64(count)), "B"), strings.TrimSuffix(kit.FmtSize(int64(total)), "B")),
Toast(m, kit.Format("%s %s %s/%s", icon, kit.JoinWord(kit.Select(kit.Select("", m.ActionKey(), m.ActionKey() != ice.LIST), title, m.Option(ice.MSG_TITLE)), name), strings.TrimSuffix(kit.FmtSize(int64(count)), "B"), strings.TrimSuffix(kit.FmtSize(int64(total)), "B")),
"", m.OptionDefault(ice.TOAST_DURATION, "30s"), count*100/total)
_total = total
}

View File

@ -158,9 +158,13 @@ func RenderVersion(m *ice.Message) string {
const (
CHAT = "chat"
DESKTOP = "desktop"
COMPILE = "compile"
XTERM = "xterm"
VIMER = "vimer"
DESKTOP = "desktop"
UPGRADE = "upgrade"
COMPILE = "compile"
BINPACK = "binpack"
AUTOGEN = "autogen"
CODE_GIT_SERVICE = "web.code.git.service"
CODE_GIT_SEARCH = "web.code.git.search"

View File

@ -84,19 +84,10 @@ func init() {
_route_toast(m, m.Option(SPACE), append([]string{m.Option(ctx.INDEX)}, kit.Split(m.Option(ctx.ARGS))...)...)
}},
cli.BUILD: {Name: "build space", Help: "构建", Hand: func(m *ice.Message, arg ...string) {
_route_toast(m, m.Option(SPACE), m.PrefixKey(), "_build")
_route_toast(m, m.Option(SPACE), cli.RUNTIME, UPGRADE)
func() { defer ToastProcess(m)(); m.Sleep3s() }()
m.SetAppend().Cmdy("", "travel")
}},
"_build": {Hand: func(m *ice.Message, arg ...string) {
if _, err := nfs.DiskFile.StatFile(ice.SRC_MAIN_GO); err == nil && nfs.Exists(m, ".git") {
m.Cmdy(CODE_VIMER, "compile")
} else if ice.Info.NodeType == SERVER {
m.Cmdy(CODE_UPGRADE)
} else {
m.Cmdy(ice.EXIT, "1")
}
}},
"diagram": {Help: "导图", Icon: "bi bi-diagram-3", Hand: func(m *ice.Message, arg ...string) {
ctx.DisplayStorySpide(m.Cmdy(""), nfs.DIR_ROOT, ice.Info.NodeName, mdb.FIELD, SPACE, lex.SPLIT, nfs.PT, ctx.ACTION, ice.MAIN)
}},

View File

@ -194,7 +194,9 @@ func _space_exec(m *ice.Message, name string, source, target []string, c *websoc
return
}
m.OptionDefault(ice.MSG_COUNT, "0")
m.Option(ice.MSG_DAEMON, kit.Keys(kit.Slice(kit.Reverse(kit.Simple(source)), 0, -1), m.Option(ice.MSG_DAEMON)))
kit.If(m.Option(ice.MSG_DAEMON), func(p string) {
m.Option(ice.MSG_DAEMON, kit.Keys(kit.Slice(kit.Reverse(kit.Simple(source)), 0, -1), p))
})
kit.If(aaa.Right(m, m.Detailv()), func() { m.TryCatch(true, func(_ *ice.Message) { m = m.Cmd() }) })
kit.If(m.Optionv(ice.MSG_ARGS) != nil, func() { m.Options(ice.MSG_ARGS, kit.Simple(m.Optionv(ice.MSG_ARGS))) })
}

View File

@ -12,7 +12,7 @@ const SCRIPT = "script"
func init() {
Index.MergeCommands(ice.Commands{
SCRIPT: {Name: "script zone id auto", Help: "脚本化", Icon: "script.png", Actions: ice.MergeActions(
mdb.ImportantZoneAction(mdb.FIELDS, "time,id,space,index,play,status,style"), mdb.ExportZoneAction(),
mdb.ExportZoneAction(mdb.FIELDS, "time,id,space,index,play,status,style"),
), Hand: func(m *ice.Message, arg ...string) {
if mdb.ZoneSelect(m.Options(mdb.CACHE_LIMIT, "30"), arg...).Display(""); len(arg) == 0 {
m.PushAction(cli.RECORD, mdb.REMOVE).Action(mdb.CREATE, cli.STOP)

View File

@ -44,7 +44,7 @@ func init() {
uri := "/publish/" + kit.Format(value[nfs.FILE])
kit.If(m.Spawn().ParseLink(ice.Info.Domain).Option(ice.MSG_USERPOD), func(p string) { uri = kit.MergeURL(uri, ice.POD, p) })
dir := path.Join(kit.Format(value[nfs.PATH]), kit.Format(value[nfs.FILE]))
web.GoToast(m, m.PrefixKey(), func(toast func(name string, count, total int)) []string {
web.GoToast(m, web.DOWNLOAD, func(toast func(name string, count, total int)) []string {
switch web.SpideSave(m, dir, uri, func(count, total, value int) {
toast(dir, count, total)
}); value[mdb.TYPE] {
@ -56,7 +56,7 @@ func init() {
}
return nil
})
m.Cmdy(nfs.DIR, dir, "time,size,path,hash")
m.Cmdy(nfs.DIR, dir, "time,size,path,hash").Push(web.ORIGIN, kit.MergeURL2(web.SpideOrigin(m, ice.DEV_IP), uri))
})
if web.ToastSuccess(m); m.Option(ice.EXIT) == ice.TRUE {
web.Toast(m, cli.RESTART)