From bd503579ad025a48d6f9c3f860bd0fdea27d46a5 Mon Sep 17 00:00:00 2001 From: harveyshao Date: Wed, 23 Nov 2022 00:13:00 +0800 Subject: [PATCH] opt some --- base/aaa/offer.go | 2 +- base/cli/cli.go | 2 +- base/cli/runtime.go | 7 ++++--- base/cli/system.go | 31 +++++++++++-------------------- base/ctx/command.go | 44 +++++++++++++++++++------------------------- base/ctx/display.go | 2 +- core/code/autogen.go | 2 +- core/code/inner.go | 15 +++++++++++++-- core/team/plan.shy | 1 + misc/git/status.go | 2 +- 10 files changed, 53 insertions(+), 55 deletions(-) create mode 100644 core/team/plan.shy diff --git a/base/aaa/offer.go b/base/aaa/offer.go index 233b29cd..b227f87a 100644 --- a/base/aaa/offer.go +++ b/base/aaa/offer.go @@ -32,5 +32,5 @@ func init() { m.Action(mdb.CREATE) } }}, - }) + }) } diff --git a/base/cli/cli.go b/base/cli/cli.go index 37a6becf..9d5d2f93 100644 --- a/base/cli/cli.go +++ b/base/cli/cli.go @@ -6,4 +6,4 @@ const CLI = "cli" var Index = &ice.Context{Name: CLI, Help: "命令模块"} -func init() { ice.Index.Register(Index, nil, MIRRORS, RUNTIME, QRCODE, SYSTEM, DAEMON, FOREVER) } +func init() { ice.Index.Register(Index, nil, RUNTIME, SYSTEM, DAEMON, FOREVER, MIRRORS, QRCODE) } diff --git a/base/cli/runtime.go b/base/cli/runtime.go index 61231c6e..17f442dc 100644 --- a/base/cli/runtime.go +++ b/base/cli/runtime.go @@ -26,12 +26,10 @@ func _runtime_init(m *ice.Message) { m.Conf(RUNTIME, kit.Keys(HOST, PWD), kit.Path("")) m.Conf(RUNTIME, kit.Keys(HOST, HOME), kit.Env(HOME)) m.Conf(RUNTIME, kit.Keys(HOST, MAXPROCS), runtime.GOMAXPROCS(0)) - m.Conf(RUNTIME, mdb.META, "") - m.Conf(RUNTIME, mdb.HASH, "") for _, k := range ENV_LIST { switch m.Conf(RUNTIME, kit.Keys(CONF, k), kit.Env(k)); k { case CTX_PID: - ice.Info.PidPath = kit.Select("var/run/ice.pid", kit.Env(k)) + ice.Info.PidPath = kit.Select(path.Join(ice.VAR_RUN, "ice.pid"), kit.Env(k)) case CTX_SHARE: ice.Info.CtxShare = kit.Env(k) case CTX_RIVER: @@ -53,6 +51,7 @@ func _runtime_init(m *ice.Message) { aaa.UserRoot(ice.Pulse, ice.Info.UserName) bin := _system_find(m, os.Args[0]) m.Conf(RUNTIME, kit.Keys(BOOT, ice.BIN), bin) + m.Conf(RUNTIME, kit.Keys(BOOT, mdb.TIME), m.Time()) if s, e := nfs.StatFile(m, bin); e == nil { m.Conf(RUNTIME, kit.Keys(BOOT, nfs.SIZE), kit.FmtSize(s.Size())) if f, e := nfs.OpenFile(m, bin); e == nil { @@ -60,6 +59,8 @@ func _runtime_init(m *ice.Message) { m.Conf(RUNTIME, kit.Keys(BOOT, mdb.HASH), kit.Hashs(f)) } } + m.Conf(RUNTIME, mdb.META, "") + m.Conf(RUNTIME, mdb.HASH, "") m.Conf(RUNTIME, kit.Keys(BOOT, mdb.COUNT), kit.Int(m.Conf(RUNTIME, kit.Keys(BOOT, mdb.COUNT)))+1) } func _runtime_hostinfo(m *ice.Message) { diff --git a/base/cli/system.go b/base/cli/system.go index 2c27a1dc..2a97ce8e 100644 --- a/base/cli/system.go +++ b/base/cli/system.go @@ -19,37 +19,32 @@ func _system_cmd(m *ice.Message, arg ...string) *exec.Cmd { bin, env := "", kit.Simple(m.Optionv(CMD_ENV)) for i := 0; i < len(env)-1; i += 2 { if env[i] == PATH { - if file := _system_find(m, arg[0], strings.Split(env[i+1], ice.DF)...); file != "" { - m.Logs(mdb.SELECT, "env path cmd", file) - bin = file + if bin = _system_find(m, arg[0], strings.Split(env[i+1], ice.DF)...); bin != "" { + m.Logs(mdb.SELECT, "env path cmd", bin) } } } if bin == "" { if text := kit.ReadFile(ice.ETC_PATH); len(text) > 0 { - if file := _system_find(m, arg[0], strings.Split(text, ice.NL)...); file != "" { - m.Logs(mdb.SELECT, "etc path cmd", file) - bin = file + if bin = _system_find(m, arg[0], strings.Split(text, ice.NL)...); bin != "" { + m.Logs(mdb.SELECT, "etc path cmd", bin) } } } if bin == "" { - if file := _system_find(m, arg[0], ice.BIN, nfs.PWD); file != "" { - m.Logs(mdb.SELECT, "contexts cmd", file) - bin = file + if bin = _system_find(m, arg[0], ice.BIN, nfs.PWD); bin != "" { + m.Logs(mdb.SELECT, "contexts cmd", bin) } } if bin == "" && !strings.Contains(arg[0], ice.PS) { - if file := _system_find(m, arg[0]); file != "" { - m.Logs(mdb.SELECT, "systems cmd", file) - bin = file + if bin = _system_find(m, arg[0]); bin != "" { + m.Logs(mdb.SELECT, "systems cmd", bin) } } if bin == "" && !strings.Contains(arg[0], ice.PS) { m.Cmd(MIRRORS, CMD, arg[0]) - if file := _system_find(m, arg[0]); file != "" { - m.Logs(mdb.SELECT, "mirrors cmd", file) - bin = file + if bin = _system_find(m, arg[0]); bin != "" { + m.Logs(mdb.SELECT, "mirrors cmd", bin) } } cmd := exec.Command(bin, arg[1:]...) @@ -92,11 +87,7 @@ func _system_exec(m *ice.Message, cmd *exec.Cmd) { err := bytes.NewBuffer(make([]byte, 0, ice.MOD_BUFS)) cmd.Stdout, cmd.Stderr = out, err defer func() { - m.Push(CMD_OUT, out.String()) - m.Push(CMD_ERR, err.String()) - if IsSuccess(m) && err.String() == "" { - m.SetAppend() - } + m.Push(CMD_OUT, out.String()).Push(CMD_ERR, err.String()) m.Echo(strings.TrimRight(out.String(), ice.NL)) }() } diff --git a/base/ctx/command.go b/base/ctx/command.go index b50a3263..aa38b70c 100644 --- a/base/ctx/command.go +++ b/base/ctx/command.go @@ -36,9 +36,7 @@ func _command_list(m *ice.Message, name string) { if k[0] == '/' || k[0] == '_' { continue } - m.Push(mdb.KEY, k) - m.Push(mdb.NAME, v.Name) - m.Push(mdb.HELP, v.Help) + m.Push(mdb.KEY, k).Push(mdb.NAME, v.Name).Push(mdb.HELP, v.Help) } m.Sort(mdb.KEY) return @@ -95,17 +93,12 @@ func init() { _command_search(m, arg[0], kit.Select("", arg, 1), kit.Select("", arg, 2)) } }}, - "tags": {Hand: func(m *ice.Message, arg ...string) { + mdb.EXPORT: {Hand: func(m *ice.Message, arg ...string) { TravelCmd(m, func(key, file, line string) { - m.Push("name", key) - m.Push("file", file) - m.Push("line", line) - }) - m.Sort("name") - m.Tables(func(value ice.Maps) { - m.Echo("%s\t%s\t%s;\" f\n", value["name"], value["file"], value["line"]) - }) - m.Cmd("nfs.save", "tags", m.Result()) + m.Push(mdb.NAME, key).Push(nfs.FILE, file).Push(nfs.LINE, line) + }).Sort(mdb.NAME).Tables(func(value ice.Maps) { + m.Echo(`%s %s %s;" f`+ice.NL, value[mdb.NAME], value[nfs.FILE], value[nfs.LINE]) + }).Cmd(nfs.SAVE, "tags", m.Result()) }}, }, aaa.RoleAction()), Hand: func(m *ice.Message, arg ...string) { if len(arg) == 0 { @@ -130,7 +123,7 @@ func init() { m.Cmd(CONFIG, mdb.REMOVE, cmd) return true case mdb.SELECT: - m.Cmdy(CONFIG, cmd) + ProcessFloat(m, CONFIG, cmd) return true default: return false @@ -178,7 +171,7 @@ func FileURI(dir string) string { return "" } if strings.Contains(dir, "/go/pkg/mod/") { - return path.Join("/require", strings.Split(dir, "/go/pkg/mod/")[1]) + return path.Join(ice.PS, ice.REQUIRE, strings.Split(dir, "/go/pkg/mod/")[1]) } if ice.Info.Make.Path != "" && strings.HasPrefix(dir, ice.Info.Make.Path+ice.PS) { dir = strings.TrimPrefix(dir, ice.Info.Make.Path+ice.PS) @@ -187,13 +180,13 @@ func FileURI(dir string) string { dir = strings.TrimPrefix(dir, kit.Path("")+ice.PS) } if strings.HasPrefix(dir, ice.USR) { - return path.Join("/require", dir) + return path.Join(ice.PS, ice.REQUIRE, dir) } if strings.HasPrefix(dir, ice.SRC) { - return path.Join("/require", dir) + return path.Join(ice.PS, ice.REQUIRE, dir) } if nfs.ExistsFile(ice.Pulse, path.Join(ice.SRC, dir)) { - return path.Join("/require/src/", dir) + return path.Join(ice.PS, ice.REQUIRE, ice.SRC, dir) } return dir } @@ -205,17 +198,17 @@ func AddFileCmd(dir, key string) { } func GetFileCmd(dir string) string { if strings.HasPrefix(dir, ice.ISH_PLUGED) { - dir = path.Join("/require", strings.TrimPrefix(dir, ice.ISH_PLUGED)) + dir = path.Join(ice.PS, ice.REQUIRE, strings.TrimPrefix(dir, ice.ISH_PLUGED)) } - if strings.HasPrefix(dir, "require/") { + if strings.HasPrefix(dir, ice.REQUIRE+ice.PS) { dir = ice.PS + dir } - for _, dir := range []string{dir, path.Join("/require", ice.Info.Make.Module, dir), path.Join("/require", ice.Info.Make.Module, ice.SRC, dir)} { + for _, dir := range []string{dir, path.Join(ice.PS, ice.REQUIRE, ice.Info.Make.Module, dir), path.Join(ice.PS, ice.REQUIRE, ice.Info.Make.Module, ice.SRC, dir)} { if cmd, ok := ice.Info.File[FileCmd(dir)]; ok { return cmd } p := path.Dir(dir) - if cmd, ok := ice.Info.File[FileCmd(path.Join(p, path.Base(p)+".go"))]; ok { + if cmd, ok := ice.Info.File[FileCmd(path.Join(p, path.Base(p)+ice.PT+nfs.GO))]; ok { return cmd } } @@ -225,6 +218,7 @@ func GetCmdFile(m *ice.Message, cmds string) (file string) { m.Search(cmds, func(key string, cmd *ice.Command) { if cmd.RawHand == nil { file = kit.Split(logs.FileLines(cmd.Hand), ice.DF)[0] + file = strings.TrimPrefix(file, kit.Path("")+ice.PS) } else { for k, v := range ice.Info.File { if v == cmds { @@ -236,16 +230,16 @@ func GetCmdFile(m *ice.Message, cmds string) (file string) { }) return } -func TravelCmd(m *ice.Message, cb func(key, file, line string)) { +func TravelCmd(m *ice.Message, cb func(key, file, line string)) *ice.Message { m.Travel(func(p *ice.Context, s *ice.Context, key string, cmd *ice.Command) { if key[0] == '/' || key[0] == '_' { return } - ls := kit.Split(cmd.GetFileLine(), ice.DF) - if len(ls) > 1 { + if ls := kit.Split(cmd.GetFileLine(), ice.DF); len(ls) > 1 { cb(kit.Keys(s.Cap(ice.CTX_FOLLOW), key), strings.TrimPrefix(ls[0], kit.Path("")+ice.PS), ls[1]) } else { m.Warn(true, "not found", cmd.Name, cmd.GetFileLine()) } }) + return m } diff --git a/base/ctx/display.go b/base/ctx/display.go index d7915c26..2712aea5 100644 --- a/base/ctx/display.go +++ b/base/ctx/display.go @@ -48,7 +48,7 @@ func DisplayLocal(m *ice.Message, file string, arg ...ice.Any) *ice.Message { return DisplayBase(m, file, arg...) } func DisplayBase(m *ice.Message, file string, arg ...ice.Any) *ice.Message { - m.Option(ice.MSG_DISPLAY, kit.MergeURL(kit.ExtChange(file, nfs.JS), arg...)) + m.Option(ice.MSG_DISPLAY, kit.MergeURL(kit.Select(kit.ExtChange(file, nfs.JS), file, strings.Contains(file, "?")), arg...)) return m } func Toolkit(m *ice.Message, arg ...string) { diff --git a/core/code/autogen.go b/core/code/autogen.go index 72cea347..4d24d054 100644 --- a/core/code/autogen.go +++ b/core/code/autogen.go @@ -136,7 +136,7 @@ func _autogen_git(m *ice.Message, arg ...string) ice.Map { "Remote", strings.TrimSpace(m.Cmdx(cli.SYSTEM, GIT, "config", "remote.origin.url")), "Branch", strings.TrimSpace(m.Cmdx(cli.SYSTEM, GIT, "rev-parse", "--abbrev-ref", "HEAD")), "Version", strings.TrimSpace(m.Cmdx(cli.SYSTEM, GIT, "describe", "--tags")), - "Domain", m.Option(ice.MSG_USERWEB), + "Domain", kit.Split(m.Option(ice.MSG_USERWEB), "?")[0], ) } func _autogen_mod(m *ice.Message, file string) (mod string) { diff --git a/core/code/inner.go b/core/code/inner.go index d62c5d12..d42860f3 100644 --- a/core/code/inner.go +++ b/core/code/inner.go @@ -162,14 +162,25 @@ func init() { }}, }) ctx.AddRunChecker(func(m *ice.Message, cmd, check string, arg ...string) bool { + process := func(m *ice.Message, file string) { + 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)) + } switch check { case nfs.SCRIPT: if file := kit.ExtChange(ctx.GetCmdFile(m, cmd), nfs.JS); nfs.ExistsFile(m, file) { - ctx.ProcessFloat(m, web.CODE_INNER, file) + process(m, file) + return true + } else if strings.HasPrefix(file, path.Join(ice.USR_ICEBERGS, ice.CORE)) { + if file := strings.Replace(file, path.Join(ice.USR_ICEBERGS, ice.CORE), path.Join(ice.USR_VOLCANOS, "plugin/local"), 1); nfs.ExistsFile(m, file) { + process(m, file) + return true + } } case nfs.SOURCE: if file := ctx.GetCmdFile(m, cmd); nfs.ExistsFile(m, file) { - ctx.ProcessFloat(m, web.CODE_INNER, file) + process(m, file) + return true } } return false diff --git a/core/team/plan.shy b/core/team/plan.shy new file mode 100644 index 00000000..d2420ec3 --- /dev/null +++ b/core/team/plan.shy @@ -0,0 +1 @@ +chapter "plan" diff --git a/misc/git/status.go b/misc/git/status.go index b1e361c5..c7c2286c 100644 --- a/misc/git/status.go +++ b/misc/git/status.go @@ -334,7 +334,7 @@ func init() { } m.Push(mdb.TEXT, strings.Join(text, ", ")) }}, - }, gdb.EventAction(web.DREAM_TABLES), aaa.RoleAction()), Hand: func(m *ice.Message, arg ...string) { + }, gdb.EventAction(web.DREAM_TABLES), ctx.CmdAction(), aaa.RoleAction()), Hand: func(m *ice.Message, arg ...string) { if _configs_get(m, "user.email") == "" { m.Echo("please config user.email") m.Action(CONFIGS)