mirror of
https://shylinux.com/x/icebergs
synced 2025-05-01 19:19:24 +08:00
opt some
This commit is contained in:
parent
4f30191b4f
commit
ecb66d16d3
@ -126,68 +126,65 @@ const (
|
||||
const DAEMON = "daemon"
|
||||
|
||||
func init() {
|
||||
Index.Merge(&ice.Context{
|
||||
Configs: map[string]*ice.Config{
|
||||
DAEMON: {Name: DAEMON, Help: "守护进程", Value: kit.Data(kit.MDB_PATH, ice.USR_LOCAL_DAEMON)},
|
||||
},
|
||||
Commands: map[string]*ice.Command{
|
||||
ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Cmd(mdb.PRUNES, DAEMON, "", mdb.HASH, mdb.CACHE_CLEAR_ON_EXIT, ice.TRUE)
|
||||
Index.Merge(&ice.Context{Configs: map[string]*ice.Config{
|
||||
DAEMON: {Name: DAEMON, Help: "守护进程", Value: kit.Data(kit.MDB_PATH, ice.USR_LOCAL_DAEMON)},
|
||||
}, Commands: map[string]*ice.Command{
|
||||
ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Cmd(mdb.PRUNES, DAEMON, "", mdb.HASH, mdb.CACHE_CLEAR_ON_EXIT, ice.TRUE)
|
||||
}},
|
||||
|
||||
DAEMON: {Name: "daemon hash auto start prunes", Help: "守护进程", Action: map[string]*ice.Action{
|
||||
START: {Name: "start cmd env dir", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Option(CMD_DIR, m.Option(DIR))
|
||||
m.Option(CMD_ENV, kit.Split(m.Option(ENV), " ="))
|
||||
m.Cmdy(DAEMON, kit.Split(m.Option(CMD)))
|
||||
}},
|
||||
|
||||
DAEMON: {Name: "daemon hash auto start prunes", Help: "守护进程", Action: map[string]*ice.Action{
|
||||
START: {Name: "start cmd env dir", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Option(CMD_DIR, m.Option(DIR))
|
||||
m.Option(CMD_ENV, kit.Split(m.Option(ENV), " ="))
|
||||
m.Cmdy(DAEMON, kit.Split(m.Option(CMD)))
|
||||
}},
|
||||
RESTART: {Name: "restart", Help: "重启", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmd(DAEMON, STOP)
|
||||
m.Sleep("3s")
|
||||
m.Cmdy(DAEMON, START)
|
||||
}},
|
||||
STOP: {Name: "stop", Help: "停止", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Option(mdb.FIELDS, "time,hash,status,pid,cmd,dir,env")
|
||||
m.Cmd(mdb.SELECT, DAEMON, "", mdb.HASH, kit.MDB_HASH, m.Option(kit.MDB_HASH)).Table(func(index int, value map[string]string, head []string) {
|
||||
m.Cmd(mdb.MODIFY, DAEMON, "", mdb.HASH, kit.MDB_HASH, m.Option(kit.MDB_HASH), kit.MDB_STATUS, STOP)
|
||||
m.Cmdy(SYSTEM, "kill", "-9", value[PID])
|
||||
})
|
||||
}},
|
||||
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.DELETE, DAEMON, "", mdb.HASH, kit.MDB_HASH, m.Option(kit.MDB_HASH))
|
||||
}},
|
||||
mdb.PRUNES: {Name: "prunes", Help: "清理", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Option(mdb.FIELDS, "time,hash,status,pid,cmd,dir,env")
|
||||
m.Cmdy(mdb.PRUNES, DAEMON, "", mdb.HASH, kit.MDB_STATUS, ERROR)
|
||||
m.Cmdy(mdb.PRUNES, DAEMON, "", mdb.HASH, kit.MDB_STATUS, STOP)
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
if len(arg) == 0 { // 进程列表
|
||||
m.Fields(len(arg), "time,hash,status,pid,cmd,dir,env")
|
||||
m.Cmdy(mdb.SELECT, DAEMON, "", mdb.HASH).Table(func(index int, value map[string]string, head []string) {
|
||||
switch value[kit.MDB_STATUS] {
|
||||
case START:
|
||||
m.PushButton(RESTART, STOP)
|
||||
default:
|
||||
m.PushButton(mdb.REMOVE)
|
||||
}
|
||||
})
|
||||
|
||||
} else if m.Richs(DAEMON, "", arg[0], nil) != nil { // 进程详情
|
||||
m.Option(mdb.FIELDS, mdb.DETAIL)
|
||||
m.Cmdy(mdb.SELECT, DAEMON, "", mdb.HASH, kit.MDB_HASH, arg)
|
||||
switch m.Append(kit.MDB_STATUS) {
|
||||
RESTART: {Name: "restart", Help: "重启", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmd(DAEMON, STOP)
|
||||
m.Sleep("3s")
|
||||
m.Cmdy(DAEMON, START)
|
||||
}},
|
||||
STOP: {Name: "stop", Help: "停止", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Option(mdb.FIELDS, "time,hash,status,pid,cmd,dir,env")
|
||||
m.Cmd(mdb.SELECT, DAEMON, "", mdb.HASH, kit.MDB_HASH, m.Option(kit.MDB_HASH)).Table(func(index int, value map[string]string, head []string) {
|
||||
m.Cmd(mdb.MODIFY, DAEMON, "", mdb.HASH, kit.MDB_HASH, m.Option(kit.MDB_HASH), kit.MDB_STATUS, STOP)
|
||||
m.Cmdy(SYSTEM, "kill", "-9", value[PID])
|
||||
})
|
||||
}},
|
||||
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.DELETE, DAEMON, "", mdb.HASH, kit.MDB_HASH, m.Option(kit.MDB_HASH))
|
||||
}},
|
||||
mdb.PRUNES: {Name: "prunes", Help: "清理", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Option(mdb.FIELDS, "time,hash,status,pid,cmd,dir,env")
|
||||
m.Cmdy(mdb.PRUNES, DAEMON, "", mdb.HASH, kit.MDB_STATUS, ERROR)
|
||||
m.Cmdy(mdb.PRUNES, DAEMON, "", mdb.HASH, kit.MDB_STATUS, STOP)
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
if len(arg) == 0 { // 进程列表
|
||||
m.Fields(len(arg), "time,hash,status,pid,cmd,dir,env")
|
||||
m.Cmdy(mdb.SELECT, DAEMON, "", mdb.HASH).Table(func(index int, value map[string]string, head []string) {
|
||||
switch value[kit.MDB_STATUS] {
|
||||
case START:
|
||||
m.PushButton(RESTART, STOP)
|
||||
default:
|
||||
m.PushButton(mdb.REMOVE)
|
||||
}
|
||||
})
|
||||
|
||||
} else { // 启动进程
|
||||
m.Option(CMD_TYPE, DAEMON)
|
||||
m.Cmdy(SYSTEM, arg)
|
||||
} else if m.Richs(DAEMON, "", arg[0], nil) != nil { // 进程详情
|
||||
m.Option(mdb.FIELDS, mdb.DETAIL)
|
||||
m.Cmdy(mdb.SELECT, DAEMON, "", mdb.HASH, kit.MDB_HASH, arg)
|
||||
switch m.Append(kit.MDB_STATUS) {
|
||||
case START:
|
||||
m.PushButton(RESTART, STOP)
|
||||
default:
|
||||
m.PushButton(mdb.REMOVE)
|
||||
}
|
||||
}},
|
||||
},
|
||||
})
|
||||
|
||||
} else { // 启动进程
|
||||
m.Option(CMD_TYPE, DAEMON)
|
||||
m.Cmdy(SYSTEM, arg)
|
||||
}
|
||||
}},
|
||||
}})
|
||||
}
|
||||
|
@ -2,7 +2,6 @@ package cli
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"os/exec"
|
||||
@ -26,7 +25,6 @@ func _system_show(m *ice.Message, cmd *exec.Cmd) {
|
||||
if w, ok := m.Optionv(CMD_ERRPUT).(io.Writer); ok {
|
||||
cmd.Stderr = w
|
||||
}
|
||||
|
||||
} else {
|
||||
out := bytes.NewBuffer(make([]byte, 0, ice.MOD_BUFS))
|
||||
err := bytes.NewBuffer(make([]byte, 0, ice.MOD_BUFS))
|
||||
@ -59,6 +57,9 @@ func SystemProcess(m *ice.Message, text string, arg ...string) {
|
||||
m.ProcessField(SYSTEM, RUN)
|
||||
m.Push(ARG, kit.Split(text))
|
||||
}
|
||||
func IsSuccess(m *ice.Message) bool {
|
||||
return m.Append(CMD_CODE) == "0"
|
||||
}
|
||||
|
||||
const (
|
||||
CMD_DIR = "cmd_dir"
|
||||
@ -75,11 +76,17 @@ const (
|
||||
)
|
||||
|
||||
const (
|
||||
GOARCH = "goarch"
|
||||
GOOS = "goos"
|
||||
LINUX = "linux"
|
||||
DARWIN = "darwin"
|
||||
WINDOWS = "windows"
|
||||
SOURCE = "source"
|
||||
TARGET = "target"
|
||||
AMD64 = "amd64"
|
||||
I386 = "i386"
|
||||
ARM = "arm"
|
||||
|
||||
SOURCE = "source"
|
||||
TARGET = "target"
|
||||
|
||||
USER = "USER"
|
||||
HOME = "HOME"
|
||||
@ -88,48 +95,45 @@ const (
|
||||
const SYSTEM = "system"
|
||||
|
||||
func init() {
|
||||
Index.Merge(&ice.Context{
|
||||
Configs: map[string]*ice.Config{
|
||||
SYSTEM: {Name: SYSTEM, Help: "系统命令", Value: kit.Data()},
|
||||
},
|
||||
Commands: map[string]*ice.Command{
|
||||
SYSTEM: {Name: "system cmd run:button", Help: "系统命令", Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
m.Fields(len(arg), "time,id,cmd")
|
||||
m.Cmdy(mdb.SELECT, SYSTEM, "", mdb.LIST)
|
||||
return
|
||||
}
|
||||
m.Grow(SYSTEM, "", kit.Dict(kit.MDB_TIME, m.Time(), CMD, strings.Join(arg, " ")))
|
||||
Index.Merge(&ice.Context{Configs: map[string]*ice.Config{
|
||||
SYSTEM: {Name: SYSTEM, Help: "系统命令", Value: kit.Data()},
|
||||
}, Commands: map[string]*ice.Command{
|
||||
SYSTEM: {Name: "system cmd run:button", Help: "系统命令", Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
m.Fields(len(arg), "time,id,cmd")
|
||||
m.Cmdy(mdb.SELECT, SYSTEM, "", mdb.LIST)
|
||||
return
|
||||
}
|
||||
m.Grow(SYSTEM, "", kit.Dict(kit.MDB_TIME, m.Time(), CMD, strings.Join(arg, " ")))
|
||||
|
||||
if len(arg) == 1 {
|
||||
arg = kit.Split(arg[0])
|
||||
}
|
||||
cmd := exec.Command(arg[0], arg[1:]...)
|
||||
if len(arg) == 1 {
|
||||
arg = kit.Split(arg[0])
|
||||
}
|
||||
cmd := exec.Command(arg[0], arg[1:]...)
|
||||
|
||||
// 运行目录
|
||||
if cmd.Dir = m.Option(CMD_DIR); len(cmd.Dir) > 0 {
|
||||
m.Log_EXPORT(kit.MDB_META, SYSTEM, CMD_DIR, cmd.Dir)
|
||||
if _, e := os.Stat(cmd.Dir); e != nil && os.IsNotExist(e) {
|
||||
os.MkdirAll(cmd.Dir, ice.MOD_DIR)
|
||||
}
|
||||
// 运行目录
|
||||
if cmd.Dir = m.Option(CMD_DIR); len(cmd.Dir) > 0 {
|
||||
m.Log_EXPORT(kit.MDB_META, SYSTEM, CMD_DIR, cmd.Dir)
|
||||
if _, e := os.Stat(cmd.Dir); e != nil && os.IsNotExist(e) {
|
||||
os.MkdirAll(cmd.Dir, ice.MOD_DIR)
|
||||
}
|
||||
}
|
||||
|
||||
// 环境变量
|
||||
env := kit.Simple(m.Optionv(CMD_ENV))
|
||||
for i := 0; i < len(env)-1; i += 2 {
|
||||
cmd.Env = append(cmd.Env, fmt.Sprintf("%s=%s", env[i], env[i+1]))
|
||||
}
|
||||
if len(cmd.Env) > 0 {
|
||||
m.Log_EXPORT(kit.MDB_META, SYSTEM, CMD_ENV, cmd.Env)
|
||||
}
|
||||
// 环境变量
|
||||
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 len(cmd.Env) > 0 {
|
||||
m.Log_EXPORT(kit.MDB_META, SYSTEM, CMD_ENV, cmd.Env)
|
||||
}
|
||||
|
||||
switch m.Option(CMD_TYPE) {
|
||||
case DAEMON:
|
||||
_daemon_show(m, cmd, m.Option(CMD_OUTPUT), m.Option(CMD_ERRPUT))
|
||||
default:
|
||||
_system_show(m, cmd)
|
||||
}
|
||||
}},
|
||||
},
|
||||
})
|
||||
switch m.Option(CMD_TYPE) {
|
||||
case DAEMON:
|
||||
_daemon_show(m, cmd, m.Option(CMD_OUTPUT), m.Option(CMD_ERRPUT))
|
||||
default:
|
||||
_system_show(m, cmd)
|
||||
}
|
||||
}},
|
||||
}})
|
||||
}
|
||||
|
@ -144,6 +144,7 @@ func _hash_prunes(m *ice.Message, prefix, chain string, arg ...string) {
|
||||
const HASH = "hash"
|
||||
|
||||
func HashAction(fields ...string) map[string]*ice.Action {
|
||||
_key := func(m *ice.Message) string { return kit.Select(kit.MDB_HASH, m.Config(kit.MDB_SHORT)) }
|
||||
return ice.SelectAction(map[string]*ice.Action{
|
||||
INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(INPUTS, m.PrefixKey(), "", HASH, arg)
|
||||
@ -152,16 +153,16 @@ func HashAction(fields ...string) map[string]*ice.Action {
|
||||
m.Cmdy(INSERT, m.PrefixKey(), "", HASH, arg)
|
||||
}},
|
||||
REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(DELETE, m.PrefixKey(), "", HASH, m.OptionSimple(kit.Select(kit.MDB_HASH, m.Config(kit.MDB_SHORT))), arg)
|
||||
m.Cmdy(DELETE, m.PrefixKey(), "", HASH, m.OptionSimple(_key(m)), arg)
|
||||
}},
|
||||
MODIFY: {Name: "modify", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(MODIFY, m.PrefixKey(), "", HASH, m.OptionSimple(kit.Select(kit.MDB_HASH, m.Config(kit.MDB_SHORT))), arg)
|
||||
m.Cmdy(MODIFY, m.PrefixKey(), "", HASH, m.OptionSimple(_key(m)), arg)
|
||||
}},
|
||||
EXPORT: {Name: "export", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(EXPORT, m.PrefixKey(), "", HASH)
|
||||
m.Cmdy(EXPORT, m.PrefixKey(), "", HASH, arg)
|
||||
}},
|
||||
IMPORT: {Name: "import", Help: "导入", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(IMPORT, m.PrefixKey(), "", HASH)
|
||||
m.Cmdy(IMPORT, m.PrefixKey(), "", HASH, arg)
|
||||
}},
|
||||
PRUNES: {Name: "prunes before@date", Help: "清理", Hand: func(m *ice.Message, arg ...string) {
|
||||
list := []string{}
|
||||
@ -170,7 +171,7 @@ func HashAction(fields ...string) map[string]*ice.Action {
|
||||
list = append(list, key)
|
||||
}
|
||||
})
|
||||
m.OptionFields(m.Conf(m.PrefixKey(), kit.META_FIELD))
|
||||
m.OptionFields(m.Config(kit.MDB_FIELD))
|
||||
for _, v := range list {
|
||||
m.Cmdy(DELETE, m.PrefixKey(), "", HASH, kit.MDB_HASH, v)
|
||||
}
|
||||
|
@ -129,32 +129,9 @@ func _zone_import(m *ice.Message, prefix, chain, file string) {
|
||||
const ZONE_FIELD = "time,zone,count"
|
||||
|
||||
func ZoneAction(fields ...string) map[string]*ice.Action {
|
||||
_zone := func(m *ice.Message) string {
|
||||
return kit.Select(kit.MDB_ZONE, m.Conf(m.PrefixKey(), kit.Keym(kit.MDB_SHORT)))
|
||||
}
|
||||
_zone := func(m *ice.Message) string { return kit.Select(kit.MDB_ZONE, m.Config(kit.MDB_SHORT)) }
|
||||
|
||||
return ice.SelectAction(map[string]*ice.Action{
|
||||
CREATE: {Name: "create zone", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(INSERT, m.PrefixKey(), "", HASH, arg)
|
||||
}},
|
||||
INSERT: {Name: "insert zone type=go name=hi text=hello", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(INSERT, m.PrefixKey(), "", HASH, _zone(m), arg[1])
|
||||
m.Cmdy(INSERT, m.PrefixKey(), "", ZONE, m.Option(_zone(m)), arg[2:])
|
||||
}},
|
||||
MODIFY: {Name: "modify", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(MODIFY, m.PrefixKey(), "", ZONE, m.Option(_zone(m)), m.Option(kit.MDB_ID), arg)
|
||||
}},
|
||||
REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(DELETE, m.PrefixKey(), "", HASH, m.OptionSimple(_zone(m)))
|
||||
}},
|
||||
EXPORT: {Name: "export", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.OptionFields(_zone(m), m.Conf(m.PrefixKey(), kit.META_FIELD))
|
||||
m.Cmdy(EXPORT, m.PrefixKey(), "", ZONE)
|
||||
m.Conf(m.PrefixKey(), kit.MDB_HASH, "")
|
||||
}},
|
||||
IMPORT: {Name: "import", Help: "导入", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.OptionFields(_zone(m))
|
||||
m.Cmdy(IMPORT, m.PrefixKey(), "", ZONE)
|
||||
}},
|
||||
INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||
switch arg[0] {
|
||||
case _zone(m):
|
||||
@ -163,5 +140,33 @@ func ZoneAction(fields ...string) map[string]*ice.Action {
|
||||
m.Cmdy(INPUTS, m.PrefixKey(), "", ZONE, m.Option(_zone(m)), arg)
|
||||
}
|
||||
}},
|
||||
CREATE: {Name: "create zone", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(INSERT, m.PrefixKey(), "", HASH, arg)
|
||||
}},
|
||||
REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(DELETE, m.PrefixKey(), "", HASH, m.OptionSimple(_zone(m)), arg)
|
||||
}},
|
||||
INSERT: {Name: "insert zone type=go name=hi text=hello", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(INSERT, m.PrefixKey(), "", HASH, _zone(m), arg[1])
|
||||
m.Cmdy(INSERT, m.PrefixKey(), "", ZONE, m.Option(_zone(m)), arg[2:])
|
||||
}},
|
||||
MODIFY: {Name: "modify", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(MODIFY, m.PrefixKey(), "", ZONE, m.Option(_zone(m)), m.Option(kit.MDB_ID), arg)
|
||||
}},
|
||||
EXPORT: {Name: "export", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.OptionFields(_zone(m), m.Config(kit.MDB_FIELD))
|
||||
m.Cmdy(EXPORT, m.PrefixKey(), "", ZONE)
|
||||
m.Conf(m.PrefixKey(), kit.MDB_HASH, "")
|
||||
}},
|
||||
IMPORT: {Name: "import", Help: "导入", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.OptionFields(_zone(m))
|
||||
m.Cmdy(IMPORT, m.PrefixKey(), "", ZONE)
|
||||
}},
|
||||
PREV: {Name: "prev", Help: "上一页", Hand: func(m *ice.Message, arg ...string) {
|
||||
PrevPage(m, arg[0], arg[1:]...)
|
||||
}},
|
||||
NEXT: {Name: "next", Help: "下一页", Hand: func(m *ice.Message, arg ...string) {
|
||||
NextPageLimit(m, arg[0], arg[1:]...)
|
||||
}},
|
||||
}, fields...)
|
||||
}
|
||||
|
@ -47,7 +47,7 @@ func init() {
|
||||
m.Cmd(TAIL, mdb.CREATE, kit.MDB_FILE, kit.Format(value[kit.MDB_FILE]), kit.MDB_NAME, kit.Format(value[kit.MDB_NAME]))
|
||||
})
|
||||
}},
|
||||
TAIL: {Name: "tail name id auto page filter:text create", Help: "日志流", Action: map[string]*ice.Action{
|
||||
TAIL: {Name: "tail name id auto page filter:text create", Help: "日志流", Action: ice.MergeAction(map[string]*ice.Action{
|
||||
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||
switch arg[0] {
|
||||
case FILE:
|
||||
@ -55,21 +55,17 @@ func init() {
|
||||
m.ProcessAgain()
|
||||
case kit.MDB_NAME:
|
||||
m.Push(arg[0], kit.Split(m.Option(FILE), "/"))
|
||||
case "limit":
|
||||
m.Push("limit", 10)
|
||||
m.Push("limit", 20)
|
||||
m.Push("limit", 30)
|
||||
m.Push("limit", 50)
|
||||
}
|
||||
}},
|
||||
mdb.CREATE: {Name: "create file name", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
|
||||
_tail_create(m, arg...)
|
||||
}},
|
||||
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.DELETE, TAIL, "", mdb.HASH, m.OptionSimple(kit.MDB_NAME))
|
||||
}},
|
||||
mdb.PREV: {Name: "prev", Help: "上一页", Hand: func(m *ice.Message, arg ...string) {
|
||||
mdb.PrevPage(m, arg[0], arg[1:]...)
|
||||
}},
|
||||
mdb.NEXT: {Name: "next", Help: "下一页", Hand: func(m *ice.Message, arg ...string) {
|
||||
mdb.NextPageLimit(m, arg[0], arg[1:]...)
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.ZoneAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Fields(len(kit.Slice(arg, 0, 2)), "time,name,count,file", "time,id,file,text")
|
||||
m.Option(mdb.CACHE_FILTER, kit.Select("", arg, 4))
|
||||
m.Option(mdb.CACHE_OFFEND, kit.Select("0", arg, 3))
|
||||
|
@ -100,8 +100,10 @@ func _autogen_version(m *ice.Message) {
|
||||
m.Cmdy(cli.SYSTEM, "go", "mod", "init", path.Base(kit.Path("")))
|
||||
}
|
||||
|
||||
file := ice.SRC_VERSION_GO
|
||||
m.Cmd(nfs.SAVE, file, kit.Format(`package main
|
||||
m.Cmd(nfs.DEFS, ice.SRC_BINPACK_GO, kit.Format(`package main
|
||||
`))
|
||||
|
||||
m.Cmd(nfs.SAVE, ice.SRC_VERSION_GO, kit.Format(`package main
|
||||
|
||||
import (
|
||||
"shylinux.com/x/icebergs"
|
||||
@ -124,10 +126,9 @@ func init() {
|
||||
strings.TrimSpace(m.Cmdx(cli.SYSTEM, "git", "describe", "--tags")),
|
||||
ice.Info.HostName, ice.Info.UserName,
|
||||
))
|
||||
defer m.Cmdy(nfs.CAT, file)
|
||||
|
||||
m.Cmdy(nfs.DIR, file, "time,size,line,path")
|
||||
m.Cmdy(nfs.DIR, ice.SRC_BINPACK_GO, "time,size,line,path")
|
||||
m.Cmdy(nfs.DIR, ice.SRC_VERSION_GO, "time,size,line,path")
|
||||
m.Cmdy(nfs.DIR, ice.SRC_MAIN_GO, "time,size,line,path")
|
||||
}
|
||||
func _autogen_miss(m *ice.Message) {
|
||||
|
@ -16,12 +16,15 @@ func init() {
|
||||
kit.MDB_SHORT, kit.MDB_ZONE, kit.MDB_FIELD, "time,id,name,cmd,api,arg,res",
|
||||
)},
|
||||
}, Commands: map[string]*ice.Command{
|
||||
CASE: {Name: "case zone id auto", Help: "用例", Action: ice.MergeAction(map[string]*ice.Action{
|
||||
mdb.INSERT: {Name: "create zone name=hi cmd=POST,GET api arg:textarea res:textarea", Help: "添加"},
|
||||
CASE: {Name: "case dev zone id auto", Help: "用例", Action: ice.MergeAction(map[string]*ice.Action{
|
||||
mdb.CREATE: {Name: "create name address", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(web.SPIDE, mdb.CREATE, arg)
|
||||
}},
|
||||
mdb.INSERT: {Name: "insert zone name=hi cmd=POST,GET api arg:textarea res:textarea", Help: "添加"},
|
||||
|
||||
cli.RUN: {Name: "run", Help: "运行", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Option(web.SPIDE_HEADER, web.ContentType, web.ContentJSON)
|
||||
m.Echo(kit.Formats(kit.UnMarshal(m.Cmdx(web.SPIDE, ice.DEV, web.SPIDE_RAW,
|
||||
m.Echo(kit.Formats(kit.UnMarshal(m.Cmdx(web.SPIDE, m.Option(ice.DEV), web.SPIDE_RAW,
|
||||
m.Option(cli.CMD), m.Option(cli.API), web.SPIDE_DATA, m.Option(cli.ARG)))))
|
||||
m.Info(`curl "` + m.Option(cli.API) + `" -H "Content-Type: application/json"` + ` -d '` + m.Option(cli.ARG) + `'`)
|
||||
m.ProcessDisplay("/plugin/local/wiki/json.js")
|
||||
@ -58,9 +61,17 @@ func init() {
|
||||
m.Echo(ice.OK)
|
||||
}},
|
||||
}, mdb.ZoneAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Fields(len(arg), "time,zone,count", m.Conf(m.PrefixKey(), kit.META_FIELD))
|
||||
if m.Cmdy(mdb.SELECT, m.PrefixKey(), "", mdb.ZONE, arg); len(arg) == 0 {
|
||||
m.Action(mdb.CREATE, mdb.EXPORT, mdb.IMPORT)
|
||||
if len(arg) == 0 {
|
||||
m.Action(mdb.CREATE)
|
||||
m.Cmdy(web.SPIDE)
|
||||
m.RenameAppend("client.name", "dev")
|
||||
m.RenameAppend("client.url", "address")
|
||||
return
|
||||
}
|
||||
|
||||
m.Fields(len(arg)-1, "time,zone,count", m.Config(kit.MDB_FIELD))
|
||||
if m.Cmdy(mdb.SELECT, m.PrefixKey(), "", mdb.ZONE, arg[1:]); len(arg) == 1 {
|
||||
m.Action(mdb.INSERT, mdb.EXPORT, mdb.IMPORT)
|
||||
m.PushAction(mdb.INSERT, cli.CHECK, mdb.REMOVE)
|
||||
} else {
|
||||
m.Action(mdb.INSERT, cli.CHECK)
|
||||
|
@ -3,72 +3,70 @@ package code
|
||||
import (
|
||||
"os"
|
||||
"path"
|
||||
"strings"
|
||||
|
||||
ice "shylinux.com/x/icebergs"
|
||||
"shylinux.com/x/icebergs/base/cli"
|
||||
"shylinux.com/x/icebergs/base/mdb"
|
||||
"shylinux.com/x/icebergs/base/nfs"
|
||||
"shylinux.com/x/icebergs/base/tcp"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
)
|
||||
|
||||
const COMPILE = "compile"
|
||||
|
||||
func init() {
|
||||
Index.Merge(&ice.Context{
|
||||
Configs: map[string]*ice.Config{
|
||||
COMPILE: {Name: COMPILE, Help: "编译", Value: kit.Data(
|
||||
kit.MDB_PATH, ice.USR_PUBLISH, cli.ENV, kit.Dict(
|
||||
"CGO_ENABLED", "0", "GOCACHE", os.Getenv("GOCACHE"),
|
||||
cli.HOME, os.Getenv(cli.HOME), cli.PATH, os.Getenv(cli.PATH),
|
||||
"GOPROXY", "https://goproxy.cn,direct", "GOPRIVATE", "github.com",
|
||||
), GO, []interface{}{GO, cli.BUILD},
|
||||
)},
|
||||
},
|
||||
Commands: map[string]*ice.Command{
|
||||
COMPILE: {Name: "compile arch=amd64,386,arm os=linux,darwin,windows src=src/main.go@key run:button", Help: "编译", Action: map[string]*ice.Action{
|
||||
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(nfs.DIR, "src", "path,size,time", ice.Option{nfs.DIR_REG, `.*\.go$`})
|
||||
m.Sort(kit.MDB_PATH)
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
m.Cmdy(nfs.DIR, m.Conf(COMPILE, kit.META_PATH), "time,size,path")
|
||||
return
|
||||
}
|
||||
Index.Merge(&ice.Context{Configs: map[string]*ice.Config{
|
||||
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",
|
||||
), GO, kit.List(GO, cli.BUILD),
|
||||
)},
|
||||
}, Commands: map[string]*ice.Command{
|
||||
COMPILE: {Name: "compile arch=amd64,386,arm os=linux,darwin,windows src=src/main.go@key run:button", Help: "编译", Action: map[string]*ice.Action{
|
||||
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(nfs.DIR, ice.SRC, "path,size,time", ice.Option{nfs.DIR_REG, `.*\.go$`})
|
||||
m.Sort(kit.MDB_PATH)
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
m.Cmdy(nfs.DIR, m.Config(nfs.PATH), "time,size,path")
|
||||
return
|
||||
}
|
||||
|
||||
main := ice.SRC_MAIN_GO
|
||||
goos := m.Conf(cli.RUNTIME, "host.GOOS")
|
||||
arch := m.Conf(cli.RUNTIME, "host.GOARCH")
|
||||
for _, k := range arg {
|
||||
switch k {
|
||||
case cli.LINUX, cli.DARWIN, cli.WINDOWS:
|
||||
goos = k
|
||||
case "amd64", "386", "arm":
|
||||
arch = k
|
||||
default:
|
||||
// 交叉编译
|
||||
main := ice.SRC_MAIN_GO
|
||||
goos := m.Conf(cli.RUNTIME, kit.Keys(tcp.HOST, cli.GOOS))
|
||||
arch := m.Conf(cli.RUNTIME, kit.Keys(tcp.HOST, cli.GOARCH))
|
||||
for _, k := range arg {
|
||||
switch k {
|
||||
case cli.LINUX, cli.DARWIN, cli.WINDOWS:
|
||||
goos = k
|
||||
case cli.AMD64, cli.I386, cli.ARM:
|
||||
arch = k
|
||||
default:
|
||||
if kit.Ext(k) == GO {
|
||||
main = k
|
||||
}
|
||||
}
|
||||
_autogen_version(m.Spawn())
|
||||
}
|
||||
file := path.Join(kit.Select("", m.Config(nfs.PATH), m.Option(cli.CMD_DIR) == ""),
|
||||
kit.Keys(kit.Select(ice.ICE, kit.TrimExt(main, ".go"), main != ice.SRC_MAIN_GO), goos, arch))
|
||||
|
||||
// 编译目标
|
||||
file := path.Join(kit.Select("", m.Conf(COMPILE, kit.META_PATH), m.Option(cli.CMD_DIR) == ""),
|
||||
kit.Keys(kit.Select("ice", path.Base(strings.TrimSuffix(main, ".go")), main != ice.SRC_MAIN_GO), goos, arch))
|
||||
// 执行编译
|
||||
_autogen_version(m.Spawn())
|
||||
m.Optionv(cli.CMD_ENV, kit.Simple(m.Confv(COMPILE, kit.Keym(cli.ENV)), cli.GOOS, goos, cli.GOARCH, arch))
|
||||
if msg := m.Cmd(cli.SYSTEM, m.Confv(COMPILE, kit.Keym(GO)), "-o", file, main, ice.SRC_VERSION_GO, ice.SRC_BINPACK_GO); !cli.IsSuccess(msg) {
|
||||
m.Copy(msg)
|
||||
return
|
||||
}
|
||||
|
||||
// 编译参数
|
||||
m.Optionv(cli.CMD_ENV, kit.Simple(m.Confv(COMPILE, kit.Keym(cli.ENV)), "GOARCH", arch, "GOOS", goos))
|
||||
if msg := m.Cmd(cli.SYSTEM, m.Confv(COMPILE, kit.Keym(GO)),
|
||||
"-o", file, main, ice.SRC_VERSION_GO, ice.SRC_BINPACK_GO); msg.Append(cli.CMD_CODE) != "0" {
|
||||
m.Copy(msg)
|
||||
return
|
||||
}
|
||||
|
||||
m.Log_EXPORT(cli.SOURCE, main, cli.TARGET, file)
|
||||
m.Cmdy(nfs.DIR, file)
|
||||
m.EchoDownload(file)
|
||||
m.StatusTimeCount()
|
||||
}},
|
||||
},
|
||||
})
|
||||
// 编译成功
|
||||
m.Log_EXPORT(cli.SOURCE, main, cli.TARGET, file)
|
||||
m.Cmdy(nfs.DIR, file, "time,path,size,link,action")
|
||||
m.Cmdy(PUBLISH, ice.CONTEXTS, "base")
|
||||
m.StatusTimeCount()
|
||||
}},
|
||||
}})
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user