diff --git a/base/cli/daemon.go b/base/cli/daemon.go index 277d55d8..db22f670 100644 --- a/base/cli/daemon.go +++ b/base/cli/daemon.go @@ -32,16 +32,20 @@ func _daemon_exec(m *ice.Message, cmd *exec.Cmd) { m.OptionSimple(CMD_OUTPUT, CMD_ERRPUT, mdb.CACHE_CLEAR_ON_EXIT), ) - if e := cmd.Wait(); m.Warn(e, ice.ErrNotStart, cmd.Args) { + if e := cmd.Wait(); !m.Warn(e, ice.ErrNotStart, cmd.Args) && cmd.ProcessState.ExitCode() == 0 { + m.Cost(CODE, cmd.ProcessState.ExitCode(), ctx.ARGS, cmd.Args) + m.Cmd(mdb.MODIFY, DAEMON, "", mdb.HASH, mdb.HASH, h, STATUS, STOP) + } else { if m.Conf(DAEMON, kit.Keys(mdb.HASH, h, kit.Keym(STATUS))) == START { m.Cmd(mdb.MODIFY, DAEMON, "", mdb.HASH, mdb.HASH, h, STATUS, ERROR, ERROR, e) } - } else { - m.Cost(CODE, cmd.ProcessState.ExitCode(), ctx.ARGS, cmd.Args) - m.Cmd(mdb.MODIFY, DAEMON, "", mdb.HASH, mdb.HASH, h, STATUS, STOP) } switch m.Sleep300ms(); cb := m.OptionCB(DAEMON).(type) { + case func(string) bool: + if !cb(m.Conf(DAEMON, kit.Keys(mdb.HASH, h, kit.Keym(STATUS)))) { + m.Cmdy(DAEMON, cmd.Path, cmd.Args) + } case func(string): cb(m.Conf(DAEMON, kit.Keys(mdb.HASH, h, kit.Keym(STATUS)))) case func(): diff --git a/base/web/serve.go b/base/web/serve.go index 22a04a7e..2ba2a04f 100644 --- a/base/web/serve.go +++ b/base/web/serve.go @@ -373,7 +373,11 @@ func init() { "/publish/": {Name: "/publish/", Help: "定制化", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { if arg[0] == ice.ORDER_JS { if p := path.Join(ice.USR_PUBLISH, ice.ORDER_JS); m.PodCmd(nfs.CAT, p) { - m.RenderResult() + if m.IsErr() { + m.RenderResult("") + } else { + m.RenderResult() + } return } } diff --git a/meta.go b/meta.go index cc3fd773..e2f81dc0 100644 --- a/meta.go +++ b/meta.go @@ -426,6 +426,9 @@ func (m *Message) Option(key string, arg ...interface{}) string { return kit.Select("", kit.Simple(m.Optionv(key, arg...)), 0) } func (m *Message) Append(key string, arg ...interface{}) string { + if key == "" { + return m.Append(m.Appendv(MSG_APPEND)[0]) + } return kit.Select("", m.Appendv(key, arg...), 0) } func (m *Message) Appendv(key string, arg ...interface{}) []string { diff --git a/misc.go b/misc.go index cc81a63f..5d4fe58b 100644 --- a/misc.go +++ b/misc.go @@ -113,8 +113,17 @@ func (m *Message) SetResult(arg ...string) *Message { func (m *Message) SetAppend(arg ...string) *Message { return m.Set(MSG_APPEND, arg...) } +func (m *Message) ToLowerAppend(arg ...string) *Message { + for _, k := range m.meta[MSG_APPEND] { + m.RenameAppend(k, strings.ToLower(k)) + } + return m +} func (m *Message) RenameAppend(arg ...string) *Message { // [from to]... for i := 0; i < len(arg)-1; i += 2 { + if arg[i] == arg[i+1] { + continue + } for j, v := range m.meta[MSG_APPEND] { if v == arg[i] { m.meta[MSG_APPEND][j] = arg[i+1]