mirror of
https://shylinux.com/x/icebergs
synced 2025-04-26 17:44:05 +08:00
130 lines
4.6 KiB
Go
130 lines
4.6 KiB
Go
package code
|
|
|
|
import (
|
|
"path"
|
|
"strings"
|
|
|
|
ice "shylinux.com/x/icebergs"
|
|
"shylinux.com/x/icebergs/base/cli"
|
|
"shylinux.com/x/icebergs/base/lex"
|
|
"shylinux.com/x/icebergs/base/mdb"
|
|
"shylinux.com/x/icebergs/base/nfs"
|
|
"shylinux.com/x/icebergs/base/web"
|
|
"shylinux.com/x/icebergs/base/web/html"
|
|
kit "shylinux.com/x/toolkits"
|
|
)
|
|
|
|
func init() {
|
|
Index.MergeCommands(ice.Commands{
|
|
VERSION: {Name: "version refresh", Help: "版本", Actions: ice.MergeActions(ice.Actions{
|
|
mdb.INPUTS: {Hand: func(m *ice.Message, arg ...string) {
|
|
ls := kit.Split(kit.Split(strings.TrimPrefix(m.Option(VERSION), "v"), "-")[0], ".")
|
|
if len(ls) > 2 {
|
|
m.Push(arg[0], kit.Format("v%d.%d.%d", kit.Int(ls[0]), kit.Int(ls[1]), kit.Int(ls[2])+1))
|
|
m.Push(arg[0], kit.Format("v%d.%d.%d", kit.Int(ls[0]), kit.Int(ls[1])+1, 0))
|
|
m.Push(arg[0], kit.Format("v%d.%d.%d", kit.Int(ls[0])+1, 0, 0))
|
|
} else {
|
|
m.Push(arg[0], "v0.0.1")
|
|
}
|
|
}},
|
|
"sync": {Help: "同步", Hand: func(m *ice.Message, arg ...string) {
|
|
repos := map[string]string{}
|
|
m.Cmds("web.code.git.repos").Table(func(value ice.Maps) { repos[strings.Split(value[web.ORIGIN], "://")[1]] = value[nfs.VERSION] })
|
|
m.Cmd("web.code.mod", mdb.RENDER, MOD, ice.GO_MOD, nfs.PWD).Table(func(value ice.Maps) { repos[value[REQUIRE]] = value[VERSION] })
|
|
res := m.Cmdx(nfs.CAT, path.Join(nfs.USR_LOCAL_WORK, m.Option(SPACE), ice.GO_MOD), func(ls []string, text string) string {
|
|
if len(ls) > 1 {
|
|
if v, ok := repos[ls[0]]; ok {
|
|
m.Debug("what %v %v => %v", ls[0], ls[1], repos[ls[0]])
|
|
text = lex.TB + ls[0] + lex.SP + v
|
|
}
|
|
}
|
|
return text
|
|
})
|
|
m.Cmd(nfs.SAVE, path.Join(nfs.USR_LOCAL_WORK, m.Option(SPACE), ice.GO_MOD), res)
|
|
m.Cmd(SPACE, m.Option(SPACE), cli.SYSTEM, GO, MOD, "tidy")
|
|
}},
|
|
"tag": {Name: "tag version", Hand: func(m *ice.Message, arg ...string) {
|
|
m.Cmd(SPACE, m.Option(SPACE), cli.SYSTEM, GIT, TAG, m.Option(VERSION))
|
|
m.Cmd(SPACE, m.Option(SPACE), VIMER, COMPILE)
|
|
m.Sleep3s()
|
|
}},
|
|
"xterm": {Hand: func(m *ice.Message, arg ...string) {
|
|
web.ProcessPodCmd(m, m.Option(web.SPACE), m.ActionKey(), cli.SH, arg...)
|
|
}},
|
|
"status": {Hand: func(m *ice.Message, arg ...string) {
|
|
web.ProcessPodCmd(m, m.Option(web.SPACE), m.ActionKey(), nil, arg...)
|
|
}},
|
|
}), Hand: func(m *ice.Message, arg ...string) {
|
|
repos := map[string]string{}
|
|
list := map[string]map[string]string{}
|
|
list[ice.Info.Pathname] = map[string]string{}
|
|
m.Cmds("web.code.git.repos").Table(func(value ice.Maps) { repos[strings.Split(value[web.ORIGIN], "://")[1]] = value[nfs.VERSION] })
|
|
m.Cmd("web.code.mod", mdb.RENDER, MOD, ice.GO_MOD, nfs.PWD).Table(func(value ice.Maps) {
|
|
list[ice.Info.Pathname][value[REQUIRE]] = value[VERSION]
|
|
if value[REPLACE] == nfs.PWD {
|
|
list[ice.Info.Pathname][MODULE] = value[REQUIRE]
|
|
list[ice.Info.Pathname][VERSION] = value[VERSION]
|
|
} else {
|
|
repos[value[REQUIRE]] = value[VERSION]
|
|
}
|
|
})
|
|
web.DreamEach(m, m.Option(mdb.NAME), "", func(name string) {
|
|
list[name] = map[string]string{}
|
|
m.Cmd(web.SPACE, name, "web.code.mod", mdb.RENDER, MOD, ice.GO_MOD, nfs.PWD).Table(func(value ice.Maps) {
|
|
if value[REPLACE] == nfs.PWD {
|
|
list[name][MODULE] = value[REQUIRE]
|
|
list[name][VERSION] = value[VERSION]
|
|
} else {
|
|
list[name][value[REQUIRE]] = value[VERSION]
|
|
}
|
|
})
|
|
list[name]["diff"] = kit.ReplaceAll(m.Cmdx(web.SPACE, name, cli.SYSTEM, "git", "diff", "--shortstat"), " changed", "", "tions", "")
|
|
})
|
|
for space, v := range list {
|
|
diff := false
|
|
m.Push(web.SPACE, space)
|
|
m.Push(MODULE, v[MODULE])
|
|
m.Push(VERSION, v[VERSION])
|
|
kit.For(repos, func(k, _v string) {
|
|
if kit.IsIn(k,
|
|
"shylinux.com/x/go-qrcode",
|
|
"shylinux.com/x/websocket",
|
|
) {
|
|
return
|
|
}
|
|
if k == v[MODULE] || v[k] == "" {
|
|
m.Push(k, "")
|
|
} else if v[k] == _v {
|
|
m.Push(k, v[k])
|
|
} else {
|
|
m.Push(k, v[k]+" => "+_v)
|
|
diff = true
|
|
}
|
|
})
|
|
button, status := []ice.Any{}, ""
|
|
if diff {
|
|
button, status = append(button, "sync"), html.DANGER
|
|
}
|
|
if list[space]["diff"] != "" {
|
|
button = append(button, "status")
|
|
}
|
|
if strings.Contains(list[space][VERSION], "-") {
|
|
button = append(button, "tag")
|
|
}
|
|
if len(button) > 0 {
|
|
button = append(button, "xterm")
|
|
}
|
|
m.Push("diff", list[space]["diff"]).Push(mdb.STATUS, status).PushButton(button...)
|
|
}
|
|
fields := []string{}
|
|
for _, k := range m.Appendv(ice.MSG_APPEND) {
|
|
if len(kit.TrimArg(m.Appendv(k)...)) > 0 {
|
|
fields = append(fields, k)
|
|
}
|
|
}
|
|
m.Cut(fields...).Sort(web.SPACE, ice.STR_R)
|
|
}},
|
|
})
|
|
|
|
}
|