1
0
mirror of https://shylinux.com/x/icebergs synced 2025-04-26 01:24:05 +08:00
This commit is contained in:
harveyshao 2022-10-15 01:50:02 +08:00
parent 218b48f3c5
commit 5669803c4f
6 changed files with 40 additions and 48 deletions

View File

@ -22,7 +22,7 @@ var Index = &ice.Context{Name: CODE, Help: "编程中心", Commands: ice.Command
func init() {
web.Index.Register(Index, &web.Frame{},
INSTALL, UPGRADE, WEBPACK, BINPACK, AUTOGEN, COMPILE, PUBLISH,
FAVOR, XTERM, INNER, VIMER, PPROF, BENCH,
VIMER, INNER, FAVOR, XTERM, PPROF, BENCH,
C, SH, SHY, GO, JS,
)
}

View File

@ -21,7 +21,7 @@ func init() {
INNER: {Name: "inner", Help: "源码", Hand: func(m *ice.Message, arg ...string) {
ctx.Process(m, m.ActionKey(), m.OptionSplit(nfs.PATH, nfs.FILE, nfs.LINE), arg...)
}},
"click": {Name: "click", Help: "源码", Hand: func(m *ice.Message, arg ...string) {
"click": {Name: "click", Help: "应用", Hand: func(m *ice.Message, arg ...string) {
m.Cmd(cli.DAEMON, m.Option(mdb.TYPE))
}},
}, mdb.ZoneAction(mdb.SHORT, mdb.ZONE, mdb.FIELD, "time,id,type,name,text,path,file,line")), Hand: func(m *ice.Message, arg ...string) {
@ -29,8 +29,7 @@ func init() {
if mdb.ZoneSelectPage(m, arg...); len(arg) > 0 && arg[0] != "" {
m.Tables(func(value ice.Maps) {
m.PushButton(kit.Select(INNER, XTERM, value[mdb.TEXT] == "" || value[nfs.FILE] == ""))
})
m.Option(ctx.STYLE, arg[0])
}).Option(ctx.STYLE, arg[0])
}
}},
})

View File

@ -1,5 +1,5 @@
package code
import (
"bufio"
"path"
@ -37,6 +37,9 @@ func _inner_exec(m *ice.Message, ext, file, dir string) {
}
func _inner_tags(m *ice.Message, dir string, value string) {
for _, l := range strings.Split(m.Cmdx(cli.SYSTEM, nfs.GREP, "^"+value+"\\>", nfs.TAGS, kit.Dict(cli.CMD_DIR, dir)), ice.NL) {
if strings.HasPrefix(l, "!_") {
continue
}
ls := strings.SplitN(l, ice.TB, 3)
if len(ls) < 3 {
continue
@ -44,25 +47,28 @@ func _inner_tags(m *ice.Message, dir string, value string) {
file, ls := ls[1], strings.SplitN(ls[2], ";\"", 2)
text := strings.TrimSuffix(strings.TrimPrefix(ls[0], "/^"), "$/")
line := kit.Int(text)
f, e := nfs.OpenFile(m, kit.Path(dir, file))
m.Assert(e)
defer f.Close()
bio := bufio.NewScanner(f)
for i := 1; bio.Scan(); i++ {
if i == line || bio.Text() == text {
if dir == "" {
m.PushRecord(kit.Dict(nfs.PATH, path.Dir(file)+ice.PS, nfs.FILE, path.Base(file), nfs.LINE, kit.Format(i), mdb.TEXT, bio.Text()))
} else {
m.PushRecord(kit.Dict(nfs.PATH, dir, nfs.FILE, strings.TrimPrefix(file, nfs.PWD), nfs.LINE, kit.Format(i), mdb.TEXT, bio.Text()))
}
break
}
if text, line := _inner_line(m, kit.Path(dir, file), text); dir == "" {
m.PushRecord(kit.Dict(nfs.PATH, path.Dir(file)+ice.PS, nfs.FILE, path.Base(file), nfs.LINE, kit.Format(line), mdb.TEXT, text))
} else {
m.PushRecord(kit.Dict(nfs.PATH, dir, nfs.FILE, strings.TrimPrefix(file, nfs.PWD), nfs.LINE, kit.Format(line), mdb.TEXT, text))
}
}
}
func _inner_line(m *ice.Message, file, text string) (string, int) {
line := kit.Int(text)
f, e := nfs.OpenFile(m, file)
m.Assert(e)
defer f.Close()
bio := bufio.NewScanner(f)
for i := 1; bio.Scan(); i++ {
if i == line || bio.Text() == text {
return bio.Text(), i
}
}
return "", 0
}
const (
COMMENT = "comment"
@ -127,7 +133,7 @@ func init() {
if len(arg) == 2 && arg[0] == mdb.SEARCH && arg[1] == ctx.COMMAND {
return
}
m.Cmd(FAVOR, mdb.INSERT, mdb.ZONE, "_vimer", nfs.FILE, arg[0])
m.Cmd(FAVOR, mdb.INSERT, mdb.ZONE, "_recent_cmd", nfs.FILE, arg[0])
}},
}, ctx.CmdAction()), Hand: func(m *ice.Message, arg ...string) {
if arg[0] = strings.Split(arg[0], ice.FS)[0]; !strings.HasSuffix(arg[0], ice.PS) && len(arg) == 1 {
@ -143,11 +149,11 @@ func init() {
arg[1] = strings.Split(arg[1], ice.FS)[0]
_inner_list(m, kit.Ext(arg[1]), arg[1], arg[0])
defer m.Cmd(FAVOR, mdb.INSERT, mdb.ZONE, "_recent_file", nfs.PATH, arg[0], nfs.FILE, arg[1])
m.Option("tabs", m.Config("show.tabs"))
m.Option("plug", m.Config("show.plug"))
m.Option("exts", m.Config("show.exts"))
ctx.DisplayLocal(m, "")
m.Cmd(FAVOR, mdb.INSERT, mdb.ZONE, "_recent", nfs.PATH, arg[0], nfs.FILE, arg[1])
}},
}})
}

View File

@ -12,7 +12,6 @@ import (
"shylinux.com/x/icebergs/base/nfs"
"shylinux.com/x/icebergs/base/tcp"
"shylinux.com/x/icebergs/base/web"
"shylinux.com/x/icebergs/core/chat"
kit "shylinux.com/x/toolkits"
)
@ -49,6 +48,8 @@ func init() {
switch m.Option(ctx.ACTION) {
case AUTOGEN, web.DREAM, XTERM:
m.Cmdy(m.Option(ctx.ACTION), mdb.INPUTS, arg)
case nfs.SCRIPT, web.WEBSITE:
m.Cmdy(COMPLETE, mdb.FOREACH, kit.Select("", arg, 1), m.Option(ctx.ACTION))
case "extension":
nfs.DirDeepAll(m, "usr/volcanos/plugin/local/code/", "inner/", nil, nfs.PATH)
default:
@ -56,24 +57,19 @@ func init() {
case ctx.INDEX:
m.Cmdy(ctx.COMMAND, mdb.SEARCH, ctx.COMMAND, ice.OptionFields(ctx.INDEX))
default:
m.Cmdy(COMPLETE, mdb.FOREACH, kit.Select("", arg, 1), m.Option(ctx.ACTION))
m.Cmd(mdb.RENDER, kit.Ext(m.Option(nfs.FILE)), m.Option(nfs.FILE), m.Option(nfs.PATH), ice.Option{nfs.DIR_ROOT, ""}).Tables(func(value ice.Maps) {
m.Cmd(mdb.RENDER, kit.Ext(m.Option(nfs.FILE)), m.Option(nfs.FILE), m.Option(nfs.PATH)).Tables(func(value ice.Maps) {
m.Push(nfs.PATH, kit.Format("line:%s:%s:%s", value[nfs.LINE], value["kind"], value[mdb.NAME]))
})
m.Option(nfs.DIR_REG, "")
for _, p := range kit.Split(kit.Select(m.Option(nfs.PATH), m.Option("paths"))) {
nfs.DirDeepAll(m, nfs.PWD, p, nil, nfs.PATH)
}
m.Cmd(ctx.COMMAND, mdb.SEARCH, ctx.COMMAND, ice.OptionFields(ctx.INDEX)).Tables(func(value ice.Maps) {
m.Push(nfs.PATH, "index:"+value[ctx.INDEX])
})
m.Option(nfs.DIR_TYPE, "")
m.Option(nfs.DIR_DEEP, "")
m.Option(nfs.DIR_ROOT, "")
m.Cmd(web.DREAM).Tables(func(value ice.Maps) {
m.Cmd(web.DREAM, ice.Map{nfs.DIR_TYPE: "", nfs.DIR_DEEP: "", nfs.DIR_ROOT: ""}).Tables(func(value ice.Maps) {
m.Push(nfs.PATH, "dream:"+value[mdb.NAME])
})
m.Cmd(FAVOR, "_open").Tables(func(value ice.Maps) {
m.Cmd(FAVOR, "_system_app").Tables(func(value ice.Maps) {
m.Push(nfs.PATH, "_open:"+strings.ToLower(value[mdb.NAME]))
})
}
@ -84,17 +80,14 @@ func init() {
m.Option(nfs.CONTENT, m.Cmdx("", TEMPLATE))
}
m.Cmdy(nfs.SAVE, path.Join(m.Option(nfs.PATH), m.Option(nfs.FILE)))
web.ToastSuccess(m)
}},
nfs.TRASH: {Name: "trash path", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
m.Cmd(nfs.TRASH, arg[0])
}},
nfs.SCRIPT: {Name: "script file=hi/hi.js", Help: "脚本", Hand: func(m *ice.Message, arg ...string) {
m.Option(nfs.PATH, "src/")
m.Cmdy(nfs.DEFS, path.Join(m.Option(nfs.PATH), m.Option(nfs.FILE)), m.Cmdx("", TEMPLATE))
}},
web.WEBSITE: {Name: "website file=hi.zml", Help: "网页", Hand: func(m *ice.Message, arg ...string) {
m.Option(nfs.PATH, "src/website/")
m.Cmdy(nfs.DEFS, path.Join(m.Option(nfs.PATH), m.Option(nfs.FILE)), m.Cmdx("", TEMPLATE))
}},
web.DREAM: {Name: "dream name=hi repos", Help: "空间", Hand: func(m *ice.Message, arg ...string) {
@ -103,9 +96,7 @@ func init() {
XTERM: {Name: "xterm type=sh name text", Help: "终端", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(XTERM, mdb.CREATE, arg)
}},
FAVOR: {Name: "favor", Help: "收藏", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(FAVOR, arg)
}},
FAVOR: {Name: "favor", Help: "收藏"},
"keyboard": {Name: "keyboard", Help: "远程控制", Hand: func(m *ice.Message, arg ...string) {
hash := m.Cmdx("web.chat.keyboard", mdb.CREATE, web.SPACE, m.Option(ice.MSG_DAEMON), ctx.INDEX, m.Option(ctx.INDEX), "input", "")
@ -113,11 +104,8 @@ func init() {
m.PushQRCode(mdb.TEXT, link)
m.Push(mdb.NAME, link)
}},
"_open": {Name: "_open", Help: "索引", Hand: func(m *ice.Message, arg ...string) {
m.Cmd(cli.DAEMON, "open", "-a", kit.Split(arg[0], ".", ".")[0])
}},
"listTags": {Name: "listTags", Help: "索引", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy("web.code.vim.tags", "listTags", arg)
"_open": {Name: "_open", Help: "打开", Hand: func(m *ice.Message, arg ...string) {
m.Cmd(cli.DAEMON, cli.OPEN, "-a", kit.Split(arg[0], ice.PT, ice.PT)[0])
}},
cli.MAKE: {Name: "make", Help: "构建", Hand: func(m *ice.Message, arg ...string) {
_vimer_make(m, m.Option(nfs.PATH), m.Cmd(cli.SYSTEM, cli.MAKE, arg))
@ -145,13 +133,12 @@ func init() {
m.ProcessInner()
}},
AUTOGEN: {Name: "create name=h2 help=示例 type=Zone,Hash,Data,Code main=main.go zone key", Help: "模块", Hand: func(m *ice.Message, arg ...string) {
m.Option(nfs.PATH, "src/")
m.Cmdy(AUTOGEN, mdb.CREATE, arg)
}},
COMPILE: {Name: "compile", Help: "编译", Hand: func(m *ice.Message, arg ...string) {
cmds := []string{COMPILE, ice.SRC_MAIN_GO, ice.BIN_ICE_BIN}
if strings.HasSuffix(os.Args[0], "contexts.app/Contents/MacOS/contexts") {
m.Option(cli.CMD_ENV, kit.Path("usr/local/go/bin"))
m.Option(cli.CMD_ENV, nfs.PATH, kit.Path("usr/local/go/bin"))
cmds = []string{cli.SYSTEM, "make", "app"}
}
if msg := m.Cmd(cmds); cli.IsSuccess(msg) {
@ -165,7 +152,7 @@ func init() {
}},
}, Hand: func(m *ice.Message, arg ...string) {
if m.Cmdy(INNER, arg); arg[0] != ctx.ACTION {
m.Action(nfs.SAVE, COMPILE, AUTOGEN, nfs.SCRIPT, chat.WEBSITE, web.DREAM, XTERM)
m.Action(nfs.SAVE, COMPILE, AUTOGEN, nfs.SCRIPT, web.WEBSITE, web.DREAM, XTERM)
m.Option("tabs", m.Config("show.tabs"))
m.Option("plug", m.Config("show.plug"))
m.Option("exts", m.Config("show.exts"))

View File

@ -77,9 +77,8 @@ func init() {
ctx.ProcessField(m, "", arg, arg...)
}},
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
switch mdb.HashInputs(m, arg).Cmdy(FAVOR, "_xterm", ice.OptionFields(arg[0])).Cut(arg[0]); arg[0] {
switch mdb.HashInputs(m, arg).Cmdy(FAVOR, "_system_term", ice.OptionFields(arg[0])).Cut(arg[0]); arg[0] {
case mdb.TYPE:
m.Debug("what %v ", m.FormatsMeta())
if m.Option(nfs.LINE) != "" && m.Option(nfs.FILE) != "" {
m.Push(arg[0], "vim +"+m.Option(nfs.LINE)+" "+m.Option(nfs.PATH)+m.Option(nfs.FILE))
}

View File

@ -322,6 +322,7 @@ func init() {
return
}
if len(arg) == 0 {
web.ToastProcess(m)
m.Action(PULL, MAKE, PUSH, TAGS, PIE, code.PUBLISH)
files, adds, dels, last := _status_list(m)
m.Status("cost", m.FormatCost(), "repos", m.Length(), "files", files, "adds", adds, "dels", dels, "last", last.Format(ice.MOD_TIME))