diff --git a/base/web/dream.go b/base/web/dream.go index 50f1309b..a9720bdd 100644 --- a/base/web/dream.go +++ b/base/web/dream.go @@ -83,8 +83,8 @@ func _dream_show(m *ice.Message, name string) { // 启动任务 m.Optionv(cli.CMD_OUTPUT, path.Join(p, m.Config(kit.Keys(cli.ENV, cli.CTX_LOG)))) m.Cmd(cli.DAEMON, m.Confv(DREAM, kit.Keym(ice.CMD)), ice.DEV, ice.DEV, kit.MDB_NAME, name, m.OptionSimple(RIVER)) - m.Event(DREAM_CREATE, kit.MDB_TYPE, m.Option(kit.MDB_TYPE), kit.MDB_NAME, name) m.Sleep(ice.MOD_TICK) + m.Event(DREAM_CREATE, kit.MDB_TYPE, m.Option(kit.MDB_TYPE), kit.MDB_NAME, name) } m.Cmdy(nfs.DIR, p) } diff --git a/core/code/install.go b/core/code/install.go index bdf6c992..7d8d0bfc 100644 --- a/core/code/install.go +++ b/core/code/install.go @@ -91,8 +91,17 @@ func _install_order(m *ice.Message, arg ...string) { m.Cmdy(nfs.CAT, "etc/path") } func _install_spawn(m *ice.Message, arg ...string) { - port := m.Cmdx(tcp.PORT, aaa.RIGHT) - target := path.Join(m.Conf(cli.DAEMON, kit.META_PATH), port) + if kit.Int(m.Option(tcp.PORT)) >= 10000 { + p := path.Join(m.Conf(cli.DAEMON, kit.META_PATH), m.Option(tcp.PORT)) + if _, e := os.Stat(p); e == nil { + m.Echo(p) + return + } + } else { + m.Option(tcp.PORT, m.Cmdx(tcp.PORT, aaa.RIGHT)) + } + + target := path.Join(m.Conf(cli.DAEMON, kit.META_PATH), m.Option(tcp.PORT)) source := path.Join(m.Conf(INSTALL, kit.META_PATH), kit.TrimExt(m.Option(kit.MDB_LINK))) m.Cmd(nfs.DIR, path.Join(source, kit.Select("_install", m.Option("install")))).Table(func(index int, value map[string]string, head []string) { diff --git a/data.go b/data.go index b5e6ce62..0b7e237d 100644 --- a/data.go +++ b/data.go @@ -32,9 +32,20 @@ func (m *Message) Save(arg ...string) *Message { arg = append(arg, k) } } + for i, k := range arg { + arg[i] = m.Prefix(k) + } return m.Cmd("config", SAVE, m.Prefix("json"), arg) } func (m *Message) Load(arg ...string) *Message { + if len(arg) == 0 { + for k := range m.target.Configs { + arg = append(arg, k) + } + } + for i, k := range arg { + arg[i] = m.Prefix(k) + } return m.Cmd("config", LOAD, m.Prefix("json"), arg) } diff --git a/meta.go b/meta.go index b9917db5..397c1949 100644 --- a/meta.go +++ b/meta.go @@ -161,6 +161,7 @@ func (m *Message) Copy(msg *Message, arg ...string) *Message { } for _, k := range msg.meta[MSG_OPTION] { + m.Set(MSG_OPTION, k) m.Add(MSG_OPTION, kit.Simple(k, msg.meta[k])...) } for _, k := range msg.meta[MSG_APPEND] { @@ -248,6 +249,9 @@ func (m *Message) Sort(key string, arg ...string) *Message { func (m *Message) Table(cbs ...func(index int, value map[string]string, head []string)) *Message { if len(cbs) > 0 && cbs[0] != nil { if m.FieldsIsDetail() { + if m.Length() == 0 { + return m + } line := map[string]string{} for i, k := range m.meta[kit.MDB_KEY] { line[k] = kit.Select("", m.meta[kit.MDB_VALUE], i) @@ -256,14 +260,7 @@ func (m *Message) Table(cbs ...func(index int, value map[string]string, head []s return m } - nrow := 0 - for _, k := range m.meta[MSG_APPEND] { - if len(m.meta[k]) > nrow { - nrow = len(m.meta[k]) - } - } - - for i := 0; i < nrow; i++ { + for i := 0; i < m.Length(); i++ { line := map[string]string{} for _, k := range m.meta[MSG_APPEND] { line[k] = kit.Select("", m.meta[k], i) diff --git a/type.go b/type.go index bc6ab86a..85fec25d 100644 --- a/type.go +++ b/type.go @@ -136,6 +136,9 @@ func (c *Context) Merge(s *Context) *Context { if kit.Value(v.Meta, kit.Keys("_trans", k), help[0]); len(help) > 1 { kit.Value(v.Meta, kit.Keys(kit.MDB_TITLE, k), help[1]) } + if a.Hand == nil { + continue + } if a.List == nil { a.List = c.split(a.Name) }