forked from x/icebergs
opt render
This commit is contained in:
parent
d2c1f62102
commit
1e654f3f94
@ -21,7 +21,7 @@ func init() {
|
||||
FOREVER: {Name: "forever", Help: "启动", Action: map[string]*ice.Action{
|
||||
SERVE: {Name: "serve", Help: "服务", Hand: func(m *ice.Message, arg ...string) {
|
||||
env := []string{PATH, BinPath(), HOME, kit.Select(kit.Path(""), os.Getenv(HOME))}
|
||||
for _, k := range []string{SHELL, CTX_SHY, CTX_DEV, CTX_OPS, CTX_ARG, CTX_PID, CTX_USER, CTX_SHARE, CTX_RIVER} {
|
||||
for _, k := range []string{TERM, SHELL, CTX_SHY, CTX_DEV, CTX_OPS, CTX_ARG, CTX_PID, CTX_USER, CTX_SHARE, CTX_RIVER} {
|
||||
if kit.Env(k) != "" {
|
||||
env = append(env, k, kit.Env(k))
|
||||
}
|
||||
|
@ -120,6 +120,7 @@ const (
|
||||
)
|
||||
const (
|
||||
SHELL = "SHELL"
|
||||
TERM = "TERM"
|
||||
USER = "USER"
|
||||
HOME = "HOME"
|
||||
PATH = "PATH"
|
||||
|
@ -13,6 +13,8 @@ func init() {
|
||||
}, Commands: map[string]*ice.Command{
|
||||
ENGINE: {Name: "engine type name text auto", Help: "引擎", Action: ice.MergeAction(map[string]*ice.Action{
|
||||
CREATE: {Name: "create type name text", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Option(NAME, kit.Select(m.Option(TYPE), m.Option(NAME)))
|
||||
m.Option(TYPE, kit.Ext(m.Option(TYPE)))
|
||||
m.Cmdy(INSERT, m.PrefixKey(), "", HASH, m.OptionSimple("type,name,text"))
|
||||
}},
|
||||
}, HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
|
@ -13,6 +13,8 @@ func init() {
|
||||
}, Commands: map[string]*ice.Command{
|
||||
PLUGIN: {Name: "plugin type name text auto", Help: "插件", Action: map[string]*ice.Action{
|
||||
CREATE: {Name: "create type name text", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Option(NAME, kit.Select(m.Option(TYPE), m.Option(NAME)))
|
||||
m.Option(TYPE, kit.Ext(m.Option(TYPE)))
|
||||
m.Cmdy(INSERT, m.PrefixKey(), "", HASH, m.OptionSimple("type,name,text"))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
@ -24,6 +26,9 @@ func init() {
|
||||
}
|
||||
if HashSelect(m, arg...); len(arg) == 0 {
|
||||
m.Sort(TYPE)
|
||||
} else if len(arg) == 1 {
|
||||
m.DisplayStory("json.js")
|
||||
m.Echo(kit.Formats(m.Confv(m.Append(NAME), "meta.plug")))
|
||||
}
|
||||
}},
|
||||
}})
|
||||
|
@ -13,6 +13,8 @@ func init() {
|
||||
}, Commands: map[string]*ice.Command{
|
||||
RENDER: {Name: "render type name text auto", Help: "渲染", Action: map[string]*ice.Action{
|
||||
CREATE: {Name: "create type name text", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Option(NAME, kit.Select(m.Option(TYPE), m.Option(NAME)))
|
||||
m.Option(TYPE, kit.Ext(m.Option(TYPE)))
|
||||
m.Cmdy(INSERT, m.PrefixKey(), "", HASH, m.OptionSimple("type,name,text"))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
@ -24,6 +26,9 @@ func init() {
|
||||
}
|
||||
if HashSelect(m, arg...); len(arg) == 0 {
|
||||
m.Sort(TYPE)
|
||||
} else if len(arg) == 1 {
|
||||
m.DisplayStory("json.js")
|
||||
m.Echo(kit.Formats(m.Confv(m.Append(NAME), "meta.plug")))
|
||||
}
|
||||
}},
|
||||
}})
|
||||
|
@ -13,6 +13,8 @@ func init() {
|
||||
}, Commands: map[string]*ice.Command{
|
||||
SEARCH: {Name: "search type name text auto", Help: "搜索", Action: map[string]*ice.Action{
|
||||
CREATE: {Name: "create type name text", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Option(NAME, kit.Select(m.Option(TYPE), m.Option(NAME)))
|
||||
m.Option(TYPE, kit.Ext(m.Option(TYPE)))
|
||||
m.Cmdy(INSERT, m.PrefixKey(), "", HASH, m.OptionSimple("type,name,text"))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
|
@ -110,7 +110,8 @@ func (f *Frame) alias(m *ice.Message, ls []string) []string {
|
||||
return ls
|
||||
}
|
||||
func (f *Frame) parse(m *ice.Message, line string) string {
|
||||
for _, one := range kit.Split(line, ";", ";", ";") {
|
||||
// for _, one := range kit.Split(line, ";", ";", ";") {
|
||||
for _, one := range kit.Simple(line) {
|
||||
msg := m.Spawn(f.target)
|
||||
ls := f.change(msg, f.alias(msg, kit.Split(strings.TrimSpace(one))))
|
||||
if len(ls) == 0 {
|
||||
|
@ -76,6 +76,7 @@ func _dream_show(m *ice.Message, name string) {
|
||||
m.Optionv(cli.CMD_ENV, kit.Simple(
|
||||
cli.CTX_OPS, "http://:"+m.Cmd(SERVE, ice.OptionFields("")).Append(tcp.PORT),
|
||||
cli.PATH, cli.BinPath(kit.Path(p, ice.BIN)), cli.HOME, kit.Env(cli.HOME),
|
||||
cli.SHELL, kit.Env(cli.SHELL), cli.TERM, kit.Env(cli.TERM),
|
||||
cli.USER, ice.Info.UserName, m.Configv(cli.ENV),
|
||||
))
|
||||
m.Optionv(cli.CMD_OUTPUT, path.Join(p, ice.BIN_BOOT_LOG))
|
||||
|
@ -348,6 +348,11 @@ func init() {
|
||||
return
|
||||
}
|
||||
}
|
||||
if strings.HasPrefix(arg[0], "ice.") && m.Option(ice.POD) != "" {
|
||||
aaa.UserRoot(m)
|
||||
_share_local(m, "bin/ice.bin")
|
||||
return
|
||||
}
|
||||
_share_local(m, m.Conf(SERVE, kit.Keym(ice.PUBLISH)), path.Join(arg...))
|
||||
}},
|
||||
"/help/": {Name: "/help/", Help: "帮助", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
|
@ -80,7 +80,7 @@ func _share_local(m *ice.Message, arg ...string) {
|
||||
}
|
||||
|
||||
// 上传文件
|
||||
m.Cmdy(SPACE, m.Option(ice.POD), SPIDE, ice.DEV, SPIDE_RAW, m.MergeURL2(SHARE_PROXY, nfs.PATH, ""),
|
||||
m.Cmd(SPACE, m.Option(ice.POD), SPIDE, ice.DEV, SPIDE_RAW, m.MergeURL2(SHARE_PROXY, nfs.PATH, ""),
|
||||
SPIDE_PART, m.OptionSimple(ice.POD), nfs.PATH, p, CACHE, cache.Format(ice.MOD_TIME), UPLOAD, "@"+p)
|
||||
|
||||
if s, e := os.Stat(pp); e == nil && !s.IsDir() {
|
||||
@ -88,7 +88,7 @@ func _share_local(m *ice.Message, arg ...string) {
|
||||
}
|
||||
}
|
||||
if strings.HasSuffix(p, path.Join(ice.USR_PUBLISH, ice.ORDER_JS)) {
|
||||
if _, e := os.Stat(p); os.IsNotExist(e) {
|
||||
if !kit.FileExists(p) {
|
||||
m.RenderResult("")
|
||||
return
|
||||
}
|
||||
|
@ -60,7 +60,7 @@ func _inner_make(m *ice.Message, msg *ice.Message) {
|
||||
|
||||
func LoadPlug(m *ice.Message, language ...string) {
|
||||
for _, language := range language {
|
||||
m.Conf(nfs.CAT, kit.Keym(nfs.SOURCE, language), ice.TRUE)
|
||||
m.Conf(nfs.CAT, kit.Keym(nfs.SOURCE, kit.Ext(language)), ice.TRUE)
|
||||
m.Confm(language, kit.Keym(PLUG, PREPARE), func(key string, value interface{}) {
|
||||
for _, v := range kit.Simple(value) {
|
||||
m.Conf(language, kit.Keym(PLUG, KEYWORD, v), key)
|
||||
|
@ -1,6 +1,7 @@
|
||||
package wiki
|
||||
|
||||
import (
|
||||
"path"
|
||||
"strings"
|
||||
|
||||
ice "shylinux.com/x/icebergs"
|
||||
@ -10,7 +11,7 @@ import (
|
||||
kit "shylinux.com/x/toolkits"
|
||||
)
|
||||
|
||||
func Parse(m *ice.Message, meta string, key string, arg ...string) *ice.Message {
|
||||
func Parse(m *ice.Message, meta string, key string, arg ...string) (data interface{}) {
|
||||
list := []string{}
|
||||
for _, line := range kit.Split(strings.Join(arg, ice.SP), ice.NL) {
|
||||
ls := kit.Split(line)
|
||||
@ -23,13 +24,13 @@ func Parse(m *ice.Message, meta string, key string, arg ...string) *ice.Message
|
||||
list = append(list, ls...)
|
||||
}
|
||||
|
||||
switch data := kit.Parse(nil, "", list...); meta {
|
||||
switch data = kit.Parse(nil, "", list...); meta {
|
||||
case ice.MSG_OPTION:
|
||||
m.Option(key, data)
|
||||
case ice.MSG_APPEND:
|
||||
m.Append(key, data)
|
||||
}
|
||||
return m
|
||||
return data
|
||||
}
|
||||
func _field_show(m *ice.Message, name, text string, arg ...string) {
|
||||
// 命令参数
|
||||
@ -47,17 +48,13 @@ func _field_show(m *ice.Message, name, text string, arg ...string) {
|
||||
// 扩展参数
|
||||
for i := 0; i < len(arg)-1; i += 2 {
|
||||
if strings.HasPrefix(arg[i], "opts.") {
|
||||
m.Option(arg[i], strings.TrimSpace(arg[i+1]))
|
||||
kit.Value(meta, arg[i], m.Option(arg[i]))
|
||||
kit.Value(meta, arg[i], m.Optionv(arg[i], strings.TrimSpace(arg[i+1])))
|
||||
} else if strings.HasPrefix(arg[i], "args.") {
|
||||
m.Option(arg[i], strings.TrimSpace(arg[i+1]))
|
||||
kit.Value(meta, arg[i], m.Option(arg[i]))
|
||||
kit.Value(meta, arg[i], m.Optionv(arg[i], strings.TrimSpace(arg[i+1])))
|
||||
} else if strings.HasPrefix(arg[i], ARGS) {
|
||||
m.Option(arg[i], kit.Split(strings.TrimSuffix(strings.TrimPrefix(arg[i+1], "["), "]")))
|
||||
kit.Value(meta, arg[i], m.Optionv(arg[i]))
|
||||
kit.Value(meta, arg[i], m.Optionv(arg[i], kit.Split(strings.TrimSuffix(strings.TrimPrefix(arg[i+1], "["), "]"))))
|
||||
} else {
|
||||
Parse(m, ice.MSG_OPTION, arg[i], arg[i+1])
|
||||
kit.Value(meta, arg[i], m.Optionv(arg[i]))
|
||||
kit.Value(meta, arg[i], Parse(m, ice.MSG_OPTION, arg[i], arg[i+1]))
|
||||
}
|
||||
|
||||
switch arg[i] {
|
||||
@ -65,9 +62,17 @@ func _field_show(m *ice.Message, name, text string, arg ...string) {
|
||||
meta[arg[i]] = arg[i+1]
|
||||
|
||||
case SPARK:
|
||||
if arg[i+1][0] == '@' && kit.FileExists(arg[i+1][1:]) {
|
||||
msg.Cmdy(nfs.CAT, arg[i+1][1:])
|
||||
} else {
|
||||
msg.Echo(strings.TrimSpace(arg[i+1]))
|
||||
meta["msg"] = msg.FormatMeta()
|
||||
}
|
||||
|
||||
kit.Value(meta, kit.Keys(FEATURE, "mode"), "simple")
|
||||
if meta["msg"] = msg.FormatMeta(); text == "web.code.inner" {
|
||||
meta["plug"] = kit.UnMarshal(m.Cmdx(mdb.PLUGIN, kit.Ext(name)))
|
||||
kit.Value(meta, ARGS, kit.List(path.Dir(name)+ice.PS, path.Base(name)))
|
||||
}
|
||||
|
||||
case TABLE:
|
||||
ls := kit.Split(arg[i+1], ice.NL, ice.NL, ice.NL)
|
||||
@ -98,8 +103,7 @@ func _field_show(m *ice.Message, name, text string, arg ...string) {
|
||||
meta[INPUTS] = list
|
||||
}
|
||||
default:
|
||||
msg.Option(arg[i], arg[i+1])
|
||||
kit.Value(meta, kit.Keys(FEATURE, arg[i]), arg[i+1])
|
||||
kit.Value(meta, kit.Keys(FEATURE, arg[i]), msg.Optionv(arg[i], arg[i+1]))
|
||||
}
|
||||
}
|
||||
m.Option(mdb.META, meta)
|
||||
|
8
init.go
8
init.go
@ -111,11 +111,11 @@ func Run(arg ...string) string {
|
||||
|
||||
switch Index.Merge(Index).Begin(Pulse.Spawn(), arg...); kit.Select("", arg, 0) {
|
||||
case SERVE, SPACE: // 启动服务
|
||||
switch path.Base(os.Getenv("SHELL")) {
|
||||
case "", ".":
|
||||
Info.Colors = false
|
||||
default:
|
||||
switch strings.Split(os.Getenv("TERM"), "-")[0] {
|
||||
case "xterm", "screen":
|
||||
Info.Colors = true
|
||||
default:
|
||||
Info.Colors = false
|
||||
}
|
||||
if log.LogDisable = false; Index.Start(Pulse, arg...) {
|
||||
Pulse.TryCatch(Pulse, true, func(Pulse *Message) { Index.wg.Wait() })
|
||||
|
@ -136,13 +136,10 @@ func (m *Message) ToastProcess(arg ...interface{}) func() {
|
||||
arg = append(arg, "-1")
|
||||
}
|
||||
m.Toast(PROCESS, arg...)
|
||||
return func() {
|
||||
m.Debug("what ----- %v", 123)
|
||||
m.Toast(SUCCESS, arg...)
|
||||
}
|
||||
return func() { m.Toast(SUCCESS) }
|
||||
}
|
||||
func (m *Message) ToastRestart(arg ...interface{}) { m.Toast(RESTART, arg...) }
|
||||
func (m *Message) ToastFailure(arg ...interface{}) { m.Toast(SUCCESS, arg...) }
|
||||
func (m *Message) ToastFailure(arg ...interface{}) { m.Toast(FAILURE, arg...) }
|
||||
func (m *Message) ToastSuccess(arg ...interface{}) { m.Toast(SUCCESS, arg...) }
|
||||
func (m *Message) Toast(text string, arg ...interface{}) { // [title [duration [progress]]]
|
||||
if len(arg) > 1 {
|
||||
|
@ -223,6 +223,9 @@ func (m *Message) EchoDownload(arg ...interface{}) *Message { // [name] file
|
||||
}
|
||||
|
||||
func (m *Message) DisplayBase(file string, arg ...interface{}) *Message {
|
||||
if !strings.Contains(file, PT) {
|
||||
file += ".js"
|
||||
}
|
||||
m.Option(MSG_DISPLAY, kit.MergeURL(DisplayBase(file)[DISPLAY], arg...))
|
||||
return m
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user