mirror of
https://shylinux.com/x/icebergs
synced 2025-04-25 09:08:06 +08:00
opt some
This commit is contained in:
parent
29d7a98ec6
commit
25ac2e3a1b
@ -11,4 +11,4 @@ var Index = &ice.Context{Name: CLI, Help: "命令模块"}
|
||||
|
||||
func Prefix(arg ...string) string { return kit.Keys(CLI, arg) }
|
||||
|
||||
func init() { ice.Index.Register(Index, nil, RUNTIME, SYSTEM, DAEMON, FOREVER, MIRRORS, QRCODE) }
|
||||
func init() { ice.Index.Register(Index, nil, RUNTIME, SYSTEM, DAEMON, FOREVER, MIRRORS, QRCODE, SUDO) }
|
||||
|
@ -54,7 +54,7 @@ func _xterm_get(m *ice.Message, h string) xterm.XTerm {
|
||||
}
|
||||
func _xterm_echo(m *ice.Message, h string, str string) {
|
||||
m.Options(ice.MSG_DAEMON, mdb.HashSelectField(m, h, cli.DAEMON), ice.MSG_COUNT, "0")
|
||||
// m.Options(ice.LOG_DISABLE, ice.TRUE)
|
||||
m.Options(ice.LOG_DISABLE, ice.TRUE)
|
||||
web.PushNoticeGrow(m, h, str)
|
||||
}
|
||||
func _xterm_cmds(m *ice.Message, h string, cmd string, arg ...ice.Any) {
|
||||
|
@ -7,6 +7,7 @@ import (
|
||||
"path"
|
||||
|
||||
ice "shylinux.com/x/icebergs"
|
||||
"shylinux.com/x/icebergs/base/cli"
|
||||
"shylinux.com/x/icebergs/base/lex"
|
||||
"shylinux.com/x/icebergs/base/nfs"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
@ -45,21 +46,25 @@ var list = map[string]handler{}
|
||||
|
||||
func AddCommand(key string, cb handler) { list[key] = cb }
|
||||
|
||||
func Command(m *ice.Message, dir string, cli string, arg ...string) (XTerm, error) {
|
||||
if cb, ok := list[path.Base(cli)]; ok {
|
||||
m.Debug("find shell %s %s", cli, kit.FileLines(cb))
|
||||
func Command(m *ice.Message, dir string, cmd string, arg ...string) (XTerm, error) {
|
||||
if cb, ok := list[path.Base(cmd)]; ok {
|
||||
m.Debug("find shell %s %s", cmd, kit.FileLines(cb))
|
||||
return cb(m.Spawn(), arg...)
|
||||
}
|
||||
cmd := exec.Command(cli, arg...)
|
||||
cmd.Dir = nfs.MkdirAll(m, kit.Path(dir))
|
||||
cmd.Env = append(cmd.Env, os.Environ()...)
|
||||
cmd.Env = append(cmd.Env, "TERM=xterm")
|
||||
if m.Cmd(cli.SUDO, cmd).Length() > 0 {
|
||||
m.Debug("find sudo %s", cmd)
|
||||
cmd, arg = cli.SUDO, kit.Simple(cmd, arg)
|
||||
}
|
||||
p := exec.Command(cmd, arg...)
|
||||
p.Dir = nfs.MkdirAll(m, kit.Path(dir))
|
||||
p.Env = append(p.Env, os.Environ()...)
|
||||
p.Env = append(p.Env, "TERM=xterm")
|
||||
if pty, tty, err := Open(); err != nil {
|
||||
return nil, err
|
||||
} else {
|
||||
Setsid(cmd)
|
||||
cmd.Stdin, cmd.Stdout, cmd.Stderr = tty, tty, tty
|
||||
return &xterm{cmd, pty}, cmd.Start()
|
||||
Setsid(p)
|
||||
p.Stdin, p.Stdout, p.Stderr = tty, tty, tty
|
||||
return &xterm{p, pty}, p.Start()
|
||||
}
|
||||
}
|
||||
func PushShell(m *ice.Message, xterm XTerm, cmds []string, cb func(string)) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user