forked from x/icebergs
opt some
This commit is contained in:
parent
be9e03a440
commit
276c97a050
@ -3,6 +3,7 @@ package code
|
||||
import (
|
||||
ice "shylinux.com/x/icebergs"
|
||||
"shylinux.com/x/icebergs/base/web"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
)
|
||||
|
||||
const CODE = "code"
|
||||
@ -16,3 +17,5 @@ func init() {
|
||||
C, SH, SHY, GO, JS,
|
||||
)
|
||||
}
|
||||
|
||||
func Prefix(arg ...string) string { return kit.Keys(web.WEB, CODE, arg) }
|
||||
|
@ -12,6 +12,7 @@ import (
|
||||
"shylinux.com/x/icebergs/base/mdb"
|
||||
"shylinux.com/x/icebergs/base/nfs"
|
||||
"shylinux.com/x/icebergs/base/ssh"
|
||||
"shylinux.com/x/icebergs/base/web"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
)
|
||||
|
||||
@ -131,27 +132,12 @@ func init() {
|
||||
_inner_exec(m, arg[0], arg[1], arg[2])
|
||||
}},
|
||||
mdb.SEARCH: {Name: "search", Help: "搜索", Hand: func(m *ice.Message, arg ...string) {
|
||||
_inner_tags(m, m.Option(nfs.PATH), arg[1])
|
||||
if m.Length() == 0 {
|
||||
if _inner_tags(m, m.Option(nfs.PATH), arg[1]); m.Length() == 0 {
|
||||
_inner_tags(m, "", arg[1])
|
||||
}
|
||||
return
|
||||
m.Option(nfs.DIR_ROOT, arg[2])
|
||||
m.Option(cli.CMD_DIR, kit.Path(arg[2]))
|
||||
m.Cmdy(mdb.SEARCH, arg[0], arg[1], arg[2])
|
||||
m.Cmd(FAVOR, arg[1], ice.OptionFields(""), func(value ice.Maps) {
|
||||
if p := path.Join(value[nfs.PATH], value[nfs.FILE]); strings.HasPrefix(p, m.Option(nfs.PATH)) {
|
||||
m.Push(nfs.FILE, strings.TrimPrefix(p, m.Option(nfs.PATH)))
|
||||
m.Push(nfs.LINE, value[nfs.LINE])
|
||||
m.Push(mdb.TEXT, value[mdb.TEXT])
|
||||
}
|
||||
})
|
||||
if m.StatusTimeCount(mdb.INDEX, 0); m.Length() == 0 {
|
||||
m.Cmdy(INNER, nfs.GREP, arg[1])
|
||||
}
|
||||
}},
|
||||
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||
if m.Option(ctx.ACTION) == "website" {
|
||||
if m.Option(ctx.ACTION) == web.WEBSITE {
|
||||
switch arg[0] {
|
||||
case nfs.FILE:
|
||||
m.Cmdy(nfs.DIR, nfs.PWD, nfs.DIR_CLI_FIELDS, kit.Dict(nfs.DIR_ROOT, "src/website/")).ProcessAgain()
|
||||
@ -163,16 +149,13 @@ func init() {
|
||||
case cli.MAIN:
|
||||
m.Cmdy(nfs.DIR, ice.SRC, nfs.DIR_CLI_FIELDS, kit.Dict(nfs.DIR_REG, `.*\.go`)).ProcessAgain()
|
||||
case mdb.ZONE:
|
||||
m.Option(nfs.DIR_ROOT, ice.SRC)
|
||||
m.Option(nfs.DIR_TYPE, nfs.DIR)
|
||||
m.Cmdy(nfs.DIR, nfs.PWD, mdb.NAME).RenameAppend(mdb.NAME, mdb.ZONE)
|
||||
m.Cmdy(nfs.DIR, nfs.PWD, mdb.NAME, kit.Dict(nfs.DIR_ROOT, ice.SRC, nfs.DIR_TYPE, nfs.DIR)).RenameAppend(mdb.NAME, mdb.ZONE)
|
||||
case nfs.PATH:
|
||||
m.Cmdy(nfs.DIR, arg[1:], nfs.DIR_CLI_FIELDS).ProcessAgain()
|
||||
case nfs.FILE:
|
||||
p := kit.Select(nfs.PWD, arg, 1)
|
||||
m.Option(nfs.DIR_ROOT, m.Option(nfs.PATH))
|
||||
m.Cmdy(nfs.DIR, kit.Select(path.Dir(p), p, strings.HasSuffix(p, ice.FS))+ice.PS, nfs.DIR_CLI_FIELDS)
|
||||
m.ProcessAgain()
|
||||
m.Cmdy(nfs.DIR, kit.Select(path.Dir(p), p, strings.HasSuffix(p, ice.FS))+ice.PS, nfs.DIR_CLI_FIELDS).ProcessAgain()
|
||||
case "url":
|
||||
m.Option(nfs.DIR_ROOT, "usr/volcanos/plugin/local/code/")
|
||||
m.Cmdy(nfs.DIR, nfs.PWD, nfs.DIR_CLI_FIELDS, kit.Dict(nfs.DIR_DEEP, ice.TRUE)).ProcessAgain()
|
||||
@ -182,8 +165,7 @@ func init() {
|
||||
}},
|
||||
|
||||
nfs.GREP: {Name: "grep", Help: "搜索", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(nfs.GREP, m.Option(nfs.PATH), arg[0])
|
||||
m.StatusTimeCount(mdb.INDEX, 0)
|
||||
m.Cmdy(nfs.GREP, m.Option(nfs.PATH), arg[0]).StatusTimeCount(mdb.INDEX, 0)
|
||||
}},
|
||||
nfs.TAGS: {Name: "tags", Help: "索引", Hand: func(m *ice.Message, arg ...string) {
|
||||
if _inner_tags(m, m.Option(nfs.PATH), arg[0]); m.Length() == 0 {
|
||||
@ -215,9 +197,9 @@ func init() {
|
||||
m.Option("keys", list)
|
||||
m.Option("module", ice.Info.Make.Module)
|
||||
|
||||
m.Option("tabs", m.Config("show.tabs"))
|
||||
m.Option("plug", m.Config("show.plug"))
|
||||
m.Option("exts", m.Config("show.exts"))
|
||||
m.Option("tabs", m.Config("show.tabs"))
|
||||
|
||||
arg[1] = strings.Split(arg[1], ice.FS)[0]
|
||||
if _inner_list(m, kit.Ext(arg[1]), arg[1], arg[0]); m.IsErrNotFound() {
|
||||
@ -245,7 +227,6 @@ func init() {
|
||||
)},
|
||||
}})
|
||||
}
|
||||
|
||||
func PlugAction() ice.Actions {
|
||||
return ice.Actions{
|
||||
mdb.PLUGIN: {Hand: func(m *ice.Message, arg ...string) { m.Echo(m.Config(PLUG)) }},
|
||||
|
@ -91,6 +91,8 @@ func _vimer_inputs(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(web.DREAM, mdb.INPUTS, arg)
|
||||
case AUTOGEN:
|
||||
m.Cmdy(AUTOGEN, mdb.INPUTS, arg)
|
||||
case XTERM:
|
||||
m.Cmdy(XTERM, mdb.INPUTS, arg)
|
||||
default:
|
||||
switch arg[0] {
|
||||
case ctx.INDEX:
|
||||
@ -105,7 +107,6 @@ func _vimer_inputs(m *ice.Message, arg ...string) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func _vimer_complete(m *ice.Message, arg ...string) {
|
||||
switch left := kit.Select("", kit.Slice(kit.Split(m.Option(mdb.TEXT), "\t \n`"), -1), 0); kit.Ext(m.Option(nfs.FILE)) {
|
||||
case nfs.ZML:
|
||||
@ -156,11 +157,27 @@ func _vimer_go_complete(m *ice.Message, name string, arg ...string) *ice.Message
|
||||
return m
|
||||
}
|
||||
|
||||
const (
|
||||
VIMER_TEMPLATE = "vimer.template"
|
||||
VIMER_COMPLETE = "vimer.complete"
|
||||
|
||||
COMPLETE = "complete"
|
||||
// TEMPLATE = "template"
|
||||
)
|
||||
const VIMER = "vimer"
|
||||
|
||||
func init() {
|
||||
Index.MergeCommands(ice.Commands{
|
||||
VIMER: {Name: "vimer path=src/ file=main.go line=1 list", Help: "编辑器", Meta: kit.Dict(ice.DisplayLocal("", INNER)), Actions: ice.Actions{
|
||||
mdb.SEARCH: {Name: "search type name text", Help: "搜索", Hand: func(m *ice.Message, arg ...string) {
|
||||
if arg[0] == mdb.FOREACH && arg[1] == "" {
|
||||
m.PushSearch(mdb.TYPE, "go", mdb.NAME, "src/main.go", mdb.TEXT, chat.MergeCmd(m, ""))
|
||||
}
|
||||
}},
|
||||
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||
_vimer_inputs(m, arg...)
|
||||
}},
|
||||
|
||||
nfs.SAVE: {Name: "save type file path", Help: "保存", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Option(nfs.CONTENT, kit.Select(_vimer_defs(m, kit.Ext(m.Option(nfs.FILE))), m.Option(nfs.CONTENT)))
|
||||
m.Cmdy(nfs.SAVE, path.Join(m.Option(nfs.PATH), m.Option(nfs.FILE)))
|
||||
@ -168,9 +185,7 @@ func init() {
|
||||
nfs.TRASH: {Name: "trash path", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(nfs.TRASH, arg[0])
|
||||
}},
|
||||
AUTOGEN: {Name: "create name=hi help=示例 type=Zone,Hash,Data,Code main=main.go zone key", Help: "模块", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(AUTOGEN, mdb.CREATE, arg)
|
||||
}},
|
||||
|
||||
COMPILE: {Name: "compile", Help: "编译", Hand: func(m *ice.Message, arg ...string) {
|
||||
if msg := m.Cmd(COMPILE, ice.SRC_MAIN_GO, ice.BIN_ICE_BIN); cli.IsSuccess(msg) {
|
||||
m.Cmd(UPGRADE, cli.RESTART)
|
||||
@ -178,6 +193,9 @@ func init() {
|
||||
_inner_make(m, msg)
|
||||
}
|
||||
}},
|
||||
AUTOGEN: {Name: "create name=hi help=示例 type=Zone,Hash,Data,Code main=main.go zone key", Help: "模块", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(AUTOGEN, mdb.CREATE, arg)
|
||||
}},
|
||||
nfs.SCRIPT: {Name: "script file=hi/hi.js", Help: "脚本", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Option(mdb.TEXT, strings.TrimSpace(kit.Select(_vimer_defs(m, kit.Ext(m.Option(nfs.FILE))), m.Option(mdb.TEXT))))
|
||||
m.Cmdy(TEMPLATE, nfs.DEFS)
|
||||
@ -190,28 +208,23 @@ func init() {
|
||||
web.DREAM: {Name: "dream name=hi repos", Help: "空间", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(web.DREAM, cli.START, arg)
|
||||
}},
|
||||
XTERM: {Name: "xterm type=sh name", Help: "终端", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(XTERM, mdb.CREATE, arg)
|
||||
}},
|
||||
PUBLISH: {Name: "publish", Help: "发布", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(PUBLISH, ice.CONTEXTS)
|
||||
}},
|
||||
|
||||
mdb.SEARCH: {Name: "search type name text", Help: "搜索", Hand: func(m *ice.Message, arg ...string) {
|
||||
if arg[0] == mdb.FOREACH && arg[1] == "" {
|
||||
m.PushSearch(mdb.TYPE, "go", mdb.NAME, "src/main.go", mdb.TEXT, chat.MergeCmd(m, ""))
|
||||
}
|
||||
TEMPLATE: {Name: "template", Help: "模板", Hand: func(m *ice.Message, arg ...string) {
|
||||
// _vimer_template(m, arg...)
|
||||
}},
|
||||
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||
_vimer_inputs(m, arg...)
|
||||
}},
|
||||
"complete": {Name: "complete", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||
COMPLETE: {Name: "complete", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||
_vimer_complete(m, arg...)
|
||||
}},
|
||||
"listTags": {Name: "listTags", Help: "索引", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy("web.code.vim.tags", "listTags", arg)
|
||||
}},
|
||||
|
||||
"unpack": {Name: "unpack", Help: "导出文件", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(BINPACK, mdb.EXPORT)
|
||||
}},
|
||||
DEVPACK: {Name: "devpack", Help: "开发模式", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmd(nfs.LINK, ice.GO_SUM, path.Join(ice.SRC_DEBUG, ice.GO_SUM))
|
||||
m.Cmd(nfs.LINK, ice.GO_MOD, path.Join(ice.SRC_DEBUG, ice.GO_MOD))
|
||||
@ -228,16 +241,17 @@ func init() {
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(INNER, arg)
|
||||
m.Option("tabs", m.Config("show.tabs"))
|
||||
m.Option("plug", m.Config("show.plug"))
|
||||
m.Option("exts", m.Config("show.exts"))
|
||||
m.Option("tabs", m.Config("show.tabs"))
|
||||
|
||||
if arg[0] != ctx.ACTION {
|
||||
ctx.DisplayLocal(m, "")
|
||||
m.Action(nfs.SAVE, COMPILE, AUTOGEN, nfs.SCRIPT, chat.WEBSITE, web.DREAM)
|
||||
m.Action(nfs.SAVE, COMPILE, AUTOGEN, nfs.SCRIPT, chat.WEBSITE, web.DREAM, XTERM)
|
||||
}
|
||||
}},
|
||||
})
|
||||
}
|
||||
func ProcessVimer(m *ice.Message, path, file, line string, arg ...string) {
|
||||
ctx.ProcessField(m, "web.code.vimer", kit.Simple(path, file, line), arg...)
|
||||
ctx.ProcessField(m, Prefix(VIMER), kit.Simple(path, file, line), arg...)
|
||||
}
|
||||
|
@ -30,7 +30,6 @@ func _xterm_get(m *ice.Message, h string) _xterm {
|
||||
return mdb.HashTarget(m, h, func() ice.Any {
|
||||
ls := kit.Split(kit.Select(nfs.SH, t))
|
||||
cmd := exec.Command(cli.SystemFind(m, ls[0]), ls[1:]...)
|
||||
cmd.Env = append(os.Environ(), "TERM=xterm")
|
||||
|
||||
tty, err := pty.Start(cmd)
|
||||
m.Assert(err)
|
||||
@ -66,7 +65,8 @@ func init() {
|
||||
}
|
||||
}},
|
||||
mdb.CREATE: {Name: "create type=sh name", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
|
||||
mdb.HashCreate(m.Spawn(), mdb.NAME, m.Option(mdb.TYPE), m.OptionSimple(mdb.TYPE, mdb.NAME))
|
||||
mdb.HashCreate(m, mdb.NAME, kit.Split(m.Option(mdb.TYPE))[0], m.OptionSimple(mdb.TYPE, mdb.NAME))
|
||||
m.ProcessRefresh3ms()
|
||||
}},
|
||||
"resize": {Name: "resize", Help: "大小", Hand: func(m *ice.Message, arg ...string) {
|
||||
pty.Setsize(_xterm_get(m, m.Option(mdb.HASH)).File, &pty.Winsize{Rows: uint16(kit.Int(m.Option("rows"))), Cols: uint16(kit.Int(m.Option("cols")))})
|
||||
@ -97,7 +97,7 @@ func init() {
|
||||
|
||||
func ProcessXterm(m *ice.Message, args []string, arg ...string) {
|
||||
if len(arg) == 0 || arg[0] != ice.RUN {
|
||||
args = []string{m.Cmdx("web.code.xterm", mdb.CREATE, args)}
|
||||
args = []string{m.Cmdx(Prefix(XTERM), mdb.CREATE, args)}
|
||||
}
|
||||
ctx.ProcessField(m, "web.code.xterm", args, arg...)
|
||||
ctx.ProcessField(m, Prefix(XTERM), args, arg...)
|
||||
}
|
||||
|
@ -104,6 +104,15 @@ func init() {
|
||||
})
|
||||
case "qrcode":
|
||||
m.Echo(`!curl "localhost:9020/code/bash/qrcode?text=%s"`, args[1])
|
||||
default:
|
||||
switch kit.Ext(m.Option(BUF)) {
|
||||
case "js":
|
||||
ls := kit.Split(args[len(args)-1], ".", ".")
|
||||
switch ls[0] {
|
||||
case "chat":
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user