diff --git a/base/nfs/nfs.go b/base/nfs/nfs.go
index 42b42b43..04f61ee3 100644
--- a/base/nfs/nfs.go
+++ b/base/nfs/nfs.go
@@ -149,11 +149,6 @@ func _file_list(m *ice.Message, root string, name string, level int, deep bool,
}
}
func _file_show(m *ice.Message, name string) {
- if strings.HasPrefix(name, "http") {
- m.Cmdy("web.spide", "dev", "raw", "GET", name)
- return // 远程文件
- }
-
if f, e := os.Open(path.Join(m.Option(DIR_ROOT), name)); e == nil {
defer f.Close()
@@ -176,6 +171,12 @@ func _file_show(m *ice.Message, name string) {
return
}
+ if b, ok := ice.BinPack["/"+name]; ok {
+ m.Info("binpack %v %v", len(b), name)
+ m.Echo(string(b))
+ return // 打包文件
+ }
+
// 远程文件
switch cb := m.Optionv(CAT_CB).(type) {
case func(string, int):
diff --git a/base/ssh/scripts.go b/base/ssh/scripts.go
index 4ef586bf..4e17cf67 100644
--- a/base/ssh/scripts.go
+++ b/base/ssh/scripts.go
@@ -49,25 +49,27 @@ func Render(msg *ice.Message, cmd string, args ...interface{}) {
}
}
func Script(m *ice.Message, name string) io.Reader {
- if b, ok := ice.BinPack[name]; ok {
- m.Debug("binpack %v %v", len(b), name)
- return bytes.NewReader(b)
- }
-
if strings.Contains(m.Option("_script"), "/") {
name = path.Join(path.Dir(m.Option("_script")), name)
}
m.Option("_script", name)
+ m.Debug("name %v", name)
if s, e := os.Open(path.Join(m.Option(nfs.DIR_ROOT), name)); e == nil {
return s
}
+
switch strings.Split(name, "/")[0] {
case "etc", "var":
m.Warn(true, ice.ErrNotFound)
return nil
}
+ if b, ok := ice.BinPack["/"+name]; ok {
+ m.Info("binpack %v %v", len(b), name)
+ return bytes.NewReader(b)
+ }
+
if msg := m.Cmd("web.spide", "dev", "GET", path.Join("/share/local/", name)); msg.Result(0) != ice.ErrWarn {
bio := bytes.NewBuffer([]byte(msg.Result()))
return bio
diff --git a/core/chat/header.go b/core/chat/header.go
index a26438fc..c8d4c026 100644
--- a/core/chat/header.go
+++ b/core/chat/header.go
@@ -3,11 +3,8 @@ package chat
import (
ice "github.com/shylinux/icebergs"
"github.com/shylinux/icebergs/base/aaa"
- "github.com/shylinux/icebergs/base/nfs"
"github.com/shylinux/icebergs/base/web"
kit "github.com/shylinux/toolkits"
-
- "fmt"
)
const (
@@ -40,27 +37,7 @@ func init() {
}},
"pack": {Name: "pack", Help: "打包", Hand: func(m *ice.Message, arg ...string) {
- m.Cmdy("web.code.webpack", "pack")
-
- if f, _, e := kit.Create("usr/publish/webpack/" + m.Option("name") + ".js"); m.Assert(e) {
- defer f.Close()
-
- f.WriteString(`Volcanos.meta.pack = ` + kit.Formats(kit.UnMarshal(m.Option("content"))))
- }
-
- m.Option(nfs.DIR_ROOT, "")
- if f, p, e := kit.Create("usr/publish/webpack/" + m.Option("name") + ".html"); m.Assert(e) {
- f.WriteString(fmt.Sprintf(_pack,
- m.Cmdx(nfs.CAT, "usr/volcanos/cache.css"),
- m.Cmdx(nfs.CAT, "usr/volcanos/index.css"),
-
- m.Cmdx(nfs.CAT, "usr/volcanos/proto.js"),
- m.Cmdx(nfs.CAT, "usr/volcanos/cache.js"),
- m.Cmdx(nfs.CAT, "usr/publish/webpack/"+m.Option("name")+".js"),
- m.Cmdx(nfs.CAT, "usr/volcanos/index.js"),
- ))
- m.Echo(p)
- }
+ m.Cmdy("web.code.webpack", "create")
}},
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
m.Echo(m.Conf(HEADER, TITLE))
@@ -68,22 +45,3 @@ func init() {
},
}, nil)
}
-
-const _pack = `
-
-
-
-
- volcanos
-
-
-
-
-
-
-
-
-
-
-
-`
diff --git a/core/code/_trash.go b/core/code/_trash.go
deleted file mode 100644
index 80619ac6..00000000
--- a/core/code/_trash.go
+++ /dev/null
@@ -1,59 +0,0 @@
-package code
-
-func _pprof_show(m *ice.Message, zone string, id string) {
- favor := m.Conf(PPROF, kit.Keys(kit.MDB_META, web.FAVOR))
-
- m.Richs(PPROF, nil, zone, func(key string, val map[string]interface{}) {
- val = val[kit.MDB_META].(map[string]interface{})
-
- list := []string{}
- task.Put(val, func(task *task.Task) error {
- m.Sleep("1s")
- m.Grows(PPROF, kit.Keys(kit.MDB_HASH, key), "", "", func(index int, value map[string]interface{}) {
- // 压测命令
- m.Log_EXPORT(kit.MDB_META, PPROF, kit.MDB_ZONE, zone, kit.MDB_VALUE, kit.Format(value))
- cmd := kit.Format(value[kit.MDB_TYPE])
- arg := kit.Format(value[kit.MDB_TEXT])
- res := m.Cmd(mdb.ENGINE, value[kit.MDB_TYPE], value[kit.MDB_NAME], value[kit.MDB_TEXT], value[kit.MDB_EXTRA]).Result()
- m.Cmd(web.FAVOR, favor, cmd, arg, res)
- list = append(list, cmd+": "+arg, res)
- })
- return nil
- })
-
- // 收藏程序
- msg := m.Cmd(web.CACHE, web.CATCH, kit.MIME_FILE, kit.Format(val[BINNARY]))
- bin := msg.Append(kit.MDB_TEXT)
- m.Cmd(web.FAVOR, favor, kit.MIME_FILE, bin, val[BINNARY])
-
- // 性能分析
- msg = m.Cmd(web.SPIDE, "self", web.CACHE, http.MethodGet, kit.Select("/code/pprof/profile", val[SERVICE]), "seconds", kit.Select("5", kit.Format(val[SECONDS])))
- m.Cmd(web.FAVOR, favor, PPROF, msg.Append(kit.MDB_TEXT), kit.Keys(zone, "pd.gz"))
-
- // 结果摘要
- cmd := kit.Simple(m.Confv(PPROF, "meta.pprof"), "-text", val[BINNARY], msg.Append(kit.MDB_TEXT))
- res := strings.Split(m.Cmdx(cli.SYSTEM, cmd), "\n")
- if len(res) > 20 {
- res = res[:20]
- }
- m.Cmd(web.FAVOR, favor, web.TYPE_SHELL, strings.Join(cmd, " "), strings.Join(res, "\n"))
- list = append(list, web.TYPE_SHELL+": "+strings.Join(cmd, " "), strings.Join(res, "\n"))
-
- // 结果展示
- u := kit.ParseURL(m.Option(ice.MSG_USERWEB))
- p := kit.Format("%s:%s", u.Hostname(), m.Cmdx(tcp.PORT, aaa.Right))
- m.Option(cli.CMD_STDOUT, "var/daemon/stdout")
- m.Option(cli.CMD_STDERR, "var/daemon/stderr")
- m.Cmd(cli.DAEMON, m.Confv(PPROF, "meta.pprof"), "-http="+p, val[BINNARY], msg.Append(kit.MDB_TEXT))
-
- url := u.Scheme + "://" + p + "/ui/top"
- m.Cmd(web.FAVOR, favor, web.SPIDE, url, msg.Append(kit.MDB_TEXT))
- m.Set(ice.MSG_RESULT).Echo(url).Echo(" \n").Echo("\n")
- m.Echo(strings.Join(list, "\n")).Echo("\n")
-
- m.Push("url", url)
- m.Push(PPROF, msg.Append(kit.MDB_TEXT))
- m.Push(SERVICE, strings.Replace(kit.Format(val[SERVICE]), "profile", "", -1))
- m.Push("bin", bin)
- })
-}
diff --git a/core/code/autogen.go b/core/code/autogen.go
index 5c829783..33fa5b7f 100644
--- a/core/code/autogen.go
+++ b/core/code/autogen.go
@@ -10,19 +10,15 @@ import (
"strings"
)
-func _autogen_script(m *ice.Message, p string) {
- // if b, e := kit.Render(m.Conf(AUTOGEN, "meta.shy"), m); m.Assert(e) {
- if b, e := kit.Render(`
-chapter {{.Option "name"}}
-field {{.Option "name"}} web.code.{{.Option "name"}}.{{.Option "name"}}
-`, m); m.Assert(e) {
- m.Cmd(nfs.SAVE, p, string(b))
+func _autogen_script(m *ice.Message, dir string) {
+ if b, e := kit.Render(m.Conf(AUTOGEN, "meta.shy"), m); m.Assert(e) {
+ m.Cmd(nfs.SAVE, dir, string(b))
}
}
func _autogen_source(m *ice.Message, name string) {
m.Cmd("nfs.file", "append", "src/main.shy", "\n", `source `+name+"/"+name+".shy", "\n")
}
-func _autogen_index(m *ice.Message, p string, from string, ctx string) {
+func _autogen_index(m *ice.Message, dir string, from string, ctx string) {
list := []string{}
up, low := "", ""
@@ -43,16 +39,17 @@ func _autogen_index(m *ice.Message, p string, from string, ctx string) {
list = append(list, line)
})
-
m.Cmd(nfs.CAT, from)
- m.Cmdy(nfs.SAVE, p, strings.Join(list, "\n"))
+
+ m.Cmdy(nfs.SAVE, dir, strings.Join(list, "\n"))
}
func _autogen_main(m *ice.Message, file string, mod string, ctx string) {
list := []string{}
+
m.Option(nfs.CAT_CB, func(line string, index int) {
list = append(list, line)
if strings.HasPrefix(line, "import (") {
- list = append(list, ` _ "`+mod+"/src/"+ctx+`"`, "")
+ list = append(list, kit.Format(` _ "%s/src/%s"`, mod, ctx), "")
}
})
m.Cmd(nfs.CAT, file)
@@ -76,7 +73,10 @@ func init() {
Index.Merge(&ice.Context{
Configs: map[string]*ice.Config{
AUTOGEN: {Name: AUTOGEN, Help: "生成", Value: kit.Data(
- kit.MDB_FIELD, "time,id,name,from",
+ kit.MDB_FIELD, "time,id,name,from", "shy", `
+chapter "{{.Option "name"}}"
+field "{{.Option "name"}}" web.code.{{.Option "name"}}.{{.Option "name"}}
+`,
)},
},
Commands: map[string]*ice.Command{
@@ -95,13 +95,11 @@ func init() {
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
switch arg[0] {
case "main":
- m.Cmdy(nfs.DIR, "src")
- m.Appendv(ice.MSG_APPEND, "path", "size", "time")
+ m.Cmdy(nfs.DIR, "src", "path,size,time")
m.Sort(kit.MDB_PATH)
case "from":
m.Option(nfs.DIR_DEEP, true)
- m.Cmdy(nfs.DIR, "usr/icebergs")
- m.Appendv(ice.MSG_APPEND, "path", "size", "time")
+ m.Cmdy(nfs.DIR, "usr/icebergs", "path,size,time")
m.Sort(kit.MDB_PATH)
}
}},
diff --git a/core/code/bench.go b/core/code/bench.go
index d773a544..11025a9d 100644
--- a/core/code/bench.go
+++ b/core/code/bench.go
@@ -15,7 +15,7 @@ import (
"sync/atomic"
)
-func _bench_http(m *ice.Message, kind, name, target string, arg ...string) {
+func _bench_http(m *ice.Message, name, target string, arg ...string) {
nconn := kit.Int64(kit.Select("10", m.Option(NCONN)))
nreqs := kit.Int64(kit.Select("1000", m.Option(NREQS)))
m.Echo("nconn: %d nreqs: %d\n", nconn, nreqs*nconn)
@@ -49,6 +49,8 @@ func _bench_http(m *ice.Message, kind, name, target string, arg ...string) {
m.Echo("body: %d\n", body)
m.Option(ice.MSG_PROCESS, "_inner")
}
+func _bench_redis(m *ice.Message, name, target string, arg ...string) {
+}
const (
NCONN = "nconn"
@@ -63,7 +65,7 @@ func init() {
BENCH: {Name: BENCH, Help: "性能压测", Value: kit.Data(kit.MDB_SHORT, kit.MDB_ZONE)},
},
Commands: map[string]*ice.Command{
- BENCH: {Name: "bench zone=auto id=auto auto insert", Help: "性能压测", Action: map[string]*ice.Action{
+ BENCH: {Name: "bench zone id auto insert", Help: "性能压测", Action: map[string]*ice.Action{
mdb.CREATE: {Name: "create zone", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(mdb.INSERT, BENCH, "", mdb.HASH, arg)
}},
@@ -81,7 +83,9 @@ func init() {
cli.RUN: {Name: "run", Help: "运行", Hand: func(m *ice.Message, arg ...string) {
switch m.Option(kit.MDB_TYPE) {
case "http":
- _bench_http(m, m.Option(kit.MDB_TYPE), m.Option(kit.MDB_NAME), m.Option(kit.MDB_TEXT))
+ _bench_http(m, m.Option(kit.MDB_NAME), m.Option(kit.MDB_TEXT))
+ case "redis":
+ _bench_redis(m, m.Option(kit.MDB_NAME), m.Option(kit.MDB_TEXT))
}
}},
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
diff --git a/core/code/c.go b/core/code/c.go
index 5a459828..bb4052c8 100644
--- a/core/code/c.go
+++ b/core/code/c.go
@@ -7,57 +7,16 @@ import (
"github.com/shylinux/icebergs/base/nfs"
kit "github.com/shylinux/toolkits"
- "bufio"
"os"
"path"
"strings"
)
-func _c_find(m *ice.Message, key string) {
- for _, p := range strings.Split(m.Cmdx(cli.SYSTEM, FIND, ".", "-name", key), "\n") {
- if p == "" {
- continue
- }
- m.Push(kit.MDB_FILE, strings.TrimPrefix(p, "./"))
- m.Push(kit.MDB_LINE, 1)
- m.Push(kit.MDB_TEXT, "")
- }
-}
-func _c_grep(m *ice.Message, key string) {
- m.Split(m.Cmd(cli.SYSTEM, GREP, "--exclude-dir=.git", "--exclude-dir=pluged", "--exclude=.[a-z]*",
- "-rn", "\\<"+key+"\\>", ".").Append(cli.CMD_OUT), "file:line:text", ":", "\n")
-}
func _c_tags(m *ice.Message, key string) {
- if _, e := os.Stat(path.Join(m.Option("_path"), m.Conf(C, "meta.tags"))); e != nil {
- // 创建索引
- m.Cmd(cli.SYSTEM, CTAGS, "-R", "-f", m.Conf(C, "meta.tags"), "./")
+ if _, e := os.Stat(path.Join(m.Option(cli.CMD_DIR), ".tags")); e != nil {
+ m.Cmd(cli.SYSTEM, "ctags", "-R", "-f", ".tags", "./")
}
-
- for _, l := range strings.Split(m.Cmdx(cli.SYSTEM, GREP, "^"+key+"\\>", m.Conf(C, "meta.tags")), "\n") {
- ls := strings.SplitN(l, "\t", 2)
- if len(ls) < 2 {
- continue
- }
-
- ls = strings.SplitN(ls[1], "\t", 2)
- file := ls[0]
- ls = strings.SplitN(ls[1], ";\"", 2)
- text := strings.TrimSuffix(strings.TrimPrefix(ls[0], "/^"), "$/")
- line := kit.Int(text)
-
- p := path.Join(m.Option("_path"), file)
- f, e := os.Open(p)
- m.Assert(e)
- bio := bufio.NewScanner(f)
- for i := 1; bio.Scan(); i++ {
- if i == line || bio.Text() == text {
- m.Push(kit.MDB_FILE, strings.TrimPrefix(file, "./"))
- m.Push(kit.MDB_LINE, i)
- m.Push(kit.MDB_TEXT, bio.Text())
- }
- }
- }
- m.Sort(kit.MDB_LINE, "int")
+ _go_tags(m, key)
}
func _c_help(m *ice.Message, section, key string) string {
p := m.Cmd(cli.SYSTEM, MAN, section, key).Append(cli.CMD_OUT)
@@ -78,150 +37,160 @@ func _c_help(m *ice.Message, section, key string) string {
return string(res)
}
-const CC = "cc"
-const C = "c"
const H = "h"
+const C = "c"
+const CC = "cc"
const MAN1 = "man1"
const MAN2 = "man2"
const MAN3 = "man3"
const MAN8 = "man8"
const (
- FIND = "find"
- GREP = "grep"
- CTAGS = "ctags"
- MAN = "man"
+ FIND = "find"
+ GREP = "grep"
+ MAN = "man"
)
func init() {
- Index.Register(&ice.Context{Name: C, Help: "c",
+ Index.Register(&ice.Context{Name: C, Help: "系统",
Commands: map[string]*ice.Command{
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
- m.Cmd(mdb.SEARCH, mdb.CREATE, CC, C, c.Cap(ice.CTX_FOLLOW))
- m.Cmd(mdb.PLUGIN, mdb.CREATE, CC, C, c.Cap(ice.CTX_FOLLOW))
- m.Cmd(mdb.RENDER, mdb.CREATE, CC, C, c.Cap(ice.CTX_FOLLOW))
+ m.Cmd(mdb.PLUGIN, mdb.CREATE, CC, m.Prefix(C))
+ m.Cmd(mdb.RENDER, mdb.CREATE, CC, m.Prefix(C))
+ m.Cmd(mdb.SEARCH, mdb.CREATE, CC, m.Prefix(C))
- m.Cmd(mdb.SEARCH, mdb.CREATE, C, C, c.Cap(ice.CTX_FOLLOW))
- m.Cmd(mdb.PLUGIN, mdb.CREATE, C, C, c.Cap(ice.CTX_FOLLOW))
- m.Cmd(mdb.RENDER, mdb.CREATE, C, C, c.Cap(ice.CTX_FOLLOW))
+ m.Cmd(mdb.PLUGIN, mdb.CREATE, C, m.Prefix(C))
+ m.Cmd(mdb.RENDER, mdb.CREATE, C, m.Prefix(C))
+ m.Cmd(mdb.SEARCH, mdb.CREATE, C, m.Prefix(C))
- m.Cmd(mdb.SEARCH, mdb.CREATE, H, C, c.Cap(ice.CTX_FOLLOW))
- m.Cmd(mdb.PLUGIN, mdb.CREATE, H, C, c.Cap(ice.CTX_FOLLOW))
- m.Cmd(mdb.RENDER, mdb.CREATE, H, C, c.Cap(ice.CTX_FOLLOW))
+ m.Cmd(mdb.PLUGIN, mdb.CREATE, H, m.Prefix(C))
+ m.Cmd(mdb.RENDER, mdb.CREATE, H, m.Prefix(C))
+ m.Cmd(mdb.SEARCH, mdb.CREATE, H, m.Prefix(C))
for _, k := range []string{MAN1, MAN2, MAN3, MAN8} {
- m.Cmd(mdb.SEARCH, mdb.CREATE, k, MAN, c.Cap(ice.CTX_FOLLOW))
- m.Cmd(mdb.PLUGIN, mdb.CREATE, k, MAN, c.Cap(ice.CTX_FOLLOW))
- m.Cmd(mdb.RENDER, mdb.CREATE, k, MAN, c.Cap(ice.CTX_FOLLOW))
+ m.Cmd(mdb.PLUGIN, mdb.CREATE, k, m.Prefix(MAN))
+ m.Cmd(mdb.RENDER, mdb.CREATE, k, m.Prefix(MAN))
+ m.Cmd(mdb.SEARCH, mdb.CREATE, k, m.Prefix(MAN))
}
}},
- C: {Name: C, Help: "c", Action: map[string]*ice.Action{
- mdb.SEARCH: {Name: "search type name text", Hand: func(m *ice.Message, arg ...string) {
- if arg[0] == kit.MDB_FOREACH {
- return
- }
- m.Option(cli.CMD_DIR, m.Option("_path"))
- _c_find(m, kit.Select("main", arg, 1))
- m.Cmdy(mdb.SEARCH, "man2", arg[1:])
- _c_tags(m, kit.Select("main", arg, 1))
- _c_grep(m, kit.Select("main", arg, 1))
- }},
+ C: {Name: C, Help: "系统", Action: map[string]*ice.Action{
mdb.PLUGIN: {Hand: func(m *ice.Message, arg ...string) {
m.Echo(m.Conf(C, "meta.plug"))
}},
mdb.RENDER: {Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(nfs.CAT, path.Join(arg[2], arg[1]))
}},
+ mdb.SEARCH: {Hand: func(m *ice.Message, arg ...string) {
+ if arg[0] == kit.MDB_FOREACH {
+ return
+ }
+ m.Option(cli.CMD_DIR, kit.Select("src", arg, 2))
+ _go_find(m, kit.Select("main", arg, 1))
+ m.Cmdy(mdb.SEARCH, MAN2, arg[1:])
+ m.Cmdy(mdb.SEARCH, MAN3, arg[1:])
+ _c_tags(m, kit.Select("main", arg, 1))
+ _go_grep(m, kit.Select("main", arg, 1))
+ }},
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {}},
- MAN: {Name: MAN, Help: "man", Action: map[string]*ice.Action{
- mdb.SEARCH: {Name: "search type name text", Hand: func(m *ice.Message, arg ...string) {
+ MAN: {Name: MAN, Help: "手册", Action: map[string]*ice.Action{
+ mdb.PLUGIN: {Hand: func(m *ice.Message, arg ...string) {
+ m.Echo(m.Conf(MAN, "meta.plug"))
+ }},
+ mdb.RENDER: {Hand: func(m *ice.Message, arg ...string) {
+ m.Echo(_c_help(m, strings.TrimPrefix(arg[0], MAN), strings.TrimSuffix(arg[1], "."+arg[0])))
+ }},
+ mdb.SEARCH: {Hand: func(m *ice.Message, arg ...string) {
if arg[0] == kit.MDB_FOREACH {
return
}
for _, k := range []string{"1", "2", "3", "8"} {
if text := _c_help(m, k, kit.Select("main", arg, 1)); text != "" {
- m.Push(kit.MDB_FILE, arg[1]+".man"+k)
- m.Push(kit.MDB_LINE, "1")
- m.Push(kit.MDB_TEXT, text)
+ for _, k := range kit.Split(m.Option(mdb.FIELDS)) {
+ switch k {
+ case kit.MDB_FILE:
+ m.Push(k, arg[1]+".man"+k)
+ case kit.MDB_LINE:
+ m.Push(k, 1)
+ case kit.MDB_TEXT:
+ m.Push(k, text)
+ default:
+ m.Push(k, "")
+ }
+ }
}
}
}},
- mdb.PLUGIN: {Hand: func(m *ice.Message, arg ...string) {
- m.Echo(m.Conf(C, "meta.man.plug"))
- }},
- mdb.RENDER: {Hand: func(m *ice.Message, arg ...string) {
- m.Echo(_c_help(m, strings.TrimPrefix(arg[0], "man"), strings.TrimSuffix(arg[1], "."+arg[0])))
- }},
- }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {}},
+ }},
},
Configs: map[string]*ice.Config{
- C: {Name: C, Help: "c", Value: kit.Data(
- "tags", ".tags",
- "man.plug", kit.Dict(
- "prefix", kit.Dict(
- "NAME", "comment",
- "LIBRARY", "comment",
- "SYNOPSIS", "comment",
- "DESCRIPTION", "comment",
- "STANDARDS", "comment",
- "SEE ALSO", "comment",
- "HISTORY", "comment",
- "BUGS", "comment",
+ MAN: {Name: MAN, Help: "手册", Value: kit.Data(
+ "plug", kit.Dict(
+ PREFIX, kit.Dict(
+ "NAME", COMMENT,
+ "LIBRARY", COMMENT,
+ "SYNOPSIS", COMMENT,
+ "DESCRIPTION", COMMENT,
+ "STANDARDS", COMMENT,
+ "SEE ALSO", COMMENT,
+ "HISTORY", COMMENT,
+ "BUGS", COMMENT,
),
),
+ )},
+ C: {Name: C, Help: "系统", Value: kit.Data(
"plug", kit.Dict(
- "split", kit.Dict(
+ SPLIT, kit.Dict(
"space", " ",
- "operator", "{[(.,;!|<>)]}",
+ "operator", "{[(.,:;!|<>)]}",
),
- "prefix", kit.Dict(
- "//", "comment",
- "/*", "comment",
- "*", "comment",
+ PREFIX, kit.Dict(
+ "//", COMMENT,
+ "/*", COMMENT,
+ "*", COMMENT,
),
- "keyword", kit.Dict(
- "#include", "keyword",
- "#define", "keyword",
- "#ifndef", "keyword",
- "#ifdef", "keyword",
- "#else", "keyword",
- "#endif", "keyword",
+ KEYWORD, kit.Dict(
+ "#include", KEYWORD,
+ "#define", KEYWORD,
+ "#ifndef", KEYWORD,
+ "#ifdef", KEYWORD,
+ "#else", KEYWORD,
+ "#endif", KEYWORD,
- "if", "keyword",
- "else", "keyword",
- "for", "keyword",
- "while", "keyword",
- "do", "keyword",
- "break", "keyword",
- "continue", "keyword",
- "switch", "keyword",
- "case", "keyword",
- "default", "keyword",
- "return", "keyword",
+ "if", KEYWORD,
+ "else", KEYWORD,
+ "for", KEYWORD,
+ "while", KEYWORD,
+ "do", KEYWORD,
+ "break", KEYWORD,
+ "continue", KEYWORD,
+ "switch", KEYWORD,
+ "case", KEYWORD,
+ "default", KEYWORD,
+ "return", KEYWORD,
- "typedef", "keyword",
- "extern", "keyword",
- "static", "keyword",
- "const", "keyword",
- "sizeof", "keyword",
+ "typedef", KEYWORD,
+ "extern", KEYWORD,
+ "static", KEYWORD,
+ "const", KEYWORD,
+ "sizeof", KEYWORD,
- "union", "datatype",
- "struct", "datatype",
- "unsigned", "datatype",
- "double", "datatype",
- "void", "datatype",
- "long", "datatype",
- "char", "datatype",
- "int", "datatype",
+ "union", DATATYPE,
+ "struct", DATATYPE,
+ "unsigned", DATATYPE,
+ "double", DATATYPE,
+ "void", DATATYPE,
+ "long", DATATYPE,
+ "char", DATATYPE,
+ "int", DATATYPE,
- "assert", "function",
- "zmalloc", "function",
+ "assert", FUNCTION,
+ "zmalloc", FUNCTION,
- "NULL", "string",
- "-1", "string",
- "0", "string",
- "1", "string",
- "2", "string",
+ "NULL", STRING,
+ "-1", STRING,
+ "0", STRING,
+ "1", STRING,
+ "2", STRING,
),
),
)},
diff --git a/core/code/code.go b/core/code/code.go
index 450bb254..0ef63532 100644
--- a/core/code/code.go
+++ b/core/code/code.go
@@ -21,7 +21,7 @@ var Index = &ice.Context{Name: CODE, Help: "编程中心",
func init() {
web.Index.Register(Index, &web.Frame{},
INSTALL, AUTOGEN, COMPILE, PUBLISH, UPGRADE,
- INNER, VIMER, FAVOR, BENCH, PPROF,
+ VIMER, INNER, FAVOR, BENCH, PPROF,
C, SH, SHY, GO, JS,
)
}
diff --git a/core/code/code.shy b/core/code/code.shy
index fcbc8c07..aaa46e14 100644
--- a/core/code/code.shy
+++ b/core/code/code.shy
@@ -6,6 +6,9 @@ chapter "code"
# field "发布" web.code.publish
# field "升级" web.code.upgrade
+field "打包" web.code.binpack
+field "打包" web.code.webpack
+
field "编辑" web.code.vimer
field "查看" web.code.inner
field "收藏" web.code.favor
@@ -13,8 +16,8 @@ field "测试" web.code.bench
field "优化" web.code.pprof
return
-field "查看" web.code.c
-field "编辑" web.code.sh
-field "测试" web.code.shy
-field "收藏" web.code.go
-field "优化" web.code.js
+field "系统" web.code.c
+field "命令" web.code.sh
+field "脚本" web.code.shy
+field "后端" web.code.go
+field "前端" web.code.js
diff --git a/core/code/compile.go b/core/code/compile.go
index e8524219..dd0ccf51 100644
--- a/core/code/compile.go
+++ b/core/code/compile.go
@@ -29,14 +29,12 @@ func init() {
Commands: map[string]*ice.Command{
COMPILE: {Name: "compile os=linux,darwin,windows arch=amd64,386,arm src=src/main.go@key 执行:button", Help: "编译", Action: map[string]*ice.Action{
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
- m.Cmdy(nfs.DIR, "src")
- m.Appendv(ice.MSG_APPEND, "path", "size", "time")
+ m.Cmdy(nfs.DIR, "src", "path,size,time")
m.Sort(kit.MDB_PATH)
}},
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
if len(arg) == 0 {
- // 目录列表
- m.Cmdy(nfs.DIR, m.Conf(COMPILE, kit.META_PATH), "time size path")
+ m.Cmdy(nfs.DIR, m.Conf(COMPILE, kit.META_PATH), "time,size,path")
return
}
@@ -55,7 +53,8 @@ func init() {
}
// 编译目标
- file := path.Join(m.Conf(cmd, kit.META_PATH), kit.Keys(kit.Select("ice", path.Base(strings.TrimSuffix(main, ".go")), main != "src/main.go"), goos, arch))
+
+ file := path.Join(kit.Select("", m.Conf(cmd, kit.META_PATH), m.Option(cli.CMD_DIR) == ""), kit.Keys(kit.Select("ice", path.Base(strings.TrimSuffix(main, ".go")), main != "src/main.go"), goos, arch))
args := []string{"-ldflags"}
list := []string{
fmt.Sprintf(`-X main.Time="%s"`, m.Time()),
diff --git a/core/code/go.go b/core/code/go.go
index cb1e16a6..c1800826 100644
--- a/core/code/go.go
+++ b/core/code/go.go
@@ -27,6 +27,8 @@ func _go_find(m *ice.Message, key string) {
m.Push(k, 1)
case kit.MDB_TEXT:
m.Push(k, "")
+ default:
+ m.Push(k, "")
}
}
}
@@ -67,6 +69,8 @@ func _go_tags(m *ice.Message, key string) {
m.Push(k, i)
case kit.MDB_TEXT:
m.Push(k, bio.Text())
+ default:
+ m.Push(k, "")
}
}
}
@@ -101,6 +105,8 @@ func _go_help(m *ice.Message, key string) {
m.Push(k, 1)
case kit.MDB_TEXT:
m.Push(k, string(res))
+ default:
+ m.Push(k, "")
}
}
}
@@ -111,7 +117,7 @@ const MOD = "mod"
const SUM = "sum"
func init() {
- Index.Register(&ice.Context{Name: GO, Help: "go",
+ Index.Register(&ice.Context{Name: GO, Help: "后端",
Commands: map[string]*ice.Command{
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
m.Cmd(mdb.PLUGIN, mdb.CREATE, GO, m.Prefix(GO))
@@ -130,23 +136,23 @@ func init() {
m.Cmd(mdb.RENDER, mdb.CREATE, SUM, m.Prefix(SUM))
}},
- SUM: {Name: SUM, Help: "sum", Action: map[string]*ice.Action{
+ SUM: {Name: SUM, Help: "版本", Action: map[string]*ice.Action{
mdb.PLUGIN: {Hand: func(m *ice.Message, arg ...string) {
- m.Echo(m.Conf(GO, "meta.mod.plug"))
+ m.Echo(m.Conf(MOD, "meta.plug"))
}},
mdb.RENDER: {Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(nfs.CAT, path.Join(arg[2], arg[1]))
}},
}},
- MOD: {Name: MOD, Help: "mod", Action: map[string]*ice.Action{
+ MOD: {Name: MOD, Help: "模块", Action: map[string]*ice.Action{
mdb.PLUGIN: {Hand: func(m *ice.Message, arg ...string) {
- m.Echo(m.Conf(GO, "meta.mod.plug"))
+ m.Echo(m.Conf(MOD, "meta.plug"))
}},
mdb.RENDER: {Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(nfs.CAT, path.Join(arg[2], arg[1]))
}},
}},
- DOC: {Name: DOC, Help: "doc", Action: map[string]*ice.Action{
+ DOC: {Name: DOC, Help: "文档", Action: map[string]*ice.Action{
mdb.PLUGIN: {Hand: func(m *ice.Message, arg ...string) {
m.Echo(m.Conf(GO, "meta.plug"))
}},
@@ -155,7 +161,7 @@ func init() {
m.Echo(m.Cmdx(cli.SYSTEM, GO, "doc", strings.TrimSuffix(arg[1], "."+arg[0])))
}},
}},
- GO: {Name: GO, Help: "go", Action: map[string]*ice.Action{
+ GO: {Name: GO, Help: "后端", Action: map[string]*ice.Action{
mdb.PLUGIN: {Hand: func(m *ice.Message, arg ...string) {
m.Echo(m.Conf(GO, "meta.plug"))
}},
@@ -177,83 +183,85 @@ func init() {
}
m.Option(cli.CMD_DIR, kit.Select("src", arg, 2))
_go_find(m, kit.Select("main", arg, 1))
- _go_tags(m, kit.Select("main", arg, 1))
_go_help(m, kit.Select("main", arg, 1))
+ _go_tags(m, kit.Select("main", arg, 1))
_go_grep(m, kit.Select("main", arg, 1))
}},
}},
},
Configs: map[string]*ice.Config{
- GO: {Name: GO, Help: "go", Value: kit.Data(
- "mod.plug", kit.Dict(
- "prefix", kit.Dict(
- "#", "comment",
+ MOD: {Name: MOD, Help: "模块", Value: kit.Data(
+ "plug", kit.Dict(
+ PREFIX, kit.Dict(
+ "#", COMMENT,
),
- "keyword", kit.Dict(
- "module", "keyword",
- "require", "keyword",
- "replace", "keyword",
- "=>", "keyword",
+ KEYWORD, kit.Dict(
+ "module", KEYWORD,
+ "require", KEYWORD,
+ "replace", KEYWORD,
+ "=>", KEYWORD,
),
),
+ )},
+ GO: {Name: GO, Help: "后端", Value: kit.Data(
"plug", kit.Dict(
- "split", kit.Dict(
+ SPLIT, kit.Dict(
"space", "\t ",
"operator", "{[(&.,:;!|<>)]}",
),
- "prefix", kit.Dict(
- "//", "comment",
- "/*", "comment",
- "*", "comment",
+ PREFIX, kit.Dict(
+ "//", COMMENT,
+ "/*", COMMENT,
+ "*", COMMENT,
),
- "keyword", kit.Dict(
- "package", "keyword",
- "import", "keyword",
- "const", "keyword",
- "func", "keyword",
- "var", "keyword",
- "type", "keyword",
- "struct", "keyword",
- "interface", "keyword",
+ KEYWORD, kit.Dict(
+ "package", KEYWORD,
+ "import", KEYWORD,
+ "const", KEYWORD,
+ "func", KEYWORD,
+ "var", KEYWORD,
+ "type", KEYWORD,
+ "struct", KEYWORD,
+ "interface", KEYWORD,
- "if", "keyword",
- "else", "keyword",
- "for", "keyword",
- "range", "keyword",
- "break", "keyword",
- "continue", "keyword",
- "switch", "keyword",
- "case", "keyword",
- "default", "keyword",
- "fallthrough", "keyword",
+ "if", KEYWORD,
+ "else", KEYWORD,
+ "for", KEYWORD,
+ "range", KEYWORD,
+ "break", KEYWORD,
+ "continue", KEYWORD,
+ "switch", KEYWORD,
+ "case", KEYWORD,
+ "default", KEYWORD,
+ "fallthrough", KEYWORD,
- "go", "keyword",
- "select", "keyword",
- "return", "keyword",
- "defer", "keyword",
+ "go", KEYWORD,
+ "select", KEYWORD,
+ "return", KEYWORD,
+ "defer", KEYWORD,
- "map", "datatype",
- "chan", "datatype",
- "string", "datatype",
- "error", "datatype",
- "bool", "datatype",
- "byte", "datatype",
- "int", "datatype",
- "int64", "datatype",
- "float64", "datatype",
+ "map", DATATYPE,
+ "chan", DATATYPE,
+ "string", DATATYPE,
+ "error", DATATYPE,
+ "bool", DATATYPE,
+ "byte", DATATYPE,
+ "int", DATATYPE,
+ "int64", DATATYPE,
+ "float64", DATATYPE,
- "len", "function",
- "cap", "function",
- "copy", "function",
- "append", "function",
- "msg", "function",
- "m", "function",
+ "len", FUNCTION,
+ "cap", FUNCTION,
+ "copy", FUNCTION,
+ "append", FUNCTION,
+ "msg", FUNCTION,
+ "m", FUNCTION,
- "nil", "string",
- "-1", "string",
- "0", "string",
- "1", "string",
- "2", "string",
+ "nil", STRING,
+ "-1", STRING,
+ "0", STRING,
+ "1", STRING,
+ "2", STRING,
),
),
)},
diff --git a/core/code/inner.go b/core/code/inner.go
index 25e87459..ffbff8b9 100644
--- a/core/code/inner.go
+++ b/core/code/inner.go
@@ -12,6 +12,19 @@ import (
"strings"
)
+const (
+ COMMENT = "comment"
+ KEYWORD = "keyword"
+ FUNCTION = "function"
+ DATATYPE = "datatype"
+ STRING = "string"
+)
+const (
+ SPLIT = "split"
+ PREFIX = "prefix"
+ SUFFIX = "suffix"
+)
+
func _inner_ext(name string) string {
return strings.ToLower(kit.Select(path.Base(name), strings.TrimPrefix(path.Ext(name), ".")))
}
@@ -28,7 +41,7 @@ func _inner_list(m *ice.Message, ext, file, dir string, arg ...string) {
return // 解析成功
}
- if m.Conf(INNER, kit.Keys("meta.source", ext)) == "true" {
+ if m.Conf(INNER, kit.Keys(kit.META_SOURCE, ext)) == "true" {
if m.Cmdy(nfs.CAT, path.Join(dir, file)); m.Result() != "" {
return
}
@@ -100,39 +113,38 @@ func init() {
),
"plug", kit.Dict(
"makefile", kit.Dict(
- "prefix", kit.Dict("#", "comment"),
- "suffix", kit.Dict(":", "comment"),
- "keyword", kit.Dict(
- "ifeq", "keyword",
- "ifneq", "keyword",
- "else", "keyword",
- "endif", "keyword",
+ PREFIX, kit.Dict("#", COMMENT),
+ SUFFIX, kit.Dict(":", COMMENT),
+ KEYWORD, kit.Dict(
+ "ifeq", KEYWORD,
+ "ifneq", KEYWORD,
+ "else", KEYWORD,
+ "endif", KEYWORD,
),
),
"py", kit.Dict(
- "prefix", kit.Dict("#", "comment"),
- "keyword", kit.Dict("print", "keyword"),
+ PREFIX, kit.Dict("#", COMMENT),
+ KEYWORD, kit.Dict("print", KEYWORD),
),
"csv", kit.Dict("display", true),
"json", kit.Dict("link", true),
"html", kit.Dict(
- "split", kit.Dict(
+ SPLIT, kit.Dict(
"space", " ",
"operator", "<>",
),
- "keyword", kit.Dict(
- "head", "keyword",
- "body", "keyword",
+ KEYWORD, kit.Dict(
+ "head", KEYWORD,
+ "body", KEYWORD,
),
),
"css", kit.Dict(
- "suffix", kit.Dict("{", "comment"),
+ SUFFIX, kit.Dict("{", COMMENT),
),
- "md", kit.Dict("display", true, "profile", true),
+ "md", kit.Dict(),
),
"show", kit.Dict(
- "sh", []string{"sh"},
"py", []string{"python"},
"js", []string{"node"},
),
diff --git a/core/code/js.go b/core/code/js.go
index ea990547..c5de7eb2 100644
--- a/core/code/js.go
+++ b/core/code/js.go
@@ -8,151 +8,120 @@ import (
"github.com/shylinux/icebergs/base/web"
kit "github.com/shylinux/toolkits"
- "net/http"
- "os"
"path"
- "strings"
)
-func _js_find(m *ice.Message, key string) {
- for _, p := range strings.Split(m.Cmdx(cli.SYSTEM, "find", ".", "-name", key), "\n") {
- if p == "" {
- continue
- }
- m.Push("file", strings.TrimPrefix(p, "./"))
- m.Push("line", 1)
- m.Push("text", "")
- }
-}
-func _js_grep(m *ice.Message, key string) {
- m.Split(m.Cmd(cli.SYSTEM, "grep", "--exclude-dir=.git", "--exclude=.[a-z]*", "-rn", key, ".").Append(cli.CMD_OUT), "file:line:text", ":", "\n")
-}
-
const JS = "js"
-const TS = "ts"
-const TSX = "tsx"
const CSS = "css"
const HTML = "html"
const NODE = "node"
func init() {
- Index.Register(&ice.Context{Name: JS, Help: "js",
+ Index.Register(&ice.Context{Name: JS, Help: "前端",
Commands: map[string]*ice.Command{
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
- m.Cmd(mdb.SEARCH, mdb.CREATE, JS, JS, c.Cap(ice.CTX_FOLLOW))
- m.Cmd(mdb.PLUGIN, mdb.CREATE, JS, JS, c.Cap(ice.CTX_FOLLOW))
- m.Cmd(mdb.RENDER, mdb.CREATE, JS, JS, c.Cap(ice.CTX_FOLLOW))
+ m.Cmd(mdb.PLUGIN, mdb.CREATE, JS, m.Prefix(JS))
+ m.Cmd(mdb.RENDER, mdb.CREATE, JS, m.Prefix(JS))
+ m.Cmd(mdb.SEARCH, mdb.CREATE, JS, m.Prefix(JS))
}},
- NODE: {Name: NODE, Help: "node", Action: map[string]*ice.Action{
- "install": {Name: "install", Help: "下载", Hand: func(m *ice.Message, arg ...string) {
- // 下载
- source := m.Conf(NODE, "meta.source")
- p := path.Join(m.Conf("web.code._install", "meta.path"), path.Base(source))
- if _, e := os.Stat(p); e != nil {
- msg := m.Cmd(web.SPIDE, "dev", web.CACHE, http.MethodGet, source)
- m.Cmd(web.CACHE, web.WATCH, msg.Append(web.DATA), p)
- }
-
- // 解压
- m.Option(cli.CMD_DIR, m.Conf("web.code._install", "meta.path"))
- m.Cmd(cli.SYSTEM, "tar", "xvf", path.Base(source))
- m.Echo(p)
- }},
- }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {}},
-
- JS: {Name: JS, Help: "js", Action: map[string]*ice.Action{
- mdb.SEARCH: {Name: "search type name text", Hand: func(m *ice.Message, arg ...string) {
- if arg[0] == kit.MDB_FOREACH {
- return
- }
- m.Option(cli.CMD_DIR, m.Option("_path"))
- _js_find(m, kit.Select("main", arg, 1))
- _js_grep(m, kit.Select("main", arg, 1))
- }},
+ JS: {Name: JS, Help: "前端", Action: map[string]*ice.Action{
mdb.PLUGIN: {Hand: func(m *ice.Message, arg ...string) {
m.Echo(m.Conf(JS, "meta.plug"))
}},
mdb.RENDER: {Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(nfs.CAT, path.Join(arg[2], arg[1]))
}},
- }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {}},
+ mdb.SEARCH: {Name: "search type name text", Hand: func(m *ice.Message, arg ...string) {
+ if arg[0] == kit.MDB_FOREACH {
+ return
+ }
+ m.Option(cli.CMD_DIR, kit.Select("src", arg, 2))
+ _go_find(m, kit.Select("main", arg, 1))
+ _go_grep(m, kit.Select("main", arg, 1))
+ }},
+ }},
+ NODE: {Name: "node", Help: "前端", Action: map[string]*ice.Action{
+ web.DOWNLOAD: {Name: "download", Help: "下载", Hand: func(m *ice.Message, arg ...string) {
+ m.Cmdy(INSTALL, m.Conf(NODE, kit.META_SOURCE))
+ }},
+ }},
},
Configs: map[string]*ice.Config{
- NODE: {Name: NODE, Help: "服务器", Value: kit.Data(
+ NODE: {Name: NODE, Help: "前端", Value: kit.Data(
"source", "https://nodejs.org/dist/v10.13.0/node-v10.13.0-linux-x64.tar.xz",
)},
JS: {Name: JS, Help: "js", Value: kit.Data(
"plug", kit.Dict(
- "split", kit.Dict(
+ SPLIT, kit.Dict(
"space", " \t",
"operator", "{[(&.,;!|<>)]}",
),
- "prefix", kit.Dict(
- "//", "comment",
- "/*", "comment",
- "*", "comment",
+ PREFIX, kit.Dict(
+ "//", COMMENT,
+ "/*", COMMENT,
+ "*", COMMENT,
),
- "keyword", kit.Dict(
- "var", "keyword",
- "new", "keyword",
- "delete", "keyword",
- "typeof", "keyword",
- "function", "keyword",
+ KEYWORD, kit.Dict(
+ "var", KEYWORD,
+ "new", KEYWORD,
+ "delete", KEYWORD,
+ "typeof", KEYWORD,
+ "function", KEYWORD,
- "if", "keyword",
- "else", "keyword",
- "for", "keyword",
- "while", "keyword",
- "break", "keyword",
- "continue", "keyword",
- "switch", "keyword",
- "case", "keyword",
- "default", "keyword",
- "return", "keyword",
+ "if", KEYWORD,
+ "else", KEYWORD,
+ "for", KEYWORD,
+ "while", KEYWORD,
+ "break", KEYWORD,
+ "continue", KEYWORD,
+ "switch", KEYWORD,
+ "case", KEYWORD,
+ "default", KEYWORD,
+ "return", KEYWORD,
- "window", "function",
- "console", "function",
- "document", "function",
- "arguments", "function",
- "event", "function",
- "Date", "function",
- "JSON", "function",
+ "window", FUNCTION,
+ "console", FUNCTION,
+ "document", FUNCTION,
+ "arguments", FUNCTION,
+ "event", FUNCTION,
+ "Date", FUNCTION,
+ "JSON", FUNCTION,
- "0", "string",
- "1", "string",
- "10", "string",
- "-1", "string",
- "true", "string",
- "false", "string",
- "undefined", "string",
- "null", "string",
+ "0", STRING,
+ "1", STRING,
+ "10", STRING,
+ "-1", STRING,
+ "true", STRING,
+ "false", STRING,
+ "undefined", STRING,
+ "null", STRING,
- "__proto__", "function",
- "setTimeout", "function",
- "createElement", "function",
- "appendChild", "function",
- "removeChild", "function",
- "parentNode", "function",
- "childNodes", "function",
+ "__proto__", FUNCTION,
+ "setTimeout", FUNCTION,
+ "createElement", FUNCTION,
+ "appendChild", FUNCTION,
+ "removeChild", FUNCTION,
+ "parentNode", FUNCTION,
+ "childNodes", FUNCTION,
- "Volcanos", "function",
- "request", "function",
- "require", "function",
+ "Volcanos", FUNCTION,
+ "request", FUNCTION,
+ "require", FUNCTION,
- "cb", "function",
- "cbs", "function",
- "shy", "function",
- "can", "function",
- "sub", "function",
- "msg", "function",
- "res", "function",
- "pane", "function",
- "plugin", "function",
+ "cb", FUNCTION,
+ "cbs", FUNCTION,
+ "shy", FUNCTION,
+ "can", FUNCTION,
+ "sub", FUNCTION,
+ "msg", FUNCTION,
+ "res", FUNCTION,
+ "pane", FUNCTION,
+ "plugin", FUNCTION,
- "-1", "string",
- "0", "string",
- "1", "string",
- "2", "string",
+ "-1", STRING,
+ "0", STRING,
+ "1", STRING,
+ "2", STRING,
),
),
)},
diff --git a/core/code/pack.go b/core/code/pack.go
index 2c143778..4a86c50a 100644
--- a/core/code/pack.go
+++ b/core/code/pack.go
@@ -7,8 +7,6 @@ import (
"github.com/shylinux/icebergs/base/nfs"
kit "github.com/shylinux/toolkits"
- "bufio"
- "bytes"
"fmt"
"io/ioutil"
"os"
@@ -20,12 +18,13 @@ func _pack_file(m *ice.Message, file string) string {
list := ""
if f, e := os.Open(file); e == nil {
defer f.Close()
+
if b, e := ioutil.ReadAll(f); e == nil {
list = fmt.Sprintf("%v", b)
}
}
- list = strings.ReplaceAll(list, " ", ",")
- if len(list) > 0 {
+
+ if list = strings.ReplaceAll(list, " ", ","); len(list) > 0 {
return fmt.Sprintf(`[]byte{%v}`, list[1:len(list)-1])
}
return "[]byte{}"
@@ -72,22 +71,57 @@ func _pack_contexts(m *ice.Message, pack *os.File) {
pack.WriteString("\n")
}
-const (
- WEBPACK = "webpack"
- BINPACK = "binpack"
- MODPACK = "modpack"
-)
+const WEBPACK = "webpack"
+const BINPACK = "binpack"
func init() {
Index.Merge(&ice.Context{
Commands: map[string]*ice.Command{
- WEBPACK: {Name: "webpack path auto 打包", Help: "打包", Action: map[string]*ice.Action{
- "pack": {Name: "pack", Help: "打包", Hand: func(m *ice.Message, arg ...string) {
+ BINPACK: {Name: "binpack path auto create", Help: "打包", Action: map[string]*ice.Action{
+ mdb.CREATE: {Name: "create name=demo from=src/main.go", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
+ name := kit.Keys(m.Option(kit.MDB_NAME), "go")
+ if pack, p, e := kit.Create(path.Join(m.Conf(PUBLISH, kit.META_PATH), BINPACK, name)); m.Assert(e) {
+ defer pack.Close()
+
+ pack.WriteString(m.Cmdx(nfs.CAT, m.Option("from")))
+
+ pack.WriteString("\n")
+ pack.WriteString(`func init() {` + "\n")
+ pack.WriteString(` ice.BinPack = map[string][]byte{` + "\n")
+
+ _pack_volcanos(m, pack, "usr/volcanos")
+ _pack_dir(m, pack, "usr/learning")
+ _pack_dir(m, pack, "usr/icebergs")
+ _pack_dir(m, pack, "usr/toolkits")
+ _pack_dir(m, pack, "usr/intshell")
+ _pack_contexts(m, pack)
+
+ pack.WriteString(` }` + "\n")
+ pack.WriteString(`}` + "\n")
+ m.Echo(p)
+ }
+
+ m.Option(cli.CMD_DIR, path.Join(m.Conf(PUBLISH, kit.META_PATH), BINPACK))
+ m.Cmd(COMPILE, "windows", "amd64", name)
+ m.Cmd(COMPILE, "darwin", "amd64", name)
+ m.Cmd(COMPILE, "linux", "amd64", name)
+ }},
+ }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
+ m.Option(nfs.DIR_ROOT, path.Join(m.Conf(PUBLISH, kit.META_PATH)))
+ m.Option(nfs.DIR_TYPE, nfs.FILE)
+
+ m.Cmdy(nfs.DIR, BINPACK).Table(func(index int, value map[string]string, head []string) {
+ m.PushDownload(value[kit.MDB_PATH])
+ })
+ }},
+
+ WEBPACK: {Name: "webpack path auto create", Help: "打包", Action: map[string]*ice.Action{
+ mdb.CREATE: {Name: "create name=demo", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
css, _, e := kit.Create(path.Join(m.Conf(WEBPACK, kit.META_PATH), "cache.css"))
m.Assert(e)
defer css.Close()
- js, p, e := kit.Create(path.Join(m.Conf(WEBPACK, kit.META_PATH), "cache.js"))
+ js, _, e := kit.Create(path.Join(m.Conf(WEBPACK, kit.META_PATH), "cache.js"))
m.Assert(e)
defer js.Close()
@@ -117,191 +151,59 @@ func init() {
js.WriteString(`_can_name = "` + path.Join("/", k) + "\"\n")
js.WriteString(m.Cmdx(nfs.CAT, k))
}
- m.Echo(p)
- }},
- }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
- m.Option(nfs.DIR_ROOT, m.Conf(PUBLISH, kit.META_PATH))
- m.Option(nfs.DIR_TYPE, nfs.FILE)
- m.Option(nfs.DIR_DEEP, true)
- if len(arg) == 0 {
- m.Cmdy(nfs.DIR, WEBPACK).Table(func(index int, value map[string]string, head []string) {
- // m.Push(kit.MDB_LINK, m.Cmdx(mdb.RENDER, web.RENDER.Download, "/publish/"+value[kit.MDB_PATH]))
- })
- return
- }
+ if f, _, e := kit.Create("usr/publish/webpack/" + m.Option("name") + ".js"); m.Assert(e) {
+ defer f.Close()
- m.Cmdy(nfs.CAT, arg[0])
- }},
- BINPACK: {Name: "binpack path auto 打包", Help: "打包", Action: map[string]*ice.Action{
- "pack": {Name: "pack", Help: "打包", Hand: func(m *ice.Message, arg ...string) {
- name := kit.Keys(kit.Select(m.Option(kit.MDB_NAME), "demo"), "go")
- if pack, p, e := kit.Create(path.Join(m.Conf(PUBLISH, kit.META_PATH), BINPACK, name)); m.Assert(e) {
- defer pack.Close()
+ f.WriteString(`Volcanos.meta.pack = ` + kit.Formats(kit.UnMarshal(kit.Select("{}", m.Option("content")))))
+ }
- pack.WriteString(m.Cmdx(nfs.CAT, "src/main.go"))
+ m.Option(nfs.DIR_ROOT, "")
+ if f, p, e := kit.Create("usr/publish/webpack/" + m.Option("name") + ".html"); m.Assert(e) {
+ f.WriteString(fmt.Sprintf(_pack,
+ m.Cmdx(nfs.CAT, "usr/volcanos/cache.css"),
+ m.Cmdx(nfs.CAT, "usr/volcanos/index.css"),
- pack.WriteString("\n")
- pack.WriteString(`func init() {` + "\n")
- pack.WriteString(` ice.BinPack = map[string][]byte{` + "\n")
-
- _pack_volcanos(m, pack, "usr/volcanos")
- _pack_dir(m, pack, "usr/learning")
- _pack_dir(m, pack, "usr/icebergs")
- _pack_dir(m, pack, "usr/intshell")
- _pack_contexts(m, pack)
-
- pack.WriteString(` }` + "\n")
- pack.WriteString(`}` + "\n")
+ m.Cmdx(nfs.CAT, "usr/volcanos/proto.js"),
+ m.Cmdx(nfs.CAT, "usr/volcanos/cache.js"),
+ m.Cmdx(nfs.CAT, "usr/publish/webpack/"+m.Option("name")+".js"),
+ m.Cmdx(nfs.CAT, "usr/volcanos/index.js"),
+ ))
m.Echo(p)
}
-
- m.Option(cli.CMD_DIR, path.Join(m.Conf(PUBLISH, kit.META_PATH), BINPACK))
- m.Cmd(COMPILE, "windows", "amd64", name)
- m.Cmd(COMPILE, "darwin", "amd64", name)
- m.Cmd(COMPILE, "linux", "amd64", name)
}},
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
m.Option(nfs.DIR_ROOT, m.Conf(PUBLISH, kit.META_PATH))
m.Option(nfs.DIR_TYPE, nfs.FILE)
m.Option(nfs.DIR_DEEP, true)
- m.Cmdy(nfs.DIR, BINPACK).Table(func(index int, value map[string]string, head []string) {
- // m.Push(kit.MDB_LINK, m.Cmdx(mdb.RENDER, web.RENDER.Download, "/publish/"+value[kit.MDB_PATH]))
+ m.Cmdy(nfs.DIR, WEBPACK).Table(func(index int, value map[string]string, head []string) {
+ m.PushDownload(path.Join(m.Option(nfs.DIR_ROOT), value[kit.MDB_PATH]))
})
}},
- MODPACK: {Name: "modpack path=auto auto 创建", Help: "打包", Meta: kit.Dict(
- "style", "editor", "创建", kit.List("_input", "text", "name", "name"),
- ), Action: map[string]*ice.Action{
- mdb.CREATE: {Name: "create", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
- m.Option("name", "hi")
- m.Option("help", "hello")
- for i := 0; i < len(arg)-1; i += 2 {
- m.Option(arg[i], arg[i+1])
- }
-
- // 生成文件
- name := m.Option(kit.MDB_NAME)
- os.Mkdir(path.Join("src/", name), ice.MOD_DIR)
- kit.Fetch(m.Confv(MODPACK, "meta.base"), func(key string, value string) {
- p := path.Join("src/", name, name+"."+key)
- if _, e := os.Stat(p); e != nil && os.IsNotExist(e) {
- if f, p, e := kit.Create(p); m.Assert(e) {
- if b, e := kit.Render(value, m); m.Assert(e) {
- if n, e := f.Write(b); m.Assert(e) {
- m.Log_EXPORT(kit.MDB_FILE, p, kit.MDB_SIZE, n)
- }
- }
- }
- }
- })
- defer m.Cmdy(nfs.DIR, "src/"+name)
-
- // 模块名称
- mod := ""
- if f, e := os.Open("go.mod"); e == nil {
- defer f.Close()
- for bio := bufio.NewScanner(f); bio.Scan(); {
- if strings.HasPrefix(bio.Text(), "module") {
- mod = strings.Split(bio.Text(), " ")[1]
- break
- }
- }
- }
-
- // 检查模块
- begin, has := false, false
- if f, e := os.Open("src/main.go"); e == nil {
- for bio := bufio.NewScanner(f); bio.Scan(); {
- if strings.HasPrefix(strings.TrimSpace(bio.Text()), "//") {
- continue
- }
- if strings.HasPrefix(bio.Text(), "import") {
- if strings.Contains(bio.Text(), mod+"/src/"+name) {
- has = true
- }
- continue
- }
- if strings.HasPrefix(bio.Text(), "import (") {
- begin = true
- continue
- }
- if strings.HasPrefix(bio.Text(), ")") {
- begin = false
- continue
- }
- if begin {
- if strings.Contains(bio.Text(), mod+"/src/"+name) {
- has = true
- }
- }
- }
- f.Close()
- }
- if has {
- return
- }
-
- // 插入模块
- if f, e := os.Open("src/main.go"); m.Assert(e) {
- defer f.Close()
- if b, e := ioutil.ReadAll(f); m.Assert(e) {
- if f, e := os.Create("src/main.go"); m.Assert(e) {
- defer f.Close()
-
- for bio := bufio.NewScanner(bytes.NewBuffer(b)); bio.Scan(); {
- f.WriteString(bio.Text())
- f.WriteString("\n")
- if strings.HasPrefix(bio.Text(), "import (") {
- m.Info("src/main.go import: %v", mod+"/src/"+name)
- f.WriteString("\t_ \"" + mod + "/src/" + name + `"`)
- f.WriteString("\n\n")
- }
- }
- }
- }
- }
- }},
- }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
- m.Option(nfs.DIR_ROOT, "src")
- if m.Cmdy(nfs.DIR, kit.Select("", arg, 0)); len(m.Resultv()) > 0 {
- m.Option("_display", "/plugin/local/code/inner.js")
- }
- }},
},
Configs: map[string]*ice.Config{
- WEBPACK: {Name: WEBPACK, Help: "webpack", Value: kit.Data(
- kit.MDB_PATH, "usr/volcanos",
- )},
+ WEBPACK: {Name: WEBPACK, Help: "webpack", Value: kit.Data(kit.MDB_PATH, "usr/volcanos")},
BINPACK: {Name: BINPACK, Help: "binpack", Value: kit.Data()},
- MODPACK: {Name: MODPACK, Help: "modpack", Value: kit.Data(
- "base", kit.Dict(
- "shy", `title {{.Option "name"}}
-`,
- "go", `package {{.Option "name"}}
-
-import (
- ice "github.com/shylinux/icebergs"
- "github.com/shylinux/icebergs/base/web"
- "github.com/shylinux/icebergs/core/chat"
- kit "github.com/shylinux/toolkits"
-)
-
-var Index = &ice.Context{Name: "{{.Option "name"}}", Help: "{{.Option "help"}}",
- Configs: map[string]*ice.Config{
- "{{.Option "name"}}": {Name: "{{.Option "name"}}", Help: "{{.Option "help"}}", Value: kit.Data()},
- },
- Commands: map[string]*ice.Command{
- "{{.Option "name"}}": {Name: "{{.Option "name"}}", Help: "{{.Option "help"}}", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
- m.Echo("hello {{.Option "name"}} world")
- }},
- },
-}
-
-func init() { chat.Index.Register(Index, &web.Frame{}) }
-`,
- ),
- )},
},
}, nil)
}
+
+const _pack = `
+
+
+
+
+ volcanos
+
+
+
+
+
+
+
+
+
+
+
+`
diff --git a/core/code/pprof.go b/core/code/pprof.go
index 0eb929f8..79332b88 100644
--- a/core/code/pprof.go
+++ b/core/code/pprof.go
@@ -25,12 +25,12 @@ const PPROF = "pprof"
func init() {
Index.Merge(&ice.Context{
Configs: map[string]*ice.Config{
- PPROF: {Name: "pprof", Help: "性能分析", Value: kit.Data(kit.MDB_SHORT, kit.MDB_ZONE,
+ PPROF: {Name: PPROF, Help: "性能分析", Value: kit.Data(kit.MDB_SHORT, kit.MDB_ZONE,
PPROF, []string{"go", "tool", "pprof"},
)},
},
Commands: map[string]*ice.Command{
- PPROF: {Name: "pprof zone=auto id=auto auto create", Help: "性能分析", Action: map[string]*ice.Action{
+ PPROF: {Name: "pprof zone id auto create", Help: "性能分析", Action: map[string]*ice.Action{
mdb.CREATE: {Name: "create zone binnary service seconds", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(mdb.INSERT, PPROF, "", mdb.HASH, arg)
}},
@@ -38,7 +38,11 @@ func init() {
m.Cmdy(mdb.INSERT, PPROF, _sub_key(m, m.Option(kit.MDB_ZONE)), mdb.LIST, arg[2:])
}},
mdb.MODIFY: {Name: "modify", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
- m.Cmdy(mdb.MODIFY, PPROF, _sub_key(m, m.Option(kit.MDB_ZONE)), mdb.LIST, kit.MDB_ID, m.Option(kit.MDB_ID), arg)
+ if m.Option(kit.MDB_ID) != "" {
+ m.Cmdy(mdb.MODIFY, PPROF, _sub_key(m, m.Option(kit.MDB_ZONE)), mdb.LIST, kit.MDB_ID, m.Option(kit.MDB_ID), arg)
+ } else {
+ m.Cmdy(mdb.MODIFY, PPROF, "", mdb.HASH, kit.MDB_ZONE, m.Option(kit.MDB_ZONE), arg)
+ }
}},
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(mdb.DELETE, PPROF, "", mdb.HASH, kit.MDB_ZONE, m.Option(kit.MDB_ZONE))
diff --git a/core/code/sh.go b/core/code/sh.go
index e89a9a0e..ac667fa2 100644
--- a/core/code/sh.go
+++ b/core/code/sh.go
@@ -13,24 +13,15 @@ import (
const SH = "sh"
func init() {
- Index.Register(&ice.Context{Name: SH, Help: "sh",
+ Index.Register(&ice.Context{Name: SH, Help: "命令",
Commands: map[string]*ice.Command{
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
- m.Cmd(mdb.SEARCH, mdb.CREATE, SH, SH, c.Cap(ice.CTX_FOLLOW))
m.Cmd(mdb.PLUGIN, mdb.CREATE, SH, SH, c.Cap(ice.CTX_FOLLOW))
m.Cmd(mdb.RENDER, mdb.CREATE, SH, SH, c.Cap(ice.CTX_FOLLOW))
m.Cmd(mdb.ENGINE, mdb.CREATE, SH, SH, c.Cap(ice.CTX_FOLLOW))
+ m.Cmd(mdb.SEARCH, mdb.CREATE, SH, SH, c.Cap(ice.CTX_FOLLOW))
}},
- SH: {Name: SH, Help: "sh", Action: map[string]*ice.Action{
- mdb.SEARCH: {Name: "search type name text", Hand: func(m *ice.Message, arg ...string) {
- if arg[0] == kit.MDB_FOREACH {
- return
- }
- m.Option(cli.CMD_DIR, m.Option("_path"))
- _c_find(m, kit.Select("main", arg, 1))
- m.Cmdy(mdb.SEARCH, "man1", arg[1:])
- _c_grep(m, kit.Select("main", arg, 1))
- }},
+ SH: {Name: SH, Help: "命令", Action: map[string]*ice.Action{
mdb.PLUGIN: {Hand: func(m *ice.Message, arg ...string) {
m.Echo(m.Conf(SH, "meta.plug"))
}},
@@ -39,65 +30,75 @@ func init() {
}},
mdb.ENGINE: {Hand: func(m *ice.Message, arg ...string) {
m.Option(cli.CMD_DIR, arg[2])
- m.Cmdy(cli.SYSTEM, "sh", arg[1])
+ m.Cmdy(cli.SYSTEM, SH, arg[1])
m.Set(ice.MSG_APPEND)
}},
+ mdb.SEARCH: {Hand: func(m *ice.Message, arg ...string) {
+ if arg[0] == kit.MDB_FOREACH {
+ return
+ }
+ m.Option(cli.CMD_DIR, kit.Select("src", arg, 2))
+ _go_find(m, kit.Select("main", arg, 1))
+ m.Cmdy(mdb.SEARCH, MAN1, arg[1:])
+ m.Cmdy(mdb.SEARCH, MAN8, arg[1:])
+ _go_grep(m, kit.Select("main", arg, 1))
+ }},
- "man": {Hand: func(m *ice.Message, arg ...string) {
+ MAN: {Hand: func(m *ice.Message, arg ...string) {
m.Echo(_c_help(m, arg[0], arg[1]))
}},
- }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {}},
+ }},
},
Configs: map[string]*ice.Config{
- SH: {Name: SH, Help: "sh", Value: kit.Data(
+ SH: {Name: SH, Help: "命令", Value: kit.Data(
"plug", kit.Dict(
- "split", kit.Dict(
+ SPLIT, kit.Dict(
"space", " ",
"operator", "{[(.,;!|<>)]}",
),
- "prefix", kit.Dict(
- "#", "comment",
+ PREFIX, kit.Dict(
+ "#", COMMENT,
),
- "suffix", kit.Dict(
- "{", "comment",
+ SUFFIX, kit.Dict(
+ "{", COMMENT,
),
- "keyword", kit.Dict(
- "export", "keyword",
- "source", "keyword",
- "require", "keyword",
+ KEYWORD, kit.Dict(
+ "export", KEYWORD,
+ "source", KEYWORD,
+ "require", KEYWORD,
- "if", "keyword",
- "then", "keyword",
- "else", "keyword",
- "fi", "keyword",
- "for", "keyword",
- "while", "keyword",
- "do", "keyword",
- "done", "keyword",
- "esac", "keyword",
- "case", "keyword",
- "in", "keyword",
- "return", "keyword",
+ "if", KEYWORD,
+ "then", KEYWORD,
+ "else", KEYWORD,
+ "fi", KEYWORD,
+ "for", KEYWORD,
+ "while", KEYWORD,
+ "do", KEYWORD,
+ "done", KEYWORD,
+ "esac", KEYWORD,
+ "case", KEYWORD,
+ "in", KEYWORD,
+ "return", KEYWORD,
- "shift", "keyword",
- "local", "keyword",
- "echo", "keyword",
- "eval", "keyword",
- "kill", "keyword",
- "let", "keyword",
- "cd", "keyword",
+ "shift", KEYWORD,
+ "local", KEYWORD,
+ "echo", KEYWORD,
+ "eval", KEYWORD,
+ "kill", KEYWORD,
+ "let", KEYWORD,
+ "cd", KEYWORD,
- "xargs", "function",
- "date", "function",
- "find", "function",
- "grep", "function",
- "sed", "function",
- "awk", "function",
- "pwd", "function",
- "ps", "function",
- "ls", "function",
- "rm", "function",
- "go", "function",
+ "xargs", FUNCTION,
+ "date", FUNCTION,
+ "find", FUNCTION,
+ "grep", FUNCTION,
+ "sed", FUNCTION,
+ "awk", FUNCTION,
+ "pwd", FUNCTION,
+ "ps", FUNCTION,
+ "ls", FUNCTION,
+ "rm", FUNCTION,
+ "go", FUNCTION,
),
),
)},
diff --git a/core/code/shy.go b/core/code/shy.go
index 0cb4801a..0c13d028 100644
--- a/core/code/shy.go
+++ b/core/code/shy.go
@@ -13,23 +13,15 @@ import (
const SHY = "shy"
func init() {
- Index.Register(&ice.Context{Name: SHY, Help: "shy",
+ Index.Register(&ice.Context{Name: SHY, Help: "脚本",
Commands: map[string]*ice.Command{
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
- m.Cmd(mdb.SEARCH, mdb.CREATE, SHY, SHY, c.Cap(ice.CTX_FOLLOW))
m.Cmd(mdb.PLUGIN, mdb.CREATE, SHY, SHY, c.Cap(ice.CTX_FOLLOW))
m.Cmd(mdb.RENDER, mdb.CREATE, SHY, SHY, c.Cap(ice.CTX_FOLLOW))
m.Cmd(mdb.ENGINE, mdb.CREATE, SHY, SHY, c.Cap(ice.CTX_FOLLOW))
+ m.Cmd(mdb.SEARCH, mdb.CREATE, SHY, SHY, c.Cap(ice.CTX_FOLLOW))
}},
- SHY: {Name: SHY, Help: "shy", Action: map[string]*ice.Action{
- mdb.SEARCH: {Name: "search type name text", Hand: func(m *ice.Message, arg ...string) {
- if arg[0] == kit.MDB_FOREACH {
- return
- }
- m.Option(cli.CMD_DIR, m.Option("_path"))
- _c_find(m, kit.Select("main", arg, 1))
- _c_grep(m, kit.Select("main", arg, 1))
- }},
+ SHY: {Name: SHY, Help: "脚本", Action: map[string]*ice.Action{
mdb.PLUGIN: {Hand: func(m *ice.Message, arg ...string) {
m.Echo(m.Conf(SHY, "meta.plug"))
}},
@@ -39,20 +31,28 @@ func init() {
mdb.ENGINE: {Hand: func(m *ice.Message, arg ...string) {
m.Cmdy("web.wiki.word", path.Join(arg[2], arg[1]))
}},
- }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {}},
+ mdb.SEARCH: {Hand: func(m *ice.Message, arg ...string) {
+ if arg[0] == kit.MDB_FOREACH {
+ return
+ }
+ m.Option(cli.CMD_DIR, kit.Select("src", arg, 2))
+ _go_find(m, kit.Select("main", arg, 1))
+ _go_grep(m, kit.Select("main", arg, 1))
+ }},
+ }},
},
Configs: map[string]*ice.Config{
- SHY: {Name: SHY, Help: "shy", Value: kit.Data(
+ SHY: {Name: SHY, Help: "脚本", Value: kit.Data(
"plug", kit.Dict(
- "prefix", kit.Dict("#", "comment"),
- "keyword", kit.Dict(
- "title", "keyword",
- "chapter", "keyword",
- "section", "keyword",
- "refer", "keyword",
- "field", "keyword",
- "label", "keyword",
- "chain", "keyword",
+ PREFIX, kit.Dict("#", COMMENT),
+ KEYWORD, kit.Dict(
+ "title", KEYWORD,
+ "chapter", KEYWORD,
+ "section", KEYWORD,
+ "refer", KEYWORD,
+ "field", KEYWORD,
+ "label", KEYWORD,
+ "chain", KEYWORD,
),
),
)},
diff --git a/core/code/upgrade.go b/core/code/upgrade.go
index 605be0b8..f92a079b 100644
--- a/core/code/upgrade.go
+++ b/core/code/upgrade.go
@@ -16,8 +16,8 @@ func init() {
Configs: map[string]*ice.Config{
UPGRADE: {Name: UPGRADE, Help: "升级", Value: kit.Dict(kit.MDB_HASH, kit.Dict(
kit.MDB_PATH, "usr/upgrade", "system", kit.Dict(kit.MDB_LIST, kit.List(
- kit.MDB_INPUT, "bin", "file", "ice.bin", "path", "bin/ice.bin",
- kit.MDB_INPUT, "bin", "file", "ice.sh", "path", "bin/ice.sh",
+ kit.MDB_INPUT, "bin", kit.MDB_FILE, "ice.sh", kit.MDB_PATH, "bin/ice.sh",
+ kit.MDB_INPUT, "bin", kit.MDB_FILE, "ice.bin", kit.MDB_PATH, "bin/ice.bin",
)),
))},
},