1
0
forked from x/icebergs

add toast hash

This commit is contained in:
IT 老营长 @云轩领航-创始人 2024-02-15 15:57:53 +08:00
parent 586610ce64
commit 712fe28952
10 changed files with 44 additions and 24 deletions

View File

@ -323,7 +323,7 @@ func init() {
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()))
m.Option(ice.MSG_TITLE, kit.Keys(m.Option(ice.MSG_USERPOD), m.CommandKey(), m.ActionKey()))
defer ToastProcess(m)()
list := []string{cli.LINUX, cli.DARWIN, cli.WINDOWS}
msg := m.Spawn(ice.Maps{ice.MSG_DAEMON: ""})

View File

@ -73,6 +73,9 @@ func init() {
mdb.REMOVE: {Hand: func(m *ice.Message, arg ...string) { _matrix_dream(m, nfs.TRASH); _matrix_dream(m, "") }},
cli.START: {Hand: func(m *ice.Message, arg ...string) { _matrix_dream(m, "") }},
cli.STOP: {Hand: func(m *ice.Message, arg ...string) { _matrix_dream(m, "") }},
COMPILE: {Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(Space(m, kit.Keys(m.Option(DOMAIN), m.Option(mdb.NAME))), COMPILE, cli.AMD64, cli.LINUX, ice.SRC_MAIN_GO).ProcessHold()
}},
UPGRADE: {Hand: func(m *ice.Message, arg ...string) {
m.Cmd(Space(m, kit.Keys(m.Option(DOMAIN), m.Option(mdb.NAME))), UPGRADE).Sleep3s()
}},

View File

@ -81,9 +81,8 @@ func PushNotice(m *ice.Message, arg ...ice.Any) {
return
}
opts := ice.Map{ice.MSG_OPTION: []string{}, ice.MSG_OPTS: []string{}}
kit.For([]string{ice.MSG_TITLE, ctx.DISPLAY, ctx.STYLE, cli.DELAY, ice.MSG_STATUS, ice.LOG_DEBUG, ice.LOG_TRACEID}, func(key string) {
opts[ice.MSG_OPTION] = kit.Simple(opts[ice.MSG_OPTION], key)
opts[key] = m.Option(key)
kit.For([]string{ctx.DISPLAY, ctx.STYLE, cli.DELAY, ice.MSG_TITLE, ice.MSG_STATUS, ice.LOG_DEBUG, ice.LOG_TRACEID}, func(key string) {
opts[ice.MSG_OPTION], opts[key] = kit.Simple(opts[ice.MSG_OPTION], key), m.Option(key)
})
m.Cmd(SPACE, m.Option(ice.MSG_DAEMON), arg, opts)
}
@ -102,7 +101,7 @@ func PushStream(m *ice.Message) *ice.Message {
func init() { ice.Info.PushStream = PushStream }
func init() { ice.Info.PushNotice = PushNotice }
func Toast(m *ice.Message, text string, arg ...ice.Any) *ice.Message { // [title [duration [progress]]]
func Toast(m *ice.Message, text string, arg ...ice.Any) *ice.Message { // [title [duration [progress [hash]]]]
if len(arg) > 1 {
switch val := arg[1].(type) {
case string:
@ -112,7 +111,7 @@ func Toast(m *ice.Message, text string, arg ...ice.Any) *ice.Message { // [title
}
}
kit.If(len(arg) == 0, func() { arg = append(arg, m.PrefixKey()) })
kit.If(len(arg) > 0, func() { arg[0] = kit.Select(m.PrefixKey(), arg[0]) })
kit.If(len(arg) > 0 && arg[0] == "", func() { arg[0] = kit.Keys(m.Option(ice.MSG_USERPOD), ctx.ShortCmd(m.PrefixKey())) })
PushNoticeToast(m, text, arg)
return m
}
@ -133,16 +132,17 @@ func ToastFailure(m *ice.Message, arg ...ice.Any) {
Toast(m, toastContent(m, ice.FAILURE, arg...), "", m.OptionDefault(ice.TOAST_DURATION, cli.TIME_3s)).Sleep(m.OptionDefault(ice.TOAST_DURATION, cli.TIME_3s))
}
func ToastProcess(m *ice.Message, arg ...ice.Any) func(...ice.Any) {
Toast(m, toastContent(m, ice.PROCESS, arg...), "", cli.TIME_30s)
return func(arg ...ice.Any) { Toast(m, toastContent(m, ice.SUCCESS, arg...), "", "1s") }
h := kit.HashsUniq()
Toast(m, toastContent(m, ice.PROCESS, arg...), "", "-1", "", h)
return func(arg ...ice.Any) { Toast(m, toastContent(m, ice.SUCCESS, arg...), "", cli.TIME_1s, "", h) }
}
func GoToast(m *ice.Message, title string, cb func(toast func(name string, count, total int)) []string) *ice.Message {
_total := 0
icon := Icons[ice.PROCESS]
h := kit.HashsUniq()
icon, _total := Icons[ice.PROCESS], 0
toast := func(name string, count, total int) {
kit.If(total == 0, func() { total = 1 })
Toast(m, kit.Format("%s %s %s", icon, kit.JoinWord(kit.Select(kit.Select("", m.ActionKey(), m.ActionKey() != ice.LIST), title, m.Option(ice.MSG_TITLE)), name), strings.ReplaceAll(kit.FmtSize(count, total), "B", "")),
"", m.OptionDefault(ice.TOAST_DURATION, cli.TIME_30s), count*100/total)
Toast(m, kit.Format("%s %s %s", icon, kit.JoinWord(m.ActionKey(), name), strings.ReplaceAll(kit.FmtSize(count, total), "B", "")),
kit.Select(title, m.Option(ice.MSG_TITLE)), m.OptionDefault(ice.TOAST_DURATION, "-1"), count*100/total, h)
_total = total
}
if list := cb(toast); len(list) > 0 {

View File

@ -325,6 +325,7 @@ func init() {
})
m.Sort("", kit.Simple(aaa.LOGIN, WEIXIN, PORTAL, WORKER, SERVER, MASTER))
} else {
m.OptionDefault(ice.MSG_USERPOD, arg[0])
_space_send(m, arg[0], kit.Simple(kit.Split(arg[1]), arg[2:])...)
}
}},

View File

@ -11,7 +11,7 @@ fieldset.macos.desktop>div.output>fieldset.macos.menu div.menu { display:flex; a
fieldset.macos.desktop>div.output>fieldset.macos.menu div.menu.title { font-style:italic; margin-left:10px; }
fieldset.macos.desktop>div.output>fieldset.macos.menu div.item.time { margin-right:10px; }
fieldset.macos.desktop>div.output>fieldset.macos.menu>div.output { overflow:hidden; }
fieldset.macos.desktop>div.output>fieldset.macos.dock { border:var(--box-border); border-radius:var(--plugin-radius); position:absolute; bottom:var(--input-margin); transition:margin-left 0.3s; }
fieldset.macos.desktop>div.output>fieldset.macos.dock { border:var(--box-border); border-radius:var(--plugin-radius); position:absolute; bottom:var(--input-margin); transition:margin-left 0.3s; z-index:11; }
fieldset.macos.desktop>div.output>fieldset.macos.searchs { position:absolute; z-index:11; }
fieldset.macos.desktop>div.output>fieldset.macos.notifications { height:calc(100% - 125px); width:320px; overflow:auto; position:absolute; top:var(--desktop-menu-height); left:calc(100% - 320px); z-index:11; }
fieldset.macos.desktop>div.output>fieldset.macos.notifications>div.action>div.item { padding:0; }
@ -74,7 +74,7 @@ fieldset.macos.dock>div.output>div.item { text-align:center; align-self:baseline
fieldset.macos.dock>div.output>div.item img { object-fit:contain; min-height:var(--desktop-icon-size); width:var(--desktop-icon-size); transition:width 0.3s; }
fieldset.macos.dock>div.output>div.item>div.name { display:none; }
fieldset.macos.finder>div.output div.content>div.item { text-align:center; float:left; }
fieldset.macos.finder>div.output div.content>div.item img { object-fit:contain; height:var(--desktop-icon-size); width:var(--desktop-icon-size); }
fieldset.macos.finder>div.output div.content>div.item img { object-fit:contain; width:var(--desktop-icon-size); }
fieldset.macos.finder>div.output div.content>div.item div.name { font-size:var(--code-font-size); text-align:center; }
body.dark fieldset.macos.desktop>div.output>fieldset.macos { background-color:#08234ad1; }
body.dark fieldset.macos.desktop>div.output>div.desktop fieldset table.content tbody tr:nth-child(odd):not(:hover) { background-color:#282B2F; }

View File

@ -10,19 +10,24 @@ Volcanos(chat.ONIMPORT, {
Volcanos(chat.ONACTION, {
record: function(event, can, msg) { can.misc.sessionStorage(can, SCRIPT_ZONE, msg.Option(mdb.ZONE)), can.user.toastSuccess(can, msg.Option(mdb.ZONE)), can.Update(event) },
stop: function(event, can, msg) { can.misc.sessionStorage(can, SCRIPT_ZONE, ""), can.Update(event) },
play: function(event, can) { var begin = new Date().getTime(); can.core.Next(can._msg.Table(), function(value, next, index, list) {
play: function(event, can) { var begin = new Date().getTime(); can.core.Next(can._msg.Table(), function(value, next, index, list, data) {
var ls = can.core.Split(value.style||""); data = data||{}, data.list = data.list||[]; var fork
if (ls && ls.length > 0 && ls[0] == "fork") { data.done = parseInt(ls[1])+1, fork = {skip: parseInt(ls[1])} }
if (data.skip > 0) { return next({skip: data.skip-1}) }
if (data.done === 0) { return } if (data.done > 0) { data.done -= 1 } data.list.push(value)
can.Status(cli.STEP, index), can.Status(cli.COST, can.base.Duration(new Date().getTime()-begin))
can.user.toastProcess(can, `${can.core.Keys(value.space, value.index)} ${value.play} ${index}/${can._msg.Length()}`, "", index*100/list.length)
var tr = can.page.Select(can, can._output, html.TR)[1]; can.onmotion.select(can, tr.parentNode, html.TR, index)
value.status == mdb.DISABLE? next(): can.onaction.preview({}, can, can.request({}, value), next)
value.status == mdb.DISABLE? next(data): can.onaction.preview({}, can, can.request({}, value), next, data)
if (fork) { next(fork) }
}, function(list) { can.Status(cli.STEP, list.length), can.Status(cli.COST, can.base.Duration(new Date().getTime()-begin)), can.user.toastSuccess(can) }) },
preview: function(event, can, msg, next) {
preview: function(event, can, msg, next, data) {
can.onappend.plugin(can, {space: msg.Option(web.SPACE), index: msg.Option(ctx.INDEX), style: msg.Option(ctx.STYLE)}, function(sub) { var done = false
function action(skip) { sub.Update(sub.request({}, {_handle: ice.TRUE}), [ctx.ACTION, msg.Option(cli.PLAY)], function(msg) {
sub.onimport._process(sub, msg) || msg.Length() == 0 && msg.Result() == "" || can.onappend._output(sub, msg), next && next()
sub.onimport._process(sub, msg) || msg.Length() == 0 && msg.Result() == "" || can.onappend._output(sub, msg), next && next(data)
}) }
if (msg.Option(ctx.STYLE) == "async") {
done = true, sub.Update(sub.request({}, {_handle: ice.TRUE}), [ctx.ACTION, msg.Option(cli.PLAY)]), next && next()
done = true, sub.Update(sub.request({}, {_handle: ice.TRUE}), [ctx.ACTION, msg.Option(cli.PLAY)]), next && next(data)
} else {
can.onmotion.delay(can, function() { if (done || sub._auto) { return } done = true, action() }, 300)
}

View File

@ -111,8 +111,8 @@ func init() {
}},
web.DREAM_ACTION: {Hand: func(m *ice.Message, arg ...string) { web.DreamProcess(m, nil, arg...) }},
}, ctx.ConfAction(cli.ENV, kit.Dict(GOPRIVATE, "shylinux.com,github.com", GOPROXY, "https://goproxy.cn,direct", CGO_ENABLED, "0"))), Hand: func(m *ice.Message, arg ...string) {
defer web.ToastProcess(m)()
main, file, goos, arch := _compile_target(m, arg...)
defer web.ToastProcess(m, file)(file)
env := kit.Simple(cli.PATH, cli.BinPath(), cli.HOME, kit.Select(kit.Path(""), kit.Env(cli.HOME)), mdb.Configv(m, cli.ENV), m.Optionv(cli.ENV), cli.GOOS, goos, cli.GOARCH, arch)
kit.If(runtime.GOOS == cli.WINDOWS, func() { env = append(env, GOPATH, kit.HomePath(GO), GOCACHE, kit.HomePath("go/go-build")) })
m.Options(cli.CMD_ENV, env).Cmd(AUTOGEN, VERSION)

12
logs.go
View File

@ -271,6 +271,18 @@ func (m *Message) FormatStack(s, n int) string {
switch ls := kit.Split(name, PT, PT); kit.Select("", ls, 0) {
case "reflect", "runtime", "http":
default:
if kit.HasPrefix(name,
"icebergs.(*Context)._action",
"icebergs.(*Context)._command",
"icebergs.(*Message)._command",
"icebergs.(*Message).Cmd",
"icebergs.(*Message).CmdHand",
"icebergs.(*Message).Search",
"icebergs.(*Message).TryCatch",
"icebergs.(*Message).Go",
) {
break
}
list = append(list, kit.Format("%s:%d\t%s", file, frame.Line, name))
}
if len(list) >= n || !more {

View File

@ -458,7 +458,7 @@ func init() {
}
}},
REMOTE: {Role: aaa.VOID, Hand: func(m *ice.Message, arg ...string) {
repos := _repos_open(m, kit.Select(path.Base(kit.Path("")), kit.Select(m.Option(REPOS), arg, 0)))
repos := _repos_open(m, kit.Select(path.Base(kit.Path("")), arg, 0))
if _remote, err := repos.Remote(ORIGIN); err == nil {
m.Push(REMOTE, kit.Select("", _remote.Config().URLs, 0))
}

View File

@ -109,7 +109,6 @@ func (s relay) Inputs(m *ice.Message, arg ...string) {
}
}
func (s relay) Stats(m *ice.Message) {
m.Option(ice.MSG_TITLE, kit.Keys(m.CommandKey(), m.ActionKey()))
cmds := []string{"go", `go version`, "git", `git version`,
PACKAGE, `if yum -h &>/dev/null; then echo yum; elif apk version &>/dev/null; then echo apk; elif opkg -v &>/dev/null; then echo opkg; elif apt -h &>/dev/null; then echo apt; fi`,
SHELL, `echo $SHELL`, KERNEL, `uname -s`, ARCH, `uname -m`,
@ -319,7 +318,7 @@ func (s relay) Install(m *ice.Message, arg ...string) {
s.Modify(m, kit.Simple(m.OptionSimple(MACHINE, web.DREAM))...)
}
func (s relay) Upgrade(m *ice.Message, arg ...string) {
m.Option(ice.MSG_TITLE, kit.Keys(m.CommandKey(), m.ActionKey()))
m.Option(ice.MSG_TITLE, kit.Keys(m.Option(ice.MSG_USERPOD), m.CommandKey(), m.ActionKey()))
if len(arg) == 0 && (m.Option(MACHINE) == "" || strings.Contains(m.Option(MACHINE), ",")) {
s.foreach(m, func(msg *ice.Message, cmd []string) {
if msg.Option("go") == "" {
@ -334,7 +333,7 @@ func (s relay) Upgrade(m *ice.Message, arg ...string) {
}
}
func (s relay) Version(m *ice.Message, arg ...string) {
m.Option(ice.MSG_TITLE, kit.Keys(m.CommandKey(), m.ActionKey()))
m.Option(ice.MSG_TITLE, kit.Keys(m.Option(ice.MSG_USERPOD), m.CommandKey(), m.ActionKey()))
s.foreach(m, func(msg *ice.Message, cmd []string) {
if msg.Option("go") == "" {
return