1
0
forked from x/icebergs

opt vimer.go

This commit is contained in:
IT 老营长 @云轩领航-创始人 2023-03-14 13:40:53 +08:00
parent 62e4fa032d
commit 6283d157ce
5 changed files with 41 additions and 87 deletions

View File

@ -145,6 +145,7 @@ const (
TYPE_BOTH = "both"
SRC = "src/"
USR = "usr/"
)
const (
DIR_ROOT = "dir_root"

View File

@ -56,7 +56,7 @@ func _autogen_version(m *ice.Message) string {
m.Cmdy(cli.SYSTEM, GIT, ice.INIT)
m.Cmd(cli.SYSTEM, GIT, nfs.REMOTE, "add", nfs.ORIGIN, "https://"+mod)
m.Cmd(cli.SYSTEM, GIT, "add", ice.GO_MOD, ice.SRC, ice.ETC_MISS_SH)
m.Cmd("web.code.git.repos", mdb.CREATE, nfs.ORIGIN, "https://"+mod, mdb.NAME, path.Base(mod), nfs.PATH, nfs.PWD)
m.Cmd(REPOS, mdb.CREATE, nfs.ORIGIN, "https://"+mod, mdb.NAME, path.Base(mod), nfs.PATH, nfs.PWD)
}
m.Cmd(nfs.DEFS, ".gitignore", nfs.Template(m, "gitignore"))
m.Cmd(nfs.DEFS, ice.SRC_BINPACK_GO, nfs.Template(m, ice.SRC_BINPACK_GO))

View File

@ -18,8 +18,7 @@ import (
func _inner_list(m *ice.Message, ext, file, dir string) {
kit.If(aaa.Right(m, dir, file), func() {
kit.If(nfs.IsSourceFile(m, ext), func() { m.Cmdy(nfs.CAT, path.Join(dir, file)) })
// kit.If(m.IsErrNotFound(), func() { _inner_show(m.RenderResult().SetResult(), ext, file, dir) })
kit.If(nfs.IsSourceFile(m, ext), func() { m.Cmdy(nfs.CAT, path.Join(dir, file)) }, func() { _inner_show(m.RenderResult().SetResult(), ext, file, dir) })
})
}
func _inner_show(m *ice.Message, ext, file, dir string) {
@ -88,12 +87,12 @@ func init() {
mdb.INPUTS: {Hand: func(m *ice.Message, arg ...string) {
switch p := kit.Select(nfs.PWD, arg, 1); arg[0] {
case nfs.PATH:
m.Cmdy(nfs.DIR, p, nfs.DIR_CLI_FIELDS).ProcessAgain()
m.Cmdy(nfs.DIR, p, nfs.DIR_CLI_FIELDS)
kit.If(strings.HasPrefix(p, bind[0]), func() { m.Cmdy(nfs.DIR, strings.Replace(p, bind[0], bind[1], 1), nfs.DIR_CLI_FIELDS) })
kit.If(strings.HasPrefix(p, bind[1]), func() { m.Cmdy(nfs.DIR, strings.Replace(p, bind[1], bind[0], 1), nfs.DIR_CLI_FIELDS) })
case nfs.FILE:
m.Option(nfs.DIR_ROOT, m.Option(nfs.PATH))
m.Cmdy(nfs.DIR, kit.Select(path.Dir(p), p, strings.HasSuffix(p, ice.PS))+ice.PS, nfs.DIR_CLI_FIELDS).ProcessAgain()
m.Cmdy(nfs.DIR, kit.Select(path.Dir(p), p, strings.HasSuffix(p, ice.PS))+ice.PS, nfs.DIR_CLI_FIELDS)
default:
m.Cmdy(FAVOR, mdb.INPUTS, arg)
}
@ -101,14 +100,8 @@ func init() {
mdb.PLUGIN: {Hand: func(m *ice.Message, arg ...string) { m.Cmdy(mdb.PLUGIN, arg) }},
mdb.RENDER: {Hand: func(m *ice.Message, arg ...string) { _inner_show(m, arg[0], arg[1], arg[2]) }},
mdb.ENGINE: {Hand: func(m *ice.Message, arg ...string) { _inner_exec(m, arg[0], arg[1], arg[2]) }},
nfs.GREP: {Help: "搜索", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(nfs.GREP, arg[0], kit.Select(m.Option(nfs.PATH), arg, 1))
}},
nfs.TAGS: {Help: "索引", Hand: func(m *ice.Message, arg ...string) {
if _inner_tags(m, m.Option(nfs.PATH), arg[0]); m.Length() == 0 {
_inner_tags(m, "", arg[0])
}
}}, FAVOR: {},
nfs.GREP: {Hand: func(m *ice.Message, arg ...string) { m.Cmdy(nfs.GREP, arg[0], kit.Select(m.Option(nfs.PATH), arg, 1)) }},
nfs.TAGS: {Hand: func(m *ice.Message, arg ...string) { _inner_tags(m, m.Option(nfs.PATH), arg[0]) }}, FAVOR: {},
NAVIGATE: {Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(NAVIGATE, kit.Ext(m.Option(mdb.FILE)), m.Option(nfs.FILE), m.Option(nfs.PATH))
}},
@ -122,14 +115,13 @@ func init() {
} else {
arg[1] = strings.Split(arg[1], ice.FS)[0]
_inner_list(m, kit.Ext(arg[1]), arg[1], arg[0])
ctx.DisplayLocal(m, "").Option(nfs.REPOS, kit.Join(m.Cmd("web.code.git.repos", ice.OptionFields(nfs.PATH)).Sort(nfs.PATH).Appendv(nfs.PATH)))
ctx.DisplayLocal(m, "").Option(REPOS, kit.Join(m.Cmd(REPOS, ice.OptionFields(nfs.PATH)).Sort(nfs.PATH).Appendv(nfs.PATH)))
}
}},
})
ctx.AddRunChecker(func(m *ice.Message, cmd, check string, arg ...string) bool {
process := func(m *ice.Message, file string) bool {
ls, n := kit.Split(file, ice.PS), kit.Int(kit.Select("2", "1", strings.HasPrefix(file, ice.SRC+ice.PS)))
ctx.ProcessFloat(m, web.CODE_INNER, kit.Join(kit.Slice(ls, 0, n), ice.PS)+ice.PS, kit.Join(kit.Slice(ls, n), ice.PS))
ctx.ProcessFloat(m, kit.Simple(web.CODE_INNER, nfs.SplitPath(m, file))...)
return true
}
switch check {
@ -151,9 +143,9 @@ func init() {
}
func InnerPath(arg ...string) (dir, file string) {
p := strings.TrimPrefix(path.Join(arg...), kit.Path("")+ice.PS)
if list := strings.Split(p, ice.PS); strings.HasPrefix(p, "usr/") {
if list := strings.Split(p, ice.PS); strings.HasPrefix(p, nfs.USR) {
return path.Join(list[:2]...) + ice.PS, path.Join(list[2:]...)
} else if strings.HasPrefix(p, ".ish/pluged/") {
} else if strings.HasPrefix(p, ice.ISH_PLUGED) {
return path.Join(list[:5]...) + ice.PS, path.Join(list[5:]...)
} else {
return list[0] + ice.PS, path.Join(list[1:]...)

15
core/code/repos.go Normal file
View File

@ -0,0 +1,15 @@
package code
import (
ice "shylinux.com/x/icebergs"
"shylinux.com/x/icebergs/base/nfs"
)
const REPOS = nfs.REPOS
func init() {
const GIT_REPOS = "web.code.git.repos"
Index.MergeCommands(ice.Commands{
REPOS: {Name: "repos name auto", Hand: func(m *ice.Message, arg ...string) { m.Cmdy(GIT_REPOS, arg) }},
})
}

View File

@ -32,12 +32,10 @@ func _vimer_make(m *ice.Message, dir string, msg *ice.Message) {
m.Push(nfs.LINE, ls[1])
m.Push(mdb.TEXT, ls[3])
break
} else if n := 2; i == strings.Count(dir, ice.FS) {
if strings.HasPrefix(ls[0], "src/") {
n = 1
}
m.Push(nfs.PATH, kit.Join(kit.Slice(kit.Split(ls[0], ice.PS, ice.PS), 0, n), ice.PS)+ice.PS)
m.Push(nfs.FILE, kit.Join(kit.Slice(kit.Split(ls[0], ice.PS, ice.PS), n), ice.PS))
} else if i == strings.Count(dir, ice.FS) {
ps := nfs.SplitPath(m, ls[0])
m.Push(nfs.PATH, ps[0])
m.Push(nfs.FILE, ps[1])
m.Push(nfs.LINE, ls[1])
m.Push(mdb.TEXT, ls[3])
}
@ -65,22 +63,16 @@ func init() {
}},
mdb.INPUTS: {Hand: func(m *ice.Message, arg ...string) {
switch m.Option(ctx.ACTION) {
case web.DREAM, AUTOGEN, XTERM:
m.Cmdy(m.Option(ctx.ACTION), mdb.INPUTS, arg)
case nfs.MODULE:
m.Cmdy(AUTOGEN, mdb.INPUTS, arg)
case nfs.SCRIPT:
// p := path.Join(m.Option(nfs.PATH), m.Option(nfs.FILE))
p := path.Join(m.Option(nfs.FILE))
for _, ext := range []string{SH, SHY, PY, JS, CSS, HTML} {
m.Push(nfs.PATH, kit.ExtChange(p, ext))
m.Push(nfs.PATH, kit.ExtChange(m.Option(nfs.FILE), ext))
}
m.Option(nfs.DIR_REG, kit.FileReg(SH, SHY, PY, JS, CSS, HTML))
nfs.DirDeepAll(m, nfs.SRC, nfs.PWD, nil, nfs.PATH)
case 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)
case web.DREAM, XTERM, AUTOGEN:
m.Cmdy(m.Option(ctx.ACTION), mdb.INPUTS, arg)
default:
switch arg[0] {
case ctx.INDEX:
@ -131,14 +123,14 @@ func init() {
}
p := path.Join(m.Option(nfs.PATH), m.Option(nfs.FILE))
switch m.Cmd(nfs.SAVE, p); m.Option(nfs.FILE) {
case "index.css", "proto.js":
case ice.INDEX_CSS, ice.PROTO_JS:
m.Cmd("", DEVPACK)
}
switch arg[0] {
case nfs.GO:
defer m.Cmdy(nfs.CAT, p)
m.Cmd(cli.SYSTEM, "gofmt", "-w", p)
m.Cmd(cli.SYSTEM, "goimports", "-w", p)
m.Cmdy(nfs.CAT, p)
}
}},
nfs.TRASH: {Hand: func(m *ice.Message, arg ...string) { nfs.Trash(m, arg[0]) }},
@ -148,54 +140,16 @@ func init() {
nfs.SCRIPT: {Name: "script file*=hi/hi.js", Help: "脚本", Hand: func(m *ice.Message, arg ...string) {
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.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) {
m.Cmdy(web.DREAM, cli.START, arg)
}}, web.SPACE: {Help: "空间"},
nfs.REPOS: {Help: "仓库", Hand: func(m *ice.Message, arg ...string) {
m.Option("view", "change")
m.Cmd("web.code.git.status", func(value ice.Maps) {
m.Push(mdb.TYPE, value[mdb.TYPE])
if value[nfs.REPOS] == path.Base(kit.Path("")) {
if ls := kit.Split(value[nfs.FILE]); len(ls) == 1 {
m.Push(nfs.PATH, "./")
m.Push(nfs.FILE, ls[0])
} else {
m.Push(nfs.PATH, ls[0]+ice.PS)
m.Push(nfs.FILE, path.Join(ls[1:]...))
}
} else {
m.Push(nfs.PATH, path.Join(ice.USR, value[nfs.REPOS])+ice.PS)
m.Push(nfs.FILE, value[nfs.FILE])
}
})
}},
cli.OPENS: {Hand: func(m *ice.Message, arg ...string) { cli.Opens(m, arg...) }},
XTERM: {Name: "xterm type=sh name text", Help: "终端", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(XTERM, mdb.CREATE, arg)
}}, FAVOR: {Help: "收藏"}, "listTags": {Help: "生成索引", Hand: func(m *ice.Message, arg ...string) { m.Cmd("web.code.vim.tags", nfs.LOAD) }},
nfs.REPOS: {Help: "仓库"}, FAVOR: {Help: "收藏"}, web.DREAM: {Help: "空间"}, web.SPACE: {Help: "空间"},
cli.OPENS: {Hand: func(m *ice.Message, arg ...string) { cli.Opens(m, arg...) }},
"listTags": {Help: "生成索引", Hand: func(m *ice.Message, arg ...string) { m.Cmd("web.code.vim.tags", nfs.LOAD) }},
TEMPLATE: {Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(TEMPLATE, kit.Ext(m.Option(mdb.FILE)), m.Option(nfs.FILE), m.Option(nfs.PATH))
}},
COMPLETE: {Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(COMPLETE, kit.Ext(m.Option(mdb.FILE)), m.Option(nfs.FILE), m.Option(nfs.PATH))
}},
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))
m.Cmdy(nfs.CAT, ice.GO_MOD)
m.Cmdy(WEBPACK, mdb.REMOVE)
web.ToastSuccess(m)
m.ProcessInner()
}},
BINPACK: {Help: "打包模式", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(WEBPACK, mdb.CREATE)
m.Cmdy(AUTOGEN, BINPACK)
web.ToastSuccess(m)
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.Cmdy(AUTOGEN, nfs.MODULE, arg)
}},
@ -216,21 +170,16 @@ func init() {
_vimer_make(m, nfs.PWD, msg)
}
}},
PUBLISH: {Help: "发布", Hand: func(m *ice.Message, arg ...string) { m.Cmdy(PUBLISH, ice.CONTEXTS) }},
web.DREAM_TABLES: {Hand: func(m *ice.Message, arg ...string) {
kit.Switch(m.Option(mdb.TYPE), kit.Simple(web.SERVER, web.WORKER), func() { m.PushButton(kit.Dict(m.CommandKey(), "源码")) })
}},
web.DREAM_ACTION: {Hand: func(m *ice.Message, arg ...string) {
// kit.If(arg[1] == m.CommandKey(), func() { web.ProcessWebsite(m, m.Option(mdb.NAME), m.PrefixKey()) })
kit.If(arg[1] == m.CommandKey(), func() { ctx.ProcessField(m, m.PrefixKey(), []string{}, arg...) })
}},
}, web.DreamAction(), mdb.HashAction(mdb.SHORT, nfs.PATH, mdb.FIELD, "time,path"), aaa.RoleAction(ctx.COMMAND)), Hand: func(m *ice.Message, arg ...string) {
}, mdb.HashAction(mdb.SHORT, nfs.PATH, mdb.FIELD, "time,path"), web.DreamAction(), aaa.RoleAction(ctx.COMMAND)), Hand: func(m *ice.Message, arg ...string) {
if m.Cmdy(INNER, arg); arg[0] != ctx.ACTION {
if len(arg) > 1 {
mdb.HashCreate(m.Spawn(), nfs.PATH, path.Join(kit.Slice(arg, 0, 2)...))
}
kit.If(len(arg) > 1, func() { mdb.HashCreate(m.Spawn(), nfs.PATH, path.Join(kit.Slice(arg, 0, 2)...)) })
m.Action(AUTOGEN, nfs.SCRIPT, nfs.SAVE, COMPILE)
m.Options("tabs", m.Config("show.tabs"), "plug", m.Config("show.plug"), "exts", m.Config("show.exts"))
ctx.DisplayLocal(m, "")
}
}},
@ -246,9 +195,6 @@ func init() {
Index.MergeCommands(ice.Commands{COMPLETE: {Name: "complete type name text auto", Help: "补全", Actions: mdb.RenderAction()}})
Index.MergeCommands(ice.Commands{NAVIGATE: {Name: "navigate type name text auto", Help: "跳转", Actions: mdb.RenderAction()}})
ice.AddMerges(func(c *ice.Context, key string, cmd *ice.Command, sub string, action *ice.Action) (ice.Handler, ice.Handler) {
if strings.HasPrefix(key, ice.PS) {
return nil, nil
}
switch sub {
case TEMPLATE, COMPLETE, NAVIGATE:
return func(m *ice.Message, arg ...string) { m.Cmd(sub, mdb.CREATE, key, m.PrefixKey()) }, nil