From 8d3dbc1dea193358bd82d7d754471b89ba4aa939 Mon Sep 17 00:00:00 2001 From: shy Date: Sun, 14 Apr 2024 12:47:31 +0800 Subject: [PATCH] add some --- base/cli/forever.go | 2 +- base/ctx/config.go | 6 ++++++ base/gdb/gdb.go | 10 ++++++---- base/log/log.go | 3 +++ base/mdb/hash.go | 6 ++++++ base/mdb/zone.go | 6 ++++++ base/nfs/dir.go | 3 +++ base/ssh/script.go | 2 +- base/web/dream.go | 9 +++------ base/web/serve.go | 4 +++- conf.go | 3 ++- data.go | 10 +++++++--- init.go | 29 ++++++++++++++++++++++++++--- logs.go | 28 +++++++++++++++++----------- misc/git/repos.go | 2 +- 15 files changed, 91 insertions(+), 32 deletions(-) diff --git a/base/cli/forever.go b/base/cli/forever.go index 15bc3383..b283b9fc 100644 --- a/base/cli/forever.go +++ b/base/cli/forever.go @@ -29,7 +29,7 @@ func init() { } }) m.Options(CMD_ENV, env, CMD_INPUT, os.Stdin, CMD_OUTPUT, os.Stdout, CMD_ERRPUT, os.Stderr) - kit.If(kit.Env(CTX_LOG), func(p string) { m.Optionv(CMD_ERRPUT, p) }) + kit.If(kit.Select("/dev/null", kit.Env(CTX_LOG)), func(p string) { m.Optionv(CMD_ERRPUT, p) }) m.Cmd(FOREVER, STOP) if bin := kit.Select(os.Args[0], ice.BIN_ICE_BIN, nfs.Exists(m, ice.BIN_ICE_BIN)); len(arg) > 0 && arg[0] == ice.SPACE { m.Cmdy(FOREVER, bin, ice.SPACE, START, ice.DEV, ice.OPS, arg[1:]) diff --git a/base/ctx/config.go b/base/ctx/config.go index d3dc3750..bdbf7afb 100644 --- a/base/ctx/config.go +++ b/base/ctx/config.go @@ -33,6 +33,9 @@ func _config_only(v ice.Any, arg ...string) bool { return false } func _config_save(m *ice.Message, name string, arg ...string) { + if !ice.HasVar() { + return + } data, msg := ice.Map{}, m.Spawn(m.Source()) for _, k := range arg { if v := mdb.Confv(msg, k); _config_only(v, mdb.META) && _config_only(kit.Value(v, mdb.META), @@ -58,6 +61,9 @@ func _config_save(m *ice.Message, name string, arg ...string) { } } func _config_load(m *ice.Message, name string, arg ...string) { + if !ice.HasVar() { + return + } if f, e := miss.OpenFile(path.Join(ice.VAR_CONF, name)); e == nil { defer f.Close() data, msg := ice.Map{}, m.Spawn(m.Source()) diff --git a/base/gdb/gdb.go b/base/gdb/gdb.go index ce145601..375437af 100644 --- a/base/gdb/gdb.go +++ b/base/gdb/gdb.go @@ -19,10 +19,12 @@ func (f *Frame) Begin(m *ice.Message, arg ...string) { f.s = make(chan os.Signal, 10) } func (f *Frame) Start(m *ice.Message, arg ...string) { - if f, p, e := logs.CreateFile(ice.VAR_LOG_ICE_PID); e == nil { - m.Logs("save", "file", p, PID, os.Getpid()) - fmt.Fprint(f, os.Getpid()) - f.Close() + if ice.HasVar() { + if f, p, e := logs.CreateFile(ice.VAR_LOG_ICE_PID); e == nil { + m.Logs("save", "file", p, PID, os.Getpid()) + fmt.Fprint(f, os.Getpid()) + f.Close() + } } t := time.NewTicker(kit.Duration(mdb.Conf(m, TIMER, kit.Keym(TICK)))) for { diff --git a/base/log/log.go b/base/log/log.go index 1284aea1..270b2bb5 100644 --- a/base/log/log.go +++ b/base/log/log.go @@ -28,6 +28,9 @@ func (f *Frame) Begin(m *ice.Message, arg ...string) { } } func (f *Frame) Start(m *ice.Message, arg ...string) { + if !ice.HasVar() { + return + } mdb.Confm(m, FILE, nil, func(k string, v ice.Map) { if mdb.Conf(m, k, kit.Keym(mdb.DISABLE)) == ice.TRUE { return diff --git a/base/mdb/hash.go b/base/mdb/hash.go index 53d7b5e0..973109d2 100644 --- a/base/mdb/hash.go +++ b/base/mdb/hash.go @@ -101,6 +101,9 @@ func _hash_prunes(m *ice.Message, prefix, chain string, arg ...string) { }) } func _hash_export(m *ice.Message, prefix, chain, file string) { + if !ice.HasUsr() { + return + } defer Lock(m, prefix)() if len(Confm(m, prefix, kit.Keys(chain, HASH))) == 0 { return @@ -116,6 +119,9 @@ func _hash_export(m *ice.Message, prefix, chain, file string) { } } func _hash_import(m *ice.Message, prefix, chain, file string) { + if !ice.HasUsr() { + return + } defer Lock(m, prefix)() f, e := miss.OpenFile(kit.Keys(file, JSON)) if e != nil && !ice.Info.Important { diff --git a/base/mdb/zone.go b/base/mdb/zone.go index 6a8896d7..d8459c1d 100644 --- a/base/mdb/zone.go +++ b/base/mdb/zone.go @@ -59,6 +59,9 @@ func _zone_select(m *ice.Message, prefix, chain, zone string, id string) { }) } func _zone_export(m *ice.Message, prefix, chain, file string) { + if !ice.HasUsr() { + return + } defer Lock(m, prefix)() if len(Confm(m, prefix, kit.Keys(chain, HASH))) == 0 { return @@ -91,6 +94,9 @@ func _zone_export(m *ice.Message, prefix, chain, file string) { m.Logs(EXPORT, KEY, path.Join(prefix, chain), FILE, p, COUNT, count) } func _zone_import(m *ice.Message, prefix, chain, file string) { + if !ice.HasUsr() { + return + } defer Lock(m, prefix)() f, e := miss.OpenFile(kit.Keys(file, CSV)) if e != nil && !ice.Info.Important { diff --git a/base/nfs/dir.go b/base/nfs/dir.go index 7a8c8280..ac9a5f0d 100644 --- a/base/nfs/dir.go +++ b/base/nfs/dir.go @@ -144,6 +144,9 @@ const ( VAR = "var/" USR = "usr/" + SCAN = "scan" + GOWORK = "gowork" + ETC_LOCAL_SH = "etc/local.sh" ETC_CERT_KEY = "etc/cert/cert.key" ETC_CERT_PEM = "etc/cert/cert.pem" diff --git a/base/ssh/script.go b/base/ssh/script.go index b868ab7b..d77e3489 100644 --- a/base/ssh/script.go +++ b/base/ssh/script.go @@ -105,7 +105,7 @@ func (f *Frame) parse(m *ice.Message, h, line string) string { return "" } func (f *Frame) scan(m *ice.Message, h, line string) *Frame { - // kit.If(f.source == STDIO, func() { m.Option(ice.LOG_DISABLE, ice.TRUE) }) + kit.If(f.source == STDIO, func() { m.Option(ice.LOG_DISABLE, ice.TRUE) }) f.ps1 = kit.Simple(mdb.Confv(m, PROMPT, kit.Keym(PS1))) f.ps2 = kit.Simple(mdb.Confv(m, PROMPT, kit.Keym(PS2))) ps, bio := f.ps1, bufio.NewScanner(f.stdin) diff --git a/base/web/dream.go b/base/web/dream.go index afa0c0a2..3acc2211 100644 --- a/base/web/dream.go +++ b/base/web/dream.go @@ -471,15 +471,12 @@ func init() { VERSION: {Hand: func(m *ice.Message, arg ...string) { m.Cmdy("web.code.version") }}, - "gowork": {Name: "gowork name", Help: "工作区", Hand: func(m *ice.Message, arg ...string) { + nfs.GOWORK: {Name: "gowork name", Help: "工作区", Hand: func(m *ice.Message, arg ...string) { m.Cmd(cli.SYSTEM, cli.GO, "work", "init") - m.Cmd(cli.SYSTEM, cli.GO, "work", "use", ".") - m.Cmd(cli.SYSTEM, cli.GO, "work", "use", nfs.USR_RELEASE) - m.Cmd(cli.SYSTEM, cli.GO, "work", "use", nfs.USR_ICEBERGS) - m.Cmd(cli.SYSTEM, cli.GO, "work", "use", nfs.USR_TOOLKITS) + kit.For([]string{".", nfs.USR_RELEASE, nfs.USR_ICEBERGS, nfs.USR_TOOLKITS}, func(p string) { m.Cmd(cli.SYSTEM, cli.GO, "work", "use", p) }) DreamEach(m, m.Option(mdb.NAME), "", func(name string) { m.Cmd(cli.SYSTEM, cli.GO, "work", "use", path.Join(ice.USR_LOCAL_WORK, name)) }) }}, - "scan": {Hand: func(m *ice.Message, arg ...string) { + nfs.SCAN: {Hand: func(m *ice.Message, arg ...string) { list := m.CmdMap(CODE_GIT_REPOS, nfs.REPOS) GoToastTable(m.Cmd(nfs.DIR, nfs.USR_LOCAL_WORK, mdb.NAME), mdb.NAME, func(value ice.Maps) { if repos, ok := list[value[mdb.NAME]]; ok { diff --git a/base/web/serve.go b/base/web/serve.go index c5c0c12a..96575d9b 100644 --- a/base/web/serve.go +++ b/base/web/serve.go @@ -35,7 +35,9 @@ func _serve_start(m *ice.Message) { m.Cmd(SPIDE, ice.OPS, _serve_address(m)+"/exit", ice.Maps{CLIENT_TIMEOUT: cli.TIME_30ms, ice.LOG_DISABLE: ice.TRUE}) }).Sleep(cli.TIME_1s) m.Spawn(ice.Maps{TOKEN: ""}).Start("", m.OptionSimple(tcp.HOST, tcp.PORT)...) - m.Cmd(nfs.SAVE, ice.VAR_LOG_ICE_PORT, m.Option(tcp.PORT)) + if ice.HasVar() { + m.Cmd(nfs.SAVE, ice.VAR_LOG_ICE_PORT, m.Option(tcp.PORT)) + } if m.Cmd(tcp.HOST).Length() == 0 { return } diff --git a/conf.go b/conf.go index 8ff7d4aa..b822c859 100644 --- a/conf.go +++ b/conf.go @@ -341,8 +341,9 @@ const ( // Err ErrNotValid = "not valid: " ErrNotStart = "not start: " - ErrNotFoundSpace = "not found space: " ErrNotFoundIndex = "not found index: " + ErrNotFoundSpide = "not found spide: " + ErrNotFoundSpace = "not found space: " ErrAlreadyExists = "already exists: " ErrNotImplement = "not implement: " ErrTooDeepCount = "too deep count: " diff --git a/data.go b/data.go index 52611d3a..b7f142fc 100644 --- a/data.go +++ b/data.go @@ -52,6 +52,9 @@ func (m *Message) Conf(arg ...Any) string { return kit.Format(m.Confv(arg...)) } var _important = task.Lock{} func SaveImportant(m *Message, arg ...string) { + if !HasVar() { + return + } if Info.Important != true || len(arg) == 0 { return } @@ -60,12 +63,13 @@ func SaveImportant(m *Message, arg ...string) { m.Cmd("nfs.push", VAR_DATA_IMPORTANT, kit.Join(arg, SP), NL) } func loadImportant(m *Message) { + if !HasVar() { + return + } if f, e := os.Open(VAR_DATA_IMPORTANT); e == nil { defer f.Close() kit.For(f, func(s string) { kit.If(s != "" && !strings.HasPrefix(s, "# "), func() { m.Cmd(kit.Split(s)) }) }) } - if _, e := os.Stat(VAR); e == nil { - Info.Important = true - } + Info.Important = HasVar() } func removeImportant(m *Message) { os.Remove(VAR_DATA_IMPORTANT) } diff --git a/init.go b/init.go index 124bb1a3..e94868a3 100644 --- a/init.go +++ b/init.go @@ -26,7 +26,7 @@ func (s *Frame) Begin(m *Message, arg ...string) { func (s *Frame) Start(m *Message, arg ...string) { m.Cmd(INIT, arg) kit.For([]string{LOG, GDB, SSH}, func(k string) { m.Sleep30ms().Start(k) }) - Info.Important = true + Info.Important = HasVar() m.Sleep30ms().Cmd(arg) } func (s *Frame) Close(m *Message, arg ...string) { @@ -73,7 +73,9 @@ var Index = &Context{Name: ICE, Help: "冰山模块", Commands: Commands{ m.GoSleep300ms(func() { m.root.Option(EXIT, kit.Select("0", arg, 0)) m.Cmd(SOURCE, ETC_EXIT_SHY) - m.Cmd(EXPORT, EXPORT) + if HasUsr() { + m.Cmd(EXPORT, EXPORT) + } m.Cmd(CTX_EXIT) removeImportant(m) }) @@ -110,15 +112,36 @@ func Run(arg ...string) string { kit.If(Pulse._cmd == nil, func() { Pulse._cmd = &Command{RawHand: logs.FileLines(3)} }) switch Index.Merge(Index).Begin(Pulse, arg...); kit.Select("", arg, 0) { case SERVE, SPACE: + _forever = true logs.Disable(false) Pulse.Go(func() { Index.Start(Pulse, arg...) }) conf.Wait() os.Exit(kit.Int(Pulse.Option(EXIT))) default: Pulse.Cmdy(INIT).Cmdy(arg) - kit.If(Pulse.IsErrNotFound(), func() { Pulse.SetAppend().SetResult().Cmdy(SYSTEM, arg) }) kit.If(strings.TrimSpace(Pulse.Result()) == "" && Pulse.Length() > 0, func() { Pulse.TableEcho() }) kit.If(Pulse.Result() != "" && !strings.HasSuffix(Pulse.Result(), NL), func() { Pulse.Echo(NL) }) } return Pulse.Result() } + +var _forever bool + +func HasVar() bool { + if !_forever { + return false + } + if _, e := os.Stat(VAR); e == nil { + return true + } + return false +} +func HasUsr() bool { + if !_forever { + return false + } + if _, e := os.Stat(USR); e == nil { + return true + } + return false +} diff --git a/logs.go b/logs.go index ea449fbe..6b25a319 100644 --- a/logs.go +++ b/logs.go @@ -133,31 +133,37 @@ func (m *Message) Warn(err Any, arg ...Any) bool { return true } func (m *Message) WarnNotLogin(err Any, arg ...Any) bool { - return m.Warn(err, ErrNotLogin, kit.Simple(arg...), logs.FileLineMeta(2)) + return m.warnInfo(err, ErrNotLogin, arg...) } func (m *Message) WarnNotRight(err Any, arg ...Any) bool { - return m.Warn(err, ErrNotRight, kit.Simple(arg...), logs.FileLineMeta(2)) + return m.warnInfo(err, ErrNotRight, arg...) } func (m *Message) WarnNotAllow(err Any, arg ...Any) bool { - return m.Warn(err, ErrNotAllow, kit.Simple(arg...), logs.FileLineMeta(2)) + return m.warnInfo(err, ErrNotAllow, arg...) } func (m *Message) WarnNotFound(err Any, arg ...Any) bool { - return m.Warn(err, ErrNotFound, kit.Simple(arg...), logs.FileLineMeta(2)) -} -func (m *Message) WarnNotFoundSpace(err Any, arg ...Any) bool { - return m.Warn(err, ErrNotFoundSpace, kit.Simple(arg...), logs.FileLineMeta(2)) + return m.warnInfo(err, ErrNotFound, arg...) } func (m *Message) WarnNotFoundIndex(err Any, arg ...Any) bool { - return m.Warn(err, ErrNotFoundIndex, kit.Simple(arg...), logs.FileLineMeta(2)) + return m.warnInfo(err, ErrNotFoundIndex, arg...) +} +func (m *Message) WarnNotFoundSpide(err Any, arg ...Any) bool { + return m.warnInfo(err, ErrNotFoundSpide, arg...) +} +func (m *Message) WarnNotFoundSpace(err Any, arg ...Any) bool { + return m.warnInfo(err, ErrNotFoundSpace, arg...) } func (m *Message) WarnNotValid(err Any, arg ...Any) bool { - return m.Warn(err, ErrNotValid, kit.Simple(arg...), logs.FileLineMeta(2)) + return m.warnInfo(err, ErrNotValid, arg...) } func (m *Message) WarnNotValidTime(time Any, arg ...Any) bool { - return m.Warn(kit.Format(time) < m.Time(), ErrNotValid, kit.Simple(arg...), time, m.Time(), logs.FileLineMeta(2)) + return m.warnInfo(kit.Format(time) < m.Time(), ErrNotValid, append(arg, time, m.Time())...) } func (m *Message) WarnAlreadyExists(err Any, arg ...Any) bool { - return m.Warn(err, ErrAlreadyExists, kit.Simple(arg...), logs.FileLineMeta(2)) + return m.warnInfo(err, ErrAlreadyExists, arg...) +} +func (m *Message) warnInfo(err Any, info string, arg ...Any) bool { + return m.Warn(err, info, kit.Simple(arg...), logs.Meta{logs.FILELINE, kit.FileLine(-1, 3)}) } func (m *Message) ErrorNotImplement(arg ...Any) *Message { m.Error(true, append(kit.List(ErrNotImplement), append(arg, logs.FileLineMeta(2)))...) diff --git a/misc/git/repos.go b/misc/git/repos.go index 3aafde7b..d223420b 100644 --- a/misc/git/repos.go +++ b/misc/git/repos.go @@ -432,7 +432,7 @@ func init() { mdb.Config(m, INSTEADOF, strings.TrimPrefix(strings.TrimSuffix(value[mdb.NAME], _INSTEADOF), "url.")) } }) - m.Cmd(web.DREAM, "scan") + m.Go(func() { m.Cmd(web.DREAM, nfs.SCAN) }) }}, INIT: {Name: "init remote*", Help: "初始化", Hand: func(m *ice.Message, arg ...string) { m.OptionDefault(nfs.PATH, kit.Path(""))