1
0
mirror of https://shylinux.com/x/icebergs synced 2025-04-26 01:24:05 +08:00
This commit is contained in:
shylinux@163.com 2022-09-16 12:44:11 +08:00
parent a5a6aa53a8
commit be9e03a440
9 changed files with 50 additions and 19 deletions

View File

@ -28,8 +28,7 @@ func init() {
}
}
for _, v := range os.Environ() {
ls := kit.Split(v, "=", "=")
if kit.IndexOf(env, ls[0]) == -1 {
if ls := kit.Split(v, "=", "="); kit.IndexOf(env, ls[0]) == -1 && len(ls) > 1 {
env = append(env, ls[0], ls[1])
}
}

View File

@ -162,7 +162,6 @@ const (
var ENV_LIST = []string{
TERM, SHELL, CTX_SHY, CTX_DEV, CTX_OPS, CTX_ARG, CTX_PID, CTX_USER, CTX_SHARE, CTX_RIVER, CTX_DAEMON,
"DOCKER_HOST",
}
const (

View File

@ -29,15 +29,18 @@ func _dir_hash(m *ice.Message, p string) string {
return ""
}
func _dir_list(m *ice.Message, root string, name string, level int, deep bool, dir_type string, dir_reg *regexp.Regexp, fields []string) *ice.Message {
list, e := ReadDir(m, path.Join(root, name))
if e != nil && len(list) == 0 { // 单个文件
ls, _ := ReadDir(m, path.Dir(path.Join(root, name)))
for _, s := range ls {
if s.Name() == path.Base(name) {
list = append(list, s)
list, _ := ReadDir(m, path.Join(root, name))
if len(list) == 0 { // 单个文件
if s, e := StatFile(m, path.Join(root, name)); e == nil && !s.IsDir() {
ls, _ := ReadDir(m, path.Dir(path.Join(root, name)))
for _, s := range ls {
if s.Name() == path.Base(name) {
list = append(list, s)
}
}
name, deep = path.Dir(name), false
}
name, deep = path.Dir(name), false
}
for _, f := range list {

View File

@ -144,7 +144,8 @@ func init() {
m.ProcessOpen(MergePod(m, m.Option(mdb.NAME)+"/cmd/web.code.vimer", "", ""))
}},
"xterm": {Name: "xterm", Help: "命令", Hand: func(m *ice.Message, arg ...string) {
m.ProcessOpen(MergePod(m, m.Option(mdb.NAME)+"/cmd/web.code.xterm", "hash", m.Cmdx(SPACE, m.Option(mdb.NAME), "web.code.xterm", mdb.CREATE, "type", "sh")))
m.ProcessOpen(MergePod(m, m.Option(mdb.NAME)+"/cmd/web.code.xterm", mdb.HASH,
m.Cmdx(SPACE, m.Option(mdb.NAME), "web.code.xterm", mdb.CREATE, mdb.TYPE, nfs.SH, mdb.NAME, "xterm")))
}},
cli.STOP: {Name: "stop", Help: "停止", Hand: func(m *ice.Message, arg ...string) {
m.Cmd(SPACE, mdb.MODIFY, m.OptionSimple(mdb.NAME), mdb.STATUS, cli.STOP)

View File

@ -141,3 +141,13 @@ func MergeLink(m Message, url string, arg ...ice.Any) string {
func MergePod(m Message, pod string, arg ...ice.Any) string {
return kit.MergePOD(kit.Select(ice.Info.Domain, m.Option(ice.MSG_USERWEB)), pod, arg...)
}
func MergePodCmd(m Message, pod, cmd string, arg ...ice.Any) string {
p := "/chat"
if pod != "" {
p += "/pod/" + kit.Keys(m.Option(ice.MSG_USERPOD), pod)
}
if cmd != "" {
p += "/cmd/" + cmd
}
return kit.MergeURL2(kit.Select(ice.Info.Domain, m.Option(ice.MSG_USERWEB)), p, arg...)
}

View File

@ -12,6 +12,7 @@ import (
"shylinux.com/x/icebergs/base/cli"
"shylinux.com/x/icebergs/base/gdb"
"shylinux.com/x/icebergs/base/mdb"
"shylinux.com/x/icebergs/base/nfs"
"shylinux.com/x/icebergs/base/tcp"
kit "shylinux.com/x/toolkits"
"shylinux.com/x/websocket"
@ -348,15 +349,25 @@ func init() {
m.StatusTimeCount("nCPU", ncpu, "nmem", kit.Format("%.2fG", nmem/1000.0))
m.Debug("what %v", m.FormatMeta())
}},
cli.OPEN: {Name: "open", Help: "打开", Hand: func(m *ice.Message, arg ...string) {
m.ProcessOpen(MergePod(m, m.Option(mdb.NAME), "", ""))
}},
"vimer": {Name: "vimer", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
m.ProcessOpen(MergePod(m, m.Option(mdb.NAME)+"/cmd/web.code.vimer", "", ""))
}},
"xterm": {Name: "xterm", Help: "命令", Hand: func(m *ice.Message, arg ...string) {
m.ProcessOpen(MergePod(m, m.Option(mdb.NAME)+"/cmd/web.code.xterm", mdb.HASH,
m.Cmdx(SPACE, m.Option(mdb.NAME), "web.code.xterm", mdb.CREATE, mdb.TYPE, nfs.SH, mdb.NAME, "xterm")))
}},
}, mdb.HashCloseAction()), Hand: func(m *ice.Message, arg ...string) {
if len(arg) < 2 { // 节点列表
if mdb.HashSelect(m, arg...); len(arg) == 0 {
m.Tables(func(value ice.Maps) {
switch value[mdb.TYPE] {
case MASTER:
m.PushAnchor(value[mdb.NAME], m.CmdAppend(SPIDE, value[mdb.NAME], CLIENT_URL))
case SERVER, WORKER:
m.PushButton(cli.OPEN, "vimer", "xterm")
default:
m.PushAnchor(value[mdb.NAME], MergePod(m, value[mdb.NAME]))
m.PushButton("")
}
})
m.Sort("type,name,text")

View File

@ -133,7 +133,9 @@ func init() {
if list[value[nfs.PATH]] {
return
}
list[value[nfs.PATH]] = true
if list[value[nfs.PATH]] = true; strings.Contains(value[nfs.PATH], "/go/pkg/mod/") {
value[nfs.PATH] = "/require/" + strings.Split(value[nfs.PATH], "/go/pkg/mod/")[1]
}
_binpack_file(m, w, value[nfs.PATH])
})
})

View File

@ -60,12 +60,12 @@ func init() {
}, Hand: func(m *ice.Message, arg ...string) {
// 下载依赖
_autogen_version(m.Spawn())
m.Cmd(cli.SYSTEM, GO, "get", "shylinux.com/x/ice")
// 执行编译
web.PushStream(m)
main, file, goos, arch := _compile_target(m, arg...)
m.Optionv(cli.CMD_ENV, kit.Simple(m.Configv(cli.ENV), cli.HOME, kit.Env(cli.HOME), cli.PATH, kit.Env(cli.PATH), cli.GOOS, goos, cli.GOARCH, arch))
m.Cmd(cli.SYSTEM, GO, "get", "shylinux.com/x/ice")
if msg := m.Cmd(cli.SYSTEM, GO, cli.BUILD, "-o", file, main, ice.SRC_VERSION_GO, ice.SRC_BINPACK_GO); !cli.IsSuccess(msg) {
m.Copy(msg)
return

View File

@ -60,12 +60,14 @@ func init() {
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
switch mdb.HashInputs(m, arg); arg[0] {
case mdb.TYPE:
m.Push(arg[0], "ice.bin source stdio", "tmux attach -t miss", "node", "python", "bash", "sh")
m.Push(arg[0], "ice.bin source stdio", "tmux attach -t miss", "docker run -w /root -it alpine", "python", "node", "bash", "sh")
case mdb.NAME:
m.Push(arg[0], path.Base(m.Option(mdb.TYPE)))
m.Push(arg[0], ice.Info.HostName, path.Base(m.Option(mdb.TYPE)))
}
}},
mdb.CREATE: {Name: "create type=sh name=xterm", Help: "创建"},
mdb.CREATE: {Name: "create type=sh name", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
mdb.HashCreate(m.Spawn(), mdb.NAME, m.Option(mdb.TYPE), m.OptionSimple(mdb.TYPE, mdb.NAME))
}},
"resize": {Name: "resize", Help: "大小", Hand: func(m *ice.Message, arg ...string) {
pty.Setsize(_xterm_get(m, m.Option(mdb.HASH)).File, &pty.Winsize{Rows: uint16(kit.Int(m.Option("rows"))), Cols: uint16(kit.Int(m.Option("cols")))})
}},
@ -78,8 +80,12 @@ func init() {
_xterm_get(m, kit.Select(m.Option(mdb.HASH), arg, 0)).Write([]byte(m.Cmdx(PUBLISH, ice.CONTEXTS, INSTALL) + ice.NL))
m.ProcessHold()
}},
web.WEBSITE: {Name: "website", Help: "打开", Hand: func(m *ice.Message, arg ...string) {
m.ProcessOpen(web.MergePodCmd(m, "", m.PrefixKey(), mdb.HASH, m.Option(mdb.HASH)))
}},
}, mdb.HashAction(mdb.FIELD, "time,hash,type,name,text")), Hand: func(m *ice.Message, arg ...string) {
if mdb.HashSelect(m, arg...); len(arg) == 0 {
m.PushAction(web.WEBSITE, mdb.REMOVE)
m.Action(mdb.CREATE, mdb.PRUNES)
} else {
m.Action("full", INSTALL)