1
0
forked from x/icebergs
This commit is contained in:
IT 老营长 @云轩领航-创始人 2024-04-25 12:38:15 +08:00
parent b98b3052d4
commit 90469e941d
4 changed files with 101 additions and 3 deletions

View File

@ -16,7 +16,7 @@ import (
func init() { func init() {
Index.MergeCommands(ice.Commands{ Index.MergeCommands(ice.Commands{
VERSION: {Name: "version refresh", Help: "版本", Actions: ice.MergeActions(ice.Actions{ VERSION: {Name: "version refresh", Icon: "Stickies.png", Help: "版本", Actions: ice.MergeActions(ice.Actions{
mdb.INPUTS: {Hand: func(m *ice.Message, arg ...string) { mdb.INPUTS: {Hand: func(m *ice.Message, arg ...string) {
ls := kit.Split(kit.Split(strings.TrimPrefix(m.Option(VERSION), "v"), "-")[0], ".") ls := kit.Split(kit.Split(strings.TrimPrefix(m.Option(VERSION), "v"), "-")[0], ".")
if len(ls) > 2 { if len(ls) > 2 {

View File

@ -422,7 +422,7 @@ func init() {
}}, }},
}) })
Index.MergeCommands(ice.Commands{ Index.MergeCommands(ice.Commands{
REPOS: {Name: "repos repos branch:text commit:text file:text auto", Help: "代码库", Role: aaa.VOID, Actions: ice.MergeActions(ice.Actions{ REPOS: {Name: "repos repos branch:text commit:text file:text auto", Help: "代码库", Icon: "Time Machine.png", Role: aaa.VOID, Actions: ice.MergeActions(ice.Actions{
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) {
m.Cmd(CONFIGS, func(value ice.Maps) { m.Cmd(CONFIGS, func(value ice.Maps) {
if strings.HasSuffix(value[mdb.NAME], _INSTEADOF) && strings.HasPrefix(ice.Info.Make.Remote, value[mdb.VALUE]) { if strings.HasSuffix(value[mdb.NAME], _INSTEADOF) && strings.HasPrefix(ice.Info.Make.Remote, value[mdb.VALUE]) {

View File

@ -154,7 +154,7 @@ func init() {
m.WarnNotValid(_service_repos(m, arg...)) m.WarnNotValid(_service_repos(m, arg...))
}}}) }}})
Index.MergeCommands(ice.Commands{ Index.MergeCommands(ice.Commands{
SERVICE: {Name: "service repos branch commit file auto", Help: "代码源", Role: aaa.VOID, Actions: ice.MergeActions(ice.Actions{ SERVICE: {Name: "service repos branch commit file auto", Help: "代码源", Icon: "Siri.png", Role: aaa.VOID, Actions: ice.MergeActions(ice.Actions{
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) {
m.Cmd(nfs.DIR, ice.USR_LOCAL_REPOS, func(value ice.Maps) { _repos_insert(m, value[nfs.PATH]) }) m.Cmd(nfs.DIR, ice.USR_LOCAL_REPOS, func(value ice.Maps) { _repos_insert(m, value[nfs.PATH]) })
}}, }},

98
misc/git/tags.go Normal file
View File

@ -0,0 +1,98 @@
package git
import (
"strings"
ice "shylinux.com/x/icebergs"
"shylinux.com/x/icebergs/base/cli"
"shylinux.com/x/icebergs/base/ctx"
"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() {
const TAGS = "tags"
Index.MergeCommands(ice.Commands{
TAGS: {Name: "tags path name auto", Meta: kit.Dict(
ice.CTX_ICONS, kit.Dict(mdb.CREATE, "bi bi-star"),
), Actions: ice.MergeActions(ice.Actions{
"show": {Hand: func(m *ice.Message, arg ...string) {
ctx.ProcessFloat(m, web.VIMER, []string{m.Option(nfs.PATH), m.Option(nfs.FILE), m.Option(nfs.LINE)}, arg...)
}},
}, mdb.HashAction(mdb.SHORT, "path,file,line", mdb.FIELD, "time,hash,type,name,text,path,file,line")), Hand: func(m *ice.Message, arg ...string) {
if len(arg) == 0 {
mdb.HashSelect(m)
return
}
defer m.Action(html.FILTER)
list := map[string]bool{}
mdb.HashSelect(m.Spawn()).Table(func(value ice.Maps) { list[kit.Fields(value[nfs.PATH], value[nfs.FILE], value[nfs.LINE])] = true })
kit.For(kit.SplitLine(m.Cmdx(cli.SYSTEM, "gotags", "-f", "-", "-R", kit.Path(arg[0]))), func(text string) {
if strings.HasPrefix(text, "!_") {
return
}
ls := kit.Split(text)
t := kit.Split(ls[3])[0]
info := map[string]string{}
kit.For(kit.Split(ls[3][1:], "\t", "\t"), func(text string) {
if ls := strings.SplitN(text, ":", 2); len(ls) > 1 {
info[ls[0]] = ls[1]
}
})
if strings.Contains(ls[1], "/internal/") || strings.HasSuffix(ls[1], "_test.go") {
return
}
if len(arg) == 1 && info["access"] == "private" {
return
}
if kit.IsIn(t, "p", "i") {
return
}
file := kit.TrimPrefix(ls[1], kit.Path("")+nfs.PS, arg[0])
has := list[kit.Fields(arg[0], file, ls[2])]
if len(arg) == 1 {
if kit.IsIn(t, "e", "w", "m") && !has {
return
}
} else if info["ctype"] != arg[1] && ls[0] != arg[1] {
return
}
m.Push(mdb.STATUS, has)
m.Push(mdb.TYPE, t)
m.Push(mdb.NAME, ls[0])
m.Push(nfs.FILE, file)
m.Push(nfs.LINE, ls[2])
if kit.IsIn(t, "f", "m") {
p := "func "
if t == "m" {
if info["ntype"] == "" {
p += "(" + strings.ToLower(info["ctype"]) + " " + info["ctype"] + ") "
} else {
p = ""
}
}
if info[mdb.TYPE] == "" {
m.Push(mdb.TEXT, kit.Format("%s%s%s", p, ls[0], info["signature"]))
} else if strings.Contains(info[mdb.TYPE], ",") {
m.Push(mdb.TEXT, kit.Format("%s%s%s (%s)", p, ls[0], info["signature"], info[mdb.TYPE]))
} else {
m.Push(mdb.TEXT, kit.Format("%s%s%s %s", p, ls[0], info["signature"], info[mdb.TYPE]))
}
} else {
m.Push(mdb.TEXT, info["signature"])
}
m.Push("what", ls[3])
if has {
m.PushButton("show")
} else {
m.PushButton("show", mdb.CREATE)
}
})
m.StatusTimeCountStats(mdb.TYPE)
m.Sort("status,type,name", []string{"true", "false"}, []string{"t", "n", "f", "v", "c"}, ice.STR)
}},
})
}