diff --git a/base/nfs/dir.go b/base/nfs/dir.go index ad585ba7..4c7613a7 100644 --- a/base/nfs/dir.go +++ b/base/nfs/dir.go @@ -145,6 +145,7 @@ const ( TYPE_BOTH = "both" SRC = "src/" + USR = "usr/" ) const ( DIR_ROOT = "dir_root" diff --git a/core/code/autogen.go b/core/code/autogen.go index c4ac04cd..10fbce98 100644 --- a/core/code/autogen.go +++ b/core/code/autogen.go @@ -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)) diff --git a/core/code/inner.go b/core/code/inner.go index a04f59be..c0fa233f 100644 --- a/core/code/inner.go +++ b/core/code/inner.go @@ -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:]...) diff --git a/core/code/repos.go b/core/code/repos.go new file mode 100644 index 00000000..a22d94aa --- /dev/null +++ b/core/code/repos.go @@ -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) }}, + }) +} diff --git a/core/code/vimer.go b/core/code/vimer.go index f7126e11..4e9396a4 100644 --- a/core/code/vimer.go +++ b/core/code/vimer.go @@ -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