1
0
forked from x/icebergs
This commit is contained in:
harveyshao 2022-08-01 20:07:11 +08:00
parent 8e7a403b35
commit f226c5f08e
5 changed files with 30 additions and 20 deletions

View File

@ -54,7 +54,7 @@ func init() {
for {
logs.Println("run %s", kit.Join(arg, ice.SP))
if m.Sleep("1s"); IsSuccess(m.Cmd(SYSTEM, arg)) {
if m.Sleep("100ms"); IsSuccess(m.Cmd(SYSTEM, arg)) {
logs.Println("exit")
break
}

View File

@ -40,7 +40,7 @@ func _hash_inputs(m *ice.Message, prefix, chain string, field, value string) {
func _hash_insert(m *ice.Message, prefix, chain string, arg ...string) string {
defer m.Lock(prefix, chain)()
if value := m.Confm(prefix, kit.Keys(HASH, arg[1])); value != nil {
if value := m.Confm(prefix, kit.Keys(HASH, arg[1])); value != nil && arg[1] != "" {
value = kit.GetMeta(value)
for i := 2; i < len(arg)-1; i += 2 {
kit.Value(value, arg[i], arg[i+1])
@ -231,19 +231,19 @@ func HashImport(m *ice.Message, arg ...Any) *ice.Message {
return m.Cmdy(IMPORT, m.PrefixKey(), "", HASH, arg)
}
func HashTarget(m *ice.Message, h string, add func() Any) Any {
defer m.Lock()()
p := m.Confv(m.PrefixKey(), kit.Keys(HASH, h, TARGET))
if pp, ok := p.(Map); ok && len(pp) == 0 {
p = nil
}
if p == nil && add != nil {
p = add()
m.Confv(m.PrefixKey(), kit.Keys(HASH, h, TARGET), p)
}
return p
func HashTarget(m *ice.Message, h string, add func() Any) (p Any) {
m.Assert(h != "")
HashSelectUpdate(m, h, func(value ice.Map) {
p = value[TARGET]
if pp, ok := p.(Map); ok && len(pp) == 0 {
p = nil
}
if p == nil && add != nil {
p = add()
value[TARGET] = p
}
})
return
}
func HashPrunesValue(m *ice.Message, field, value string) {
m.OptionFields(m.Config(FIELD))

View File

@ -48,8 +48,9 @@ func _dream_show(m *ice.Message, name string) {
if !strings.Contains(name, "-") || !strings.HasPrefix(name, "20") {
name = m.Time("20060102-") + kit.ReplaceAll(name, "-", "_")
}
// defer m.ProcessOpen(m.MergePod(m.Option(mdb.NAME, name)))
defer m.ProcessOpen(m.MergePod(m.Option(mdb.NAME, name)))
defer m.Echo(m.MergePod(m.Option(mdb.NAME, name)))
defer m.PushRefresh()
p := path.Join(ice.USR_LOCAL_WORK, name)
if pid := m.Cmdx(nfs.CAT, path.Join(p, ice.Info.PidPath)); pid != "" && kit.FileExists("/proc/"+pid) {
@ -146,7 +147,7 @@ func init() {
m.Cmd(mdb.DELETE, m.Prefix(SPACE), "", mdb.HASH, m.OptionSimple(mdb.NAME))
} else {
m.Cmd(mdb.DELETE, m.Prefix(SPACE), "", mdb.HASH, m.OptionSimple(mdb.NAME))
m.Sleep("1s", DREAM, cli.START, m.OptionSimple(mdb.NAME))
m.Sleep("3s", DREAM, cli.START, m.OptionSimple(mdb.NAME))
}
}},
nfs.TRASH: {Name: "trash", Help: "删除", Hand: func(m *ice.Message, arg ...string) {

View File

@ -35,6 +35,7 @@ func _xterm_get(m *ice.Message, h string, must bool) (f *os.File) {
m.Assert(err)
m.Go(func() {
mdb.HashSelectUpdate(m, h, func(value ice.Map) { value["_cmd"] = cmd })
buf := make([]byte, ice.MOD_BUFS)
for {
if n, e := tty.Read(buf); !m.Warn(e) {
@ -56,6 +57,13 @@ const XTERM = "xterm"
func init() {
Index.MergeCommands(ice.Commands{
XTERM: {Name: "xterm hash refresh", Help: "终端", Actions: ice.MergeAction(ice.Actions{
ice.CTX_EXIT: {Hand: func(m *ice.Message, arg ...string) {
mdb.HashSelectValue(m, func(value ice.Map) {
if cmd, ok := value["_cmd"].(*exec.Cmd); ok {
cmd.Process.Kill()
}
})
}},
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
switch mdb.HashInputs(m, arg); arg[0] {
case mdb.TYPE:
@ -95,14 +103,14 @@ func init() {
pty.Setsize(_xterm_get(m, m.Option(mdb.HASH), true), &pty.Winsize{Rows: uint16(kit.Int(m.Option("rows"))), Cols: uint16(kit.Int(m.Option("cols")))})
}},
"rename": {Name: "rename", Help: "重命名", Hand: func(m *ice.Message, arg ...string) {
mdb.HashModify(m, m.OptionSimple(mdb.HASH), arg)
mdb.HashModify(m, arg)
}},
"select": {Name: "select", Help: "连接", Hand: func(m *ice.Message, arg ...string) {
mdb.HashModify(m, m.OptionSimple(mdb.HASH), mdb.TEXT, m.Option(ice.MSG_DAEMON))
mdb.HashModify(m, mdb.TEXT, m.Option(ice.MSG_DAEMON))
m.Cmd("", "input", arg)
}},
"input": {Name: "input", Help: "输入", Hand: func(m *ice.Message, arg ...string) {
mdb.HashModify(m, m.OptionSimple(mdb.HASH), mdb.TIME, m.Time())
mdb.HashModify(m, mdb.TIME, m.Time())
if b, e := base64.StdEncoding.DecodeString(strings.Join(arg, "")); m.Assert(e) {
_xterm_get(m, m.Option(mdb.HASH), true).Write(b)
}

View File

@ -100,6 +100,7 @@ func Run(arg ...string) string {
if Index.Start(Pulse, arg...) {
conf.Wait()
os.Exit(kit.Int(Pulse.Option(EXIT)))
println()
}
default: // 执行命令
if logs.Disable(true); len(arg) == 0 {