1
0
mirror of https://shylinux.com/x/icebergs synced 2025-05-03 20:07:01 +08:00

opt dream

This commit is contained in:
harveyshao 2022-01-22 17:40:20 +08:00
parent 9ebe7add4a
commit 439d60c124
8 changed files with 40 additions and 23 deletions

View File

@ -16,22 +16,23 @@ import (
)
func _runtime_init(m *ice.Message) {
// 版本信息
// 版本信息 make
kit.Fetch(kit.UnMarshal(kit.Format(ice.Info.Make)), func(key string, value interface{}) {
m.Conf(RUNTIME, kit.Keys(MAKE, strings.ToLower(key)), value)
})
// 环境变量
// 环境变量 conf
for _, k := range []string{CTX_SHY, CTX_DEV, CTX_OPS, CTX_ARG, CTX_PID, CTX_USER, CTX_SHARE, CTX_RIVER} {
m.Conf(RUNTIME, kit.Keys(CONF, k), os.Getenv(k))
}
// 主机信息
// 主机信息 host
m.Conf(RUNTIME, kit.Keys(HOST, GOARCH), runtime.GOARCH)
m.Conf(RUNTIME, kit.Keys(HOST, GOOS), runtime.GOOS)
m.Conf(RUNTIME, kit.Keys(HOST, "pid"), os.Getpid())
m.Conf(RUNTIME, kit.Keys(HOST, HOME), os.Getenv(HOME))
// 启动信息
// 启动信息 boot
if name, e := os.Hostname(); e == nil {
m.Conf(RUNTIME, kit.Keys(BOOT, HOSTNAME), kit.Select(name, os.Getenv("HOSTNAME")))
}
@ -52,16 +53,18 @@ func _runtime_init(m *ice.Message) {
ice.Info.PathName = m.Conf(RUNTIME, kit.Keys(BOOT, PATHNAME))
ice.Info.UserName = m.Conf(RUNTIME, kit.Keys(BOOT, USERNAME))
// 启动次数
// 启动次数 boot
count := kit.Int(m.Conf(RUNTIME, kit.Keys(BOOT, mdb.COUNT))) + 1
m.Conf(RUNTIME, kit.Keys(BOOT, mdb.COUNT), count)
m.Conf(RUNTIME, kit.Keys(BOOT, ice.BIN), m.Cmdx(SYSTEM, "which", os.Args[0]))
// 节点信息
// 节点信息 node
m.Conf(RUNTIME, kit.Keys(NODE, mdb.TIME), m.Time())
NodeInfo(m, "worker", m.Conf(RUNTIME, kit.Keys(BOOT, PATHNAME)))
runtime.GOMAXPROCS(kit.Int(kit.Select("1", m.Conf(RUNTIME, kit.Keys(HOST, "GOMAXPROCS")))))
m.Debug("what home %v", os.Getenv(HOME))
m.Debug("what path %v", os.Getenv(PATH))
}
func _runtime_hostinfo(m *ice.Message) {
if f, e := os.Open("/proc/cpuinfo"); e == nil {

View File

@ -5,6 +5,7 @@ import (
"io"
"os"
"os/exec"
"path"
"strings"
ice "shylinux.com/x/icebergs"
@ -28,6 +29,15 @@ func _system_cmd(m *ice.Message, arg ...string) *exec.Cmd {
env := kit.Simple(m.Optionv(CMD_ENV))
for i := 0; i < len(env)-1; i += 2 {
cmd.Env = append(cmd.Env, kit.Format("%s=%s", env[i], env[i+1]))
if env[i] == PATH {
for _, p := range strings.Split(env[i+1], ice.DF) {
if _, err := os.Stat(path.Join(p, arg[0])); err == nil {
cmd.Path = path.Join(p, arg[0])
m.Debug("what %v", cmd.Path)
break
}
}
}
}
if len(cmd.Env) > 0 {
m.Log_EXPORT(CMD_ENV, cmd.Env)

View File

@ -69,20 +69,20 @@ func _dream_show(m *ice.Message, name string) {
return // 已经启动
}
}
if m.Richs(SPACE, nil, name, nil) != nil {
if m.Cmd(SPACE, name).Length() > 0 {
return // 已经启动
}
m.Optionv(cli.CMD_DIR, p)
m.Optionv(cli.CMD_ENV, kit.Simple(
cli.CTX_DEV, "http://:"+m.Cmd(SERVE).Append(tcp.PORT),
cli.CTX_DEV, "http://:"+m.Cmd(SERVE, ice.OptionFields("")).Append(tcp.PORT),
cli.PATH, kit.Path(path.Join(p, ice.BIN))+":"+kit.Path(ice.BIN)+":"+os.Getenv(cli.PATH),
cli.USER, ice.Info.UserName, m.Configv(cli.ENV),
cli.USER, ice.Info.UserName, cli.HOME, os.Getenv(cli.HOME), m.Configv(cli.ENV),
))
m.Optionv(cli.CMD_OUTPUT, path.Join(p, m.Config(kit.Keys(cli.ENV, cli.CTX_LOG))))
// 启动任务
m.Cmd(cli.DAEMON, m.Configv(ice.CMD), ice.DEV, ice.DEV, mdb.NAME, name, m.OptionSimple(RIVER))
m.Cmd(cli.DAEMON, "ice.bin", SPACE, tcp.DIAL, ice.DEV, ice.DEV, mdb.NAME, name, m.OptionSimple(RIVER))
defer m.Event(DREAM_CREATE, kit.SimpleKV("", m.Option(mdb.TYPE), name)...)
m.Sleep3s()
}
@ -100,7 +100,12 @@ func init() {
cli.START: {Name: "start name repos river", Help: "启动", Hand: func(m *ice.Message, arg ...string) {
_dream_show(m, m.Option(mdb.NAME, kit.Select(path.Base(m.Option(nfs.REPOS)), m.Option(mdb.NAME))))
}},
DREAM_STOP: {Name: "dream.stop type name", Help: "停止", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(SPACE, mdb.REMOVE, m.OptionSimple(mdb.NAME))
m.Cmd(DREAM, cli.START, m.OptionSimple(mdb.NAME))
}},
cli.STOP: {Name: "stop", Help: "停止", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(SPACE, mdb.REMOVE, m.OptionSimple(mdb.NAME))
m.Cmdy(SPACE, m.Option(mdb.NAME), "exit", "0")
}},
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
@ -117,7 +122,6 @@ func init() {
}},
}, Configs: map[string]*ice.Config{
DREAM: {Name: DREAM, Help: "梦想家", Value: kit.Data(nfs.PATH, ice.USR_LOCAL_WORK,
ice.CMD, kit.List("ice.bin", SPACE, tcp.DIAL),
cli.ENV, kit.Dict(cli.CTX_LOG, ice.BIN_BOOT_LOG),
"miss", `#!/bin/bash
if [ "$ISH_CONF_PRE" = "" ]; then

View File

@ -145,7 +145,6 @@ func _serve_handle(key string, cmd *ice.Command, msg *ice.Message, w http.Respon
if sessid := msg.Option(CookieName(msg.Option(ice.MSG_USERWEB))); sessid != "" {
msg.Option(ice.MSG_SESSID, sessid)
}
msg.Debug("what %v", msg.FormatMeta())
// 参数转换
for k, v := range r.Form {

View File

@ -275,8 +275,9 @@ func init() {
args := append([]string{mdb.TYPE, kind, mdb.NAME, name}, m.OptionSimple(SHARE, RIVER)...)
m.Go(func() {
h := m.Rich(SPACE, nil, kit.Dict(SOCKET, s, mdb.TEXT, text, args))
defer m.Confv(SPACE, kit.Keys(mdb.HASH, h), "")
m.Rich(SPACE, nil, kit.Dict(SOCKET, s, mdb.TEXT, text, args))
// h := m.Rich(SPACE, nil, kit.Dict(SOCKET, s, mdb.TEXT, text, args))
// defer m.Confv(SPACE, kit.Keys(mdb.HASH, h), "")
m.Log_CREATE(SPACE, name, mdb.TYPE, kind)
switch kind {
@ -298,6 +299,7 @@ func init() {
case WORKER: // 工作节点
m.Event(DREAM_START, args...)
defer m.Event(DREAM_STOP, args...)
defer m.Cmd(DREAM, DREAM_STOP, args)
default: // 服务节点
m.Event(SPACE_START, args...)
defer m.Event(SPACE_STOP, args...)

View File

@ -179,7 +179,6 @@ func init() {
_autogen_source(m, m.Option(mdb.ZONE), m.Option(mdb.NAME))
}
m.Option(nfs.FILE, path.Join(m.Option(mdb.ZONE), kit.Keys(m.Option(mdb.NAME), GO)))
m.Debug("what %v", m.FormatMeta())
}},
ssh.SCRIPT: {Name: "script", Help: "脚本:生成 etc/miss.sh", Hand: func(m *ice.Message, arg ...string) {
_autogen_miss(m)

View File

@ -19,8 +19,7 @@ func init() {
COMPILE: {Name: COMPILE, Help: "编译", Value: kit.Data(
nfs.PATH, ice.USR_PUBLISH, cli.ENV, kit.Dict(
"GOPRIVATE", "shylinux.com,github.com", "GOPROXY", "https://goproxy.cn,direct",
cli.HOME, os.Getenv(cli.HOME), cli.PATH, os.Getenv(cli.PATH),
"GOCACHE", os.Getenv("GOCACHE"), "CGO_ENABLED", "0",
"CGO_ENABLED", "0",
), GO, kit.List(GO, cli.BUILD),
)},
}, Commands: map[string]*ice.Command{
@ -58,11 +57,13 @@ func init() {
kit.Keys(kit.Select(ice.ICE, kit.TrimExt(main), main != ice.SRC_MAIN_GO), goos, arch))
}
m.Debug("what home %v", os.Getenv(cli.HOME))
m.Debug("what path %v", os.Getenv(cli.PATH))
// 执行编译
_autogen_version(m.Spawn())
m.Optionv(cli.CMD_ENV, kit.Simple(m.Configv(cli.ENV), cli.GOOS, goos, cli.GOARCH, arch))
// if msg := m.Cmd(cli.SYSTEM, m.Configv(GO), "-o", file, main, ice.SRC_VERSION_GO, ice.SRC_BINPACK_GO); !cli.IsSuccess(msg) {
if msg := m.Cmd(cli.SYSTEM, m.Configv(GO), "-v", "-o", file, main, ice.SRC_VERSION_GO); !cli.IsSuccess(msg) {
m.Optionv(cli.CMD_ENV, kit.Simple(m.Configv(cli.ENV), cli.HOME, os.Getenv(cli.HOME), cli.PATH, os.Getenv(cli.PATH), cli.GOOS, goos, cli.GOARCH, arch))
if msg := m.Cmd(cli.SYSTEM, "go", "build", "-o", file, main, ice.SRC_VERSION_GO, ice.SRC_BINPACK_GO); !cli.IsSuccess(msg) {
m.Copy(msg)
return
}
@ -70,8 +71,8 @@ func init() {
// 编译成功
m.Log_EXPORT(nfs.SOURCE, main, nfs.TARGET, file)
m.Cmdy(nfs.DIR, file, "time,path,size,link,action")
m.Cmdy(PUBLISH, mdb.CREATE, ice.BIN_ICE_SH)
m.Cmdy(PUBLISH, ice.CONTEXTS, ice.CORE)
m.Cmd(PUBLISH, mdb.CREATE, ice.BIN_ICE_SH)
m.Cmd(PUBLISH, ice.CONTEXTS, ice.CORE)
m.StatusTimeCount()
}},
}})

View File

@ -49,7 +49,6 @@ func init() {
}},
aaa.USER: {Name: "user", Help: "用户", Hand: func(m *ice.Message, arg ...string) {
m.Option(aaa.USERNAME, m.Option(ice.MSG_USERNAME))
m.Debug("what %v", m.FormatMeta())
m.Cmd(aaa.USER, mdb.MODIFY,
aaa.USERNICK, m.Option("nickName"), aaa.USERZONE, MP,
aaa.AVATAR, m.Option("avatarUrl"), aaa.GENDER, kit.Select("女", "男", m.Option(aaa.GENDER) == "1"),