From 3bd1ab44e5ba53ab9dc526c1a028175ff1530e29 Mon Sep 17 00:00:00 2001 From: shaoying Date: Tue, 23 Feb 2021 10:18:55 +0800 Subject: [PATCH] opt some --- base/web/dream.go | 6 ++-- base/web/serve.go | 3 ++ core/code/binpack.go | 4 +-- core/code/publish.go | 76 ++++++++++++++++++++++++-------------------- 4 files changed, 50 insertions(+), 39 deletions(-) diff --git a/base/web/dream.go b/base/web/dream.go index 2f5a6738..fb96054d 100644 --- a/base/web/dream.go +++ b/base/web/dream.go @@ -72,13 +72,15 @@ func _dream_show(m *ice.Message, name string) { if m.Richs(SPACE, nil, name, nil) == nil { m.Option(cli.CMD_DIR, p) - // m.Conf(cli.RUNTIME, "conf.ctx_dev"), m.Optionv(cli.CMD_ENV, kit.Simple( - "ctx_dev", strings.Split(m.Option(ice.MSG_USERWEB), "?")[0], + // "ctx_dev", m.Conf(cli.RUNTIME, "conf.ctx_dev"), + "ctx_dev", "http://:"+m.Cmd(SERVE).Append(tcp.PORT), "PATH", kit.Path(path.Join(p, "bin"))+":"+kit.Path("bin")+":"+os.Getenv("PATH"), "USER", ice.Info.UserName, m.Confv(DREAM, "meta.env"), )) // 启动任务 + kit.Path(os.Args[0]) + m.Optionv(cli.CMD_STDERR, path.Join(p, m.Conf(DREAM, "meta.env.ctx_log"))) m.Cmd(cli.DAEMON, m.Confv(DREAM, "meta.cmd"), SPIDE_DEV, SPIDE_DEV, kit.MDB_NAME, name) m.Event(DREAM_CREATE, kit.MDB_TYPE, m.Option(kit.MDB_TYPE), kit.MDB_NAME, name) diff --git a/base/web/serve.go b/base/web/serve.go index c99f4531..bbe08eb9 100644 --- a/base/web/serve.go +++ b/base/web/serve.go @@ -59,6 +59,9 @@ func _serve_main(m *ice.Message, w http.ResponseWriter, r *http.Request) bool { if r.Method == "GET" && r.URL.Path == "/" { msg := m.Spawn() if msg.W, msg.R = w, r; strings.Contains(r.Header.Get("User-Agent"), "curl") { + if ice.DumpBinPack(w, "usr/intshell/index.sh", func(name string) { RenderType(w, name, "") }) { + return false + } Render(msg, ice.RENDER_DOWNLOAD, kit.Path(m.Conf(SERVE, "meta.intshell.path"), m.Conf(SERVE, "meta.intshell.index"))) } else { if ice.DumpBinPack(w, r.URL.Path, func(name string) { RenderType(w, name, "") }) { diff --git a/core/code/binpack.go b/core/code/binpack.go index 95c2332b..44829ac3 100644 --- a/core/code/binpack.go +++ b/core/code/binpack.go @@ -45,7 +45,7 @@ func _pack_dir(m *ice.Message, pack *os.File, dir string) { return } - pack.WriteString(fmt.Sprintf(" \"/%s\": %s,\n", + pack.WriteString(fmt.Sprintf(" \"%s\": %s,\n", path.Join(dir, value[kit.MDB_PATH]), _pack_file(m, path.Join(dir, value[kit.MDB_PATH])))) }) pack.WriteString("\n") @@ -100,7 +100,7 @@ func init() { _pack_dir(m, pack, "usr/learning") // _pack_dir(m, pack, "usr/icebergs") // _pack_dir(m, pack, "usr/toolkits") - // _pack_dir(m, pack, "usr/intshell") + _pack_dir(m, pack, "usr/intshell") // _pack_contexts(m, pack) _pack_write(pack, ` }`) diff --git a/core/code/publish.go b/core/code/publish.go index dd60b507..f8305b0f 100644 --- a/core/code/publish.go +++ b/core/code/publish.go @@ -10,6 +10,7 @@ import ( "fmt" "os" "path" + "runtime" "strings" ) @@ -23,6 +24,9 @@ func _publish_file(m *ice.Message, file string, arg ...string) string { defer func() { os.Remove(p) }() file = p } + if strings.HasSuffix(file, "ice.bin") { + arg = append(arg, kit.Keys("ice", runtime.GOOS, runtime.GOARCH)) + } // 发布文件 target := path.Join(m.Conf(PUBLISH, kit.META_PATH), kit.Select(path.Base(file), arg, 0)) @@ -36,15 +40,47 @@ func init() { Index.Merge(&ice.Context{ Configs: map[string]*ice.Config{ PUBLISH: {Name: PUBLISH, Help: "发布", Value: kit.Data( - kit.MDB_SHORT, kit.MDB_NAME, kit.MDB_PATH, "usr/publish", - "contexts", _contexts, + kit.MDB_SHORT, kit.MDB_NAME, kit.MDB_PATH, "usr/publish", "contexts", _contexts, )}, }, Commands: map[string]*ice.Command{ - PUBLISH: {Name: "publish path auto create ish ice can", Help: "发布", Action: map[string]*ice.Action{ + PUBLISH: {Name: "publish path auto create can ice ish", Help: "发布", Action: map[string]*ice.Action{ mdb.CREATE: {Name: "create file", Help: "添加", Hand: func(m *ice.Message, arg ...string) { _publish_file(m, m.Option(kit.MDB_FILE)) }}, + "can": {Name: "can", Help: "火山架", Hand: func(m *ice.Message, arg ...string) { + m.Option(nfs.DIR_DEEP, true) + m.Option(nfs.DIR_REG, `.*\.(html|css|js)$`) + m.Option(nfs.DIR_ROOT, m.Conf(PUBLISH, kit.META_PATH)) + m.Cmdy(nfs.DIR, "./", "time,size,line,path,link") + m.Cmdy(PUBLISH, "contexts", "miss") + }}, + "ice": {Name: "ice", Help: "冰山架", Hand: func(m *ice.Message, arg ...string) { + defer func() { m.Cmdy(PUBLISH, "contexts", "base") }() + m.Cmd(PUBLISH, mdb.CREATE, kit.MDB_FILE, "bin/ice.sh") + m.Cmd(PUBLISH, mdb.CREATE, kit.MDB_FILE, "bin/ice.bin") + + p := m.Option(cli.CMD_DIR, m.Conf(PUBLISH, kit.META_PATH)) + ls := strings.Split(strings.TrimSpace(m.Cmd(cli.SYSTEM, "bash", "-c", "ls |xargs file |grep executable").Append(cli.CMD_OUT)), "\n") + for _, ls := range ls { + if file := strings.TrimSpace(strings.Split(ls, ":")[0]); file != "" { + if s, e := os.Stat(path.Join(p, file)); e == nil { + m.Push(kit.MDB_TIME, s.ModTime()) + m.Push(kit.MDB_SIZE, kit.FmtSize(s.Size())) + m.Push(kit.MDB_FILE, file) + m.PushDownload(file, path.Join(p, file)) + } + } + } + m.SortTimeR(kit.MDB_TIME) + }}, + "ish": {Name: "ish", Help: "神农架", Hand: func(m *ice.Message, arg ...string) { + m.Option(nfs.DIR_DEEP, true) + m.Option(nfs.DIR_REG, ".*\\.(sh|vim|conf)$") + m.Option(nfs.DIR_ROOT, m.Conf(PUBLISH, kit.META_PATH)) + m.Cmdy(nfs.DIR, "./", "time,size,line,path,link") + m.Cmdy(PUBLISH, "contexts", "tmux") + }}, "contexts": {Name: "contexts", Help: "环境", Hand: func(m *ice.Message, arg ...string) { u := kit.ParseURL(m.Option(ice.MSG_USERWEB)) m.Option("httphost", fmt.Sprintf("%s://%s:%s", u.Scheme, strings.Split(u.Host, ":")[0], kit.Select(kit.Select("80", "443", u.Scheme == "https"), strings.Split(u.Host, ":"), 1))) @@ -63,44 +99,14 @@ func init() { } } }}, - "ish": {Name: "ish", Help: "神农架", Hand: func(m *ice.Message, arg ...string) { - m.Option(nfs.DIR_DEEP, true) - m.Option(nfs.DIR_REG, ".*\\.(sh|vim|conf)$") - m.Option(nfs.DIR_ROOT, m.Conf(PUBLISH, kit.META_PATH)) - m.Cmdy(nfs.DIR, "./", "time,size,line,path,link") - m.Cmdy(PUBLISH, "contexts", "tmux") - }}, - "ice": {Name: "ice", Help: "冰山架", Hand: func(m *ice.Message, arg ...string) { - p := m.Option(cli.CMD_DIR, m.Conf(PUBLISH, kit.META_PATH)) - ls := strings.Split(m.Cmdx(cli.SYSTEM, "bash", "-c", "ls |xargs file |grep executable"), "\n") - for _, ls := range ls { - if file := strings.TrimSpace(strings.Split(ls, ":")[0]); file != "" { - if s, e := os.Stat(path.Join(p, file)); m.Assert(e) { - m.Push(kit.MDB_TIME, s.ModTime()) - m.Push(kit.MDB_SIZE, kit.FmtSize(s.Size())) - m.Push(kit.MDB_FILE, file) - m.PushDownload(file, path.Join(p, file)) - } - } - } - m.SortTimeR(kit.MDB_TIME) - m.Cmdy(PUBLISH, "contexts", "base") - m.PushAction(mdb.REMOVE) - }}, mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) { p := m.Option(cli.CMD_DIR, m.Conf(PUBLISH, kit.META_PATH)) - os.Remove(path.Join(p, m.Option(kit.MDB_FILE))) - }}, - "can": {Name: "can", Help: "火山架", Hand: func(m *ice.Message, arg ...string) { - m.Option(nfs.DIR_DEEP, true) - m.Option(nfs.DIR_REG, ".*\\.(js|css|html)$") - m.Option(nfs.DIR_ROOT, m.Conf(PUBLISH, kit.META_PATH)) - m.Cmdy(nfs.DIR, "./", "time,size,line,path,link") - m.Cmdy(PUBLISH, "contexts", "miss") + os.Remove(path.Join(p, m.Option(kit.MDB_PATH))) }}, }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Option(nfs.DIR_ROOT, m.Conf(PUBLISH, kit.META_PATH)) m.Cmdy(nfs.DIR, kit.Select("", arg, 0), "time size path link") + m.PushAction(mdb.REMOVE) }}, }, })