diff --git a/conf.go b/conf.go index cdc9b122..1d120630 100644 --- a/conf.go +++ b/conf.go @@ -1,6 +1,7 @@ package ice const ( + TB = "\t" SP = " " PT = "." NL = "\n" diff --git a/core/code/autogen.go b/core/code/autogen.go index a35b71c3..488c7a11 100644 --- a/core/code/autogen.go +++ b/core/code/autogen.go @@ -178,6 +178,7 @@ func init() { BINPACK: {Name: "binpack", Help: "打包:生成 src/binpack.go", Hand: func(m *ice.Message, arg ...string) { _autogen_version(m) m.Cmd(BINPACK, mdb.CREATE) + m.Cmd(cli.SYSTEM, "sh", "-c", `cat src/binpack.go|sed 's/package main/package ice/g' > usr/release/binpack.go`) }}, ssh.SCRIPT: {Name: "script", Help: "脚本:生成 etc/miss.sh", Hand: func(m *ice.Message, arg ...string) { _autogen_miss(m) diff --git a/core/code/publish.go b/core/code/publish.go index f646ac48..c7ebdc9d 100644 --- a/core/code/publish.go +++ b/core/code/publish.go @@ -119,7 +119,7 @@ func init() { "package": {Name: "package", Help: "依赖", Hand: func(m *ice.Message, arg ...string) { web.PushStream(m) p := kit.Path(ice.USR_PUBLISH) - m.Option(cli.CMD_DIR, kit.Path(os.Getenv("HOME"))) + m.Option(cli.CMD_DIR, kit.Path(os.Getenv(cli.HOME))) // m.Cmdy(cli.SYSTEM, "tar", "-zcvf", "go.tar.gz", "go/pkg") // m.Cmdy(cli.SYSTEM, "mv", "go.tar.gz", p) m.Cmdy(cli.SYSTEM, "tar", "-zcvf", "vim.tar.gz", ".vim/plugged") diff --git a/core/code/vimer.go b/core/code/vimer.go index 96b781e7..9f1367e8 100644 --- a/core/code/vimer.go +++ b/core/code/vimer.go @@ -49,6 +49,10 @@ func init() { } m.ProcessInner() }}, + BINPACK: {Name: "binpack", Help: "打包", Hand: func(m *ice.Message, arg ...string) { + m.Cmdy(AUTOGEN, BINPACK) + m.ProcessInner() + }}, mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) { m.Cmdy(AUTOGEN, mdb.INPUTS, arg) }}, diff --git a/go.sum b/go.sum index 9a75d036..955a5ddd 100644 --- a/go.sum +++ b/go.sum @@ -1,6 +1,4 @@ -github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e h1:MRM5ITcdelLK2j1vwZ3Je0FKVCfqOLp5zO6trqMLYs0= github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e/go.mod h1:XV66xRDqSt+GTGFMVlhk3ULuV0y9ZmzeVGR4mloJI3M= shylinux.com/x/toolkits v0.3.6 h1:vScxphySLIULkRps0i22yMW7b+sd5MbCBaZRfUmzTu0= shylinux.com/x/toolkits v0.3.6/go.mod h1:8LbYHe7oxBIqb6s4MSOD+4d28QvPdvkyCVtwB/JW7AA= diff --git a/misc/git/status.go b/misc/git/status.go index 372ceeb6..d0181389 100644 --- a/misc/git/status.go +++ b/misc/git/status.go @@ -8,6 +8,7 @@ import ( "shylinux.com/x/icebergs/base/cli" "shylinux.com/x/icebergs/base/ctx" "shylinux.com/x/icebergs/base/mdb" + "shylinux.com/x/icebergs/base/nfs" kit "shylinux.com/x/toolkits" ) @@ -69,7 +70,7 @@ func _status_list(m *ice.Message) (files, adds, dels int, last time.Time) { list := []string{} switch vs[0] { case "##": - m.Push(TAGS, tags) + m.Push(TAGS, strings.TrimSpace(tags)) if tags == ice.ErrWarn { list = append(list, TAG) } @@ -129,6 +130,57 @@ func init() { defer m.Toast(ice.SUCCESS, MAKE, "3s") m.Cmdy(cli.SYSTEM, MAKE) }}, + TAGS: {Name: "tags", Help: "标签", Hand: func(m *ice.Message, arg ...string) { + m.ProcessHold() + vs := map[string]string{} + m.Cmd(STATUS).Table(func(index int, value map[string]string, head []string) { + if value["type"] == "##" { + if value["name"] == "release" { + value["name"] = "ice" + } + vs[value["name"]] = strings.Split(value["tags"], "-")[0] + } + }) + + m.GoToast(TAGS, func(toast func(string, int, int)) { + count, total := 0, len(vs) + toast(cli.BEGIN, count, total) + + for k := range vs { + count++ + toast(k, count, total) + + change := false + m.Option(nfs.DIR_ROOT, _repos_path(k)) + mod := m.Cmdx(nfs.CAT, ice.GO_MOD, func(text string, line int) string { + ls := kit.Split(text) + if len(ls) < 2 || ls[1] == "=>" { + return text + } + if v, ok := vs[kit.Slice(strings.Split(ls[0], "/"), -1)[0]]; ok { + text = ice.TB + ls[0] + ice.SP + v + change = true + } + return text + }) + + if change { + m.Cmd(nfs.SAVE, ice.GO_SUM, "") + m.Cmd(nfs.SAVE, ice.GO_MOD, mod) + m.Option(cli.CMD_DIR, _repos_path(k)) + if k == ice.CONTEXTS { + continue + } + if k == ice.ICEBERGS { + m.Cmd(cli.SYSTEM, "go", "build") + continue + } + m.Cmd(cli.SYSTEM, cli.MAKE) + } + } + toast(ice.SUCCESS, count, total) + }) + }}, PUSH: {Name: "push", Help: "上传", Hand: func(m *ice.Message, arg ...string) { if m.Option(kit.MDB_NAME) == "" { _status_each(m, PUSH, cli.SYSTEM, GIT, PUSH) @@ -187,7 +239,7 @@ func init() { }}, }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { if len(arg) == 0 { - m.Action(PULL, MAKE, PUSH) + m.Action(PULL, MAKE, PUSH, TAGS) files, adds, dels, last := _status_list(m) m.Status("files", files, "adds", adds, "dels", dels, "last", last.Format(ice.MOD_TIME))