forked from x/icebergs
opt some
This commit is contained in:
parent
98f4835f9d
commit
c3c91d5eb9
@ -130,7 +130,7 @@ func init() {
|
||||
m.Echo(ice.OK)
|
||||
}
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
_role_list(m, kit.Select("", arg, 0))
|
||||
m.PushAction(mdb.DELETE)
|
||||
}},
|
||||
|
@ -77,7 +77,7 @@ func init() {
|
||||
}, Commands: map[string]*ice.Command{
|
||||
SESS: {Name: "sess hash auto prunes", Help: "会话", Action: ice.MergeAction(map[string]*ice.Action{
|
||||
mdb.CREATE: {Name: "create username", Help: "创建"},
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
mdb.HashSelect(m, arg...)
|
||||
}},
|
||||
}})
|
||||
|
@ -66,8 +66,8 @@ func init() {
|
||||
|
||||
m.Cmd(mdb.INSERT, TOTP, "", mdb.HASH, m.OptionSimple(mdb.NAME, SECRET, PERIOD, NUMBER))
|
||||
}},
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
mdb.HashSelect(m.Spawn(c), arg...).Table(func(index int, value map[string]string, head []string) {
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
mdb.HashSelect(m.Spawn(), arg...).Tables(func(value map[string]string) {
|
||||
if len(arg) > 0 {
|
||||
m.OptionFields(mdb.DETAIL)
|
||||
}
|
||||
|
@ -130,7 +130,7 @@ func init() {
|
||||
_user_create(m, m.Option(USERROLE), m.Option(USERNAME), m.Option(PASSWORD))
|
||||
}
|
||||
}},
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
mdb.HashSelect(m, arg...)
|
||||
}},
|
||||
}})
|
||||
|
@ -50,6 +50,8 @@ func _daemon_exec(m *ice.Message, cmd *exec.Cmd) {
|
||||
cb(m.Conf(DAEMON, kit.Keys(mdb.HASH, h, kit.Keym(STATUS))))
|
||||
case func():
|
||||
cb()
|
||||
default:
|
||||
m.Error(true, ice.ErrNotImplement)
|
||||
}
|
||||
|
||||
for _, p := range kit.Simple(CMD_INPUT, CMD_OUTPUT, CMD_ERRPUT) {
|
||||
@ -131,7 +133,7 @@ func init() {
|
||||
m.SetAppend()
|
||||
}
|
||||
}},
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
mdb.HashSelect(m, arg...).Set(ctx.ACTION).Table(func(index int, value map[string]string, head []string) {
|
||||
switch value[STATUS] {
|
||||
case START:
|
||||
|
@ -54,7 +54,7 @@ func init() {
|
||||
STOP: {Name: "stop", Help: "停止", Hand: func(m *ice.Message, arg ...string) {
|
||||
_forever_kill(m, "QUIT")
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
_forever_kill(m, "")
|
||||
return
|
||||
|
@ -135,7 +135,7 @@ func init() {
|
||||
return m.Cmd(QRCODE, kit.Simple(args...)).Result()
|
||||
})
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Option(SIZE, kit.Select("240", arg, 3))
|
||||
m.Option(BG, kit.Select(WHITE, arg, 2))
|
||||
m.Option(FG, kit.Select(BLUE, arg, 1))
|
||||
|
@ -219,7 +219,7 @@ func init() {
|
||||
m.Echo(kit.MergePOD(os.Getenv(CTX_DEV), os.Getenv(CTX_POD)))
|
||||
}
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
if len(arg) > 0 && arg[0] == BOOTINFO {
|
||||
arg = arg[1:]
|
||||
}
|
||||
|
@ -154,7 +154,7 @@ func init() {
|
||||
nfs.FIND: {Name: "find", Help: "查找", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Echo(_system_find(m, arg[0], arg[1:]...))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) {
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
mdb.ListSelect(m, arg...)
|
||||
return
|
||||
|
@ -72,8 +72,8 @@ func _command_search(m *ice.Message, kind, name, text string) {
|
||||
})
|
||||
}
|
||||
|
||||
func CmdAction(fields ...string) map[string]*ice.Action {
|
||||
return ice.SelectAction(map[string]*ice.Action{
|
||||
func CmdAction(args ...ice.Any) map[string]*ice.Action {
|
||||
return map[string]*ice.Action{ice.CTX_INIT: mdb.AutoConfig(args...),
|
||||
COMMAND: {Name: "command", Help: "命令", Hand: func(m *ice.Message, arg ...string) {
|
||||
if !m.PodCmd(COMMAND, arg) {
|
||||
m.Cmdy(COMMAND, arg)
|
||||
@ -84,7 +84,7 @@ func CmdAction(fields ...string) map[string]*ice.Action {
|
||||
m.Cmdy(arg)
|
||||
}
|
||||
}},
|
||||
}, fields...)
|
||||
}
|
||||
}
|
||||
|
||||
const (
|
||||
@ -110,7 +110,7 @@ func init() {
|
||||
_command_search(m, arg[0], kit.Select("", arg, 1), kit.Select("", arg, 2))
|
||||
}
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
arg = append(arg, "")
|
||||
}
|
||||
|
@ -126,7 +126,7 @@ func init() {
|
||||
m.Conf(m.Option("key"), m.Option("sub"), "")
|
||||
m.Go(func() { m.Cmd(ice.EXIT, 1) })
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
_config_list(m)
|
||||
return
|
||||
|
@ -54,7 +54,7 @@ func init() {
|
||||
m.Cmdy(COMMAND, kit.Keys(index, strings.Split(arg[2], ice.SP)[0]))
|
||||
}
|
||||
}},
|
||||
}, CmdAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, CmdAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
arg = append(arg, m.Source().Cap(ice.CTX_FOLLOW))
|
||||
}
|
||||
|
@ -13,7 +13,7 @@ const MESSAGE = "message"
|
||||
|
||||
func init() {
|
||||
Index.Merge(&ice.Context{Commands: map[string]*ice.Command{
|
||||
MESSAGE: {Name: "message", Help: "消息", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
MESSAGE: {Name: "message", Help: "消息", Hand: func(m *ice.Message, arg ...string) {
|
||||
t := reflect.TypeOf(m)
|
||||
for i := 0; i < t.NumMethod(); i++ {
|
||||
method := t.Method(i)
|
||||
|
@ -29,7 +29,7 @@ func init() {
|
||||
HAPPEN: {Name: "happen event arg", Help: "触发", Hand: func(m *ice.Message, arg ...string) {
|
||||
_event_action(m, m.Option(EVENT), arg[2:]...)
|
||||
}},
|
||||
}, mdb.ZoneAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.ZoneAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
if mdb.ZoneSelect(m, arg...); len(arg) == 0 {
|
||||
m.PushAction(HAPPEN, mdb.REMOVE)
|
||||
}
|
||||
|
@ -46,10 +46,10 @@ func (f *Frame) Close(m *ice.Message, arg ...string) bool {
|
||||
const GDB = "gdb"
|
||||
|
||||
var Index = &ice.Context{Name: GDB, Help: "事件模块", Commands: map[string]*ice.Command{
|
||||
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Load(TIMER)
|
||||
}},
|
||||
ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
ice.CTX_EXIT: {Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Save(TIMER)
|
||||
}},
|
||||
}}
|
||||
|
@ -26,7 +26,7 @@ func init() {
|
||||
ls := kit.Split(m.Option("fileline"), ":")
|
||||
m.ProcessCommand("inner", []string{path.Dir(ls[0]), path.Base(ls[0]), ls[1]}, arg...)
|
||||
}},
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
mdb.HashSelect(m, arg...)
|
||||
m.PushAction("inner", mdb.REMOVE)
|
||||
}},
|
||||
|
@ -67,7 +67,7 @@ func init() {
|
||||
HAPPEN: {Name: "happen signal", Help: "触发", Hand: func(m *ice.Message, arg ...string) {
|
||||
_signal_action(m, m.Option(SIGNAL))
|
||||
}},
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
mdb.HashSelect(m, arg...).Sort(SIGNAL)
|
||||
m.PushAction(HAPPEN, mdb.REMOVE)
|
||||
}},
|
||||
|
@ -57,7 +57,7 @@ func init() {
|
||||
HAPPEN: {Name: "happen", Help: "执行", Hand: func(m *ice.Message, arg ...string) {
|
||||
_timer_action(m, arg...)
|
||||
}},
|
||||
}, mdb.ZoneAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.ZoneAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Fields(len(arg), m.Config(mdb.FIELD), "time,id,res")
|
||||
mdb.ZoneSelect(m, arg...)
|
||||
}},
|
||||
|
@ -398,6 +398,8 @@ func init() {
|
||||
switch cb := m.OptionCB(MATRIX).(type) {
|
||||
case func(string, *Matrix):
|
||||
cb(h, mat)
|
||||
default:
|
||||
m.Error(true, ice.ErrNotImplement)
|
||||
}
|
||||
m.Echo(h)
|
||||
}},
|
||||
@ -438,7 +440,7 @@ func init() {
|
||||
})
|
||||
m.ProcessInner()
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) {
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
if m.Action(mdb.CREATE); len(arg) == 0 { // 矩阵列表
|
||||
m.Fields(len(arg), "time,hash,npage,nhash")
|
||||
m.Cmdy(mdb.SELECT, m.PrefixKey(), "", mdb.HASH)
|
||||
|
@ -59,6 +59,8 @@ func _split_list(m *ice.Message, file string, arg ...string) ice.Map {
|
||||
ls = cb(ls, data)
|
||||
case func([]string):
|
||||
cb(ls)
|
||||
default:
|
||||
m.Error(true, ice.ErrNotImplement)
|
||||
}
|
||||
|
||||
// 参数字段
|
||||
@ -102,7 +104,7 @@ func init() {
|
||||
Index.Merge(&ice.Context{Configs: map[string]*ice.Config{
|
||||
SPLIT: {Name: "split", Help: "解析", Value: kit.Data()},
|
||||
}, Commands: map[string]*ice.Command{
|
||||
SPLIT: {Name: "split path key auto", Help: "解析", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
SPLIT: {Name: "split path key auto", Help: "解析", Hand: func(m *ice.Message, arg ...string) {
|
||||
if len(arg) == 0 || strings.HasSuffix(arg[0], ice.PS) {
|
||||
m.Cmdy(nfs.DIR, arg)
|
||||
return
|
||||
|
@ -122,7 +122,7 @@ var Index = &ice.Context{Name: "log", Help: "日志模块", Configs: map[string]
|
||||
)},
|
||||
SHOW: {Name: SHOW, Help: "日志分流", Value: kit.Dict()},
|
||||
}, Commands: map[string]*ice.Command{
|
||||
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) {
|
||||
if log.LogDisable {
|
||||
return // 禁用日志
|
||||
}
|
||||
@ -143,7 +143,7 @@ var Index = &ice.Context{Name: "log", Help: "日志模块", Configs: map[string]
|
||||
}
|
||||
})
|
||||
}},
|
||||
ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {}},
|
||||
ice.CTX_EXIT: {Hand: func(m *ice.Message, arg ...string) {}},
|
||||
}}
|
||||
|
||||
func init() { ice.Index.Register(Index, &Frame{}) }
|
||||
|
@ -17,7 +17,7 @@ func init() {
|
||||
m.Option(TYPE, kit.Ext(m.Option(TYPE)))
|
||||
m.Cmdy(INSERT, m.PrefixKey(), "", HASH, m.OptionSimple("type,name,text"))
|
||||
}},
|
||||
}, HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, HashAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
if len(arg) > 1 {
|
||||
m.Cmdy(SELECT, m.PrefixKey(), "", HASH, m.Config(SHORT), arg, func(value ice.Map) {
|
||||
m.Cmdy(kit.Keys(value[TEXT], value[NAME]), m.CommandKey(), arg[0], arg[1], kit.Select("", arg, 2), kit.Slice(arg, 3))
|
||||
|
@ -151,7 +151,7 @@ func AutoConfig(args ...ice.Any) *ice.Action {
|
||||
cs[m.CommandKey()] = &ice.Config{Value: kit.Data(args...)}
|
||||
m.Load(m.CommandKey())
|
||||
}
|
||||
if cs := m.Target().Commands; cs[m.CommandKey()].Meta[CREATE] != nil {
|
||||
if cs := m.Target().Commands; cs[m.CommandKey()] == nil || cs[m.CommandKey()].Meta[CREATE] != nil {
|
||||
return
|
||||
}
|
||||
|
||||
@ -176,7 +176,7 @@ func HashAction(args ...ice.Any) map[string]*ice.Action {
|
||||
}
|
||||
return kit.Select(HASH, m.Config(SHORT))
|
||||
}
|
||||
return ice.SelectAction(map[string]*ice.Action{ice.CTX_INIT: AutoConfig(args...),
|
||||
return map[string]*ice.Action{ice.CTX_INIT: AutoConfig(args...),
|
||||
INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(INPUTS, m.PrefixKey(), "", HASH, arg)
|
||||
}},
|
||||
@ -204,7 +204,7 @@ func HashAction(args ...ice.Any) map[string]*ice.Action {
|
||||
SELECT: &ice.Action{Name: "select hash auto", Help: "列表", Hand: func(m *ice.Message, arg ...string) {
|
||||
HashSelect(m, arg...)
|
||||
}},
|
||||
})
|
||||
}
|
||||
}
|
||||
func HashActionStatus(args ...ice.Any) map[string]*ice.Action {
|
||||
list := HashAction(args...)
|
||||
|
@ -133,8 +133,8 @@ func _list_prunes(m *ice.Message, prefix, chain string, arg ...string) {
|
||||
|
||||
const LIST = "list"
|
||||
|
||||
func ListAction(fields ...string) map[string]*ice.Action {
|
||||
return ice.SelectAction(map[string]*ice.Action{
|
||||
func ListAction(args ...ice.Any) map[string]*ice.Action {
|
||||
return map[string]*ice.Action{ice.CTX_INIT: AutoConfig(args...),
|
||||
INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(INPUTS, m.PrefixKey(), "", LIST, arg)
|
||||
}},
|
||||
@ -169,7 +169,7 @@ func ListAction(fields ...string) map[string]*ice.Action {
|
||||
SELECT: {Name: "select", Help: "列表", Hand: func(m *ice.Message, arg ...string) {
|
||||
ListSelect(m, arg...)
|
||||
}},
|
||||
}, fields...)
|
||||
}
|
||||
}
|
||||
func ListSelect(m *ice.Message, arg ...string) *ice.Message {
|
||||
m.OptionPage(kit.Slice(arg, 1)...)
|
||||
|
@ -143,9 +143,9 @@ func NextPageLimit(m *ice.Message, total string, arg ...string) {
|
||||
const MDB = "mdb"
|
||||
|
||||
var Index = &ice.Context{Name: MDB, Help: "数据模块", Commands: map[string]*ice.Command{
|
||||
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {}},
|
||||
ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {}},
|
||||
INSERT: {Name: "insert key sub type arg...", Help: "添加", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) {}},
|
||||
ice.CTX_EXIT: {Hand: func(m *ice.Message, arg ...string) {}},
|
||||
INSERT: {Name: "insert key sub type arg...", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
switch arg[2] {
|
||||
case ZONE: // insert key sub type zone arg...
|
||||
_list_insert(m, arg[0], _domain_chain(m, kit.Keys(arg[1], kit.KeyHash(arg[3]))), arg[4:]...)
|
||||
@ -156,7 +156,7 @@ var Index = &ice.Context{Name: MDB, Help: "数据模块", Commands: map[string]*
|
||||
}
|
||||
m.ProcessRefresh3ms()
|
||||
}},
|
||||
DELETE: {Name: "delete key sub type field value", Help: "删除", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
DELETE: {Name: "delete key sub type field value", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
switch arg[2] {
|
||||
case ZONE: // delete key sub type zone field value
|
||||
_list_delete(m, arg[0], _domain_chain(m, kit.Keys(arg[1], kit.KeyHash(arg[3]))), arg[4], arg[5])
|
||||
@ -167,7 +167,7 @@ var Index = &ice.Context{Name: MDB, Help: "数据模块", Commands: map[string]*
|
||||
}
|
||||
m.ProcessRefresh3ms()
|
||||
}},
|
||||
MODIFY: {Name: "modify key sub type field value arg...", Help: "编辑", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
MODIFY: {Name: "modify key sub type field value arg...", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
|
||||
switch arg[2] {
|
||||
case ZONE: // modify key sub type zone id field value
|
||||
_list_modify(m, arg[0], _domain_chain(m, kit.Keys(arg[1], kit.KeyHash(arg[3]))), ID, arg[4], arg[5:]...)
|
||||
@ -177,7 +177,7 @@ var Index = &ice.Context{Name: MDB, Help: "数据模块", Commands: map[string]*
|
||||
_list_modify(m, arg[0], _domain_chain(m, arg[1]), arg[3], arg[4], arg[5:]...)
|
||||
}
|
||||
}},
|
||||
SELECT: {Name: "select key sub type field value", Help: "查询", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
SELECT: {Name: "select key sub type field value", Help: "查询", Hand: func(m *ice.Message, arg ...string) {
|
||||
switch arg[2] {
|
||||
case ZONE:
|
||||
_zone_select(m, arg[0], _domain_chain(m, arg[1]), kit.Select("", arg, 3), kit.Select("", arg, 4))
|
||||
@ -187,7 +187,7 @@ var Index = &ice.Context{Name: MDB, Help: "数据模块", Commands: map[string]*
|
||||
_list_select(m, arg[0], _domain_chain(m, arg[1]), kit.Select("", arg, 3), kit.Select("", arg, 4))
|
||||
}
|
||||
}},
|
||||
INPUTS: {Name: "inputs key sub type field value", Help: "补全", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
INPUTS: {Name: "inputs key sub type field value", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||
switch arg[2] {
|
||||
case ZONE: // inputs key sub type zone field value
|
||||
_list_inputs(m, arg[0], _domain_chain(m, kit.Keys(arg[1], kit.KeyHash(arg[3]))), kit.Select(NAME, arg, 4), kit.Select("", arg, 5))
|
||||
@ -197,7 +197,7 @@ var Index = &ice.Context{Name: MDB, Help: "数据模块", Commands: map[string]*
|
||||
_list_inputs(m, arg[0], _domain_chain(m, arg[1]), kit.Select(NAME, arg, 3), kit.Select("", arg, 4))
|
||||
}
|
||||
}},
|
||||
PRUNES: {Name: "prunes key sub type [field value]...", Help: "清理", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
PRUNES: {Name: "prunes key sub type [field value]...", Help: "清理", Hand: func(m *ice.Message, arg ...string) {
|
||||
switch arg[2] {
|
||||
case ZONE: // prunes key sub type zone field value
|
||||
_list_prunes(m, arg[0], _domain_chain(m, kit.Keys(arg[1], kit.KeyHash(arg[3]))), arg[4:]...)
|
||||
@ -207,7 +207,7 @@ var Index = &ice.Context{Name: MDB, Help: "数据模块", Commands: map[string]*
|
||||
_list_prunes(m, arg[0], _domain_chain(m, arg[1]), arg[3:]...)
|
||||
}
|
||||
}},
|
||||
EXPORT: {Name: "export key sub type file", Help: "导出", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
EXPORT: {Name: "export key sub type file", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
|
||||
if m.Option(ice.CACHE_LIMIT) == "" {
|
||||
m.Option(ice.CACHE_LIMIT, "-1")
|
||||
}
|
||||
@ -220,7 +220,7 @@ var Index = &ice.Context{Name: MDB, Help: "数据模块", Commands: map[string]*
|
||||
_list_export(m, arg[0], _domain_chain(m, arg[1]), file)
|
||||
}
|
||||
}},
|
||||
IMPORT: {Name: "import key sub type file", Help: "导入", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
IMPORT: {Name: "import key sub type file", Help: "导入", Hand: func(m *ice.Message, arg ...string) {
|
||||
switch file := _file_name(m, arg...); arg[2] {
|
||||
case ZONE:
|
||||
_zone_import(m, arg[0], _domain_chain(m, arg[1]), file)
|
||||
|
@ -17,7 +17,7 @@ func init() {
|
||||
m.Option(TYPE, kit.Ext(m.Option(TYPE)))
|
||||
m.Cmdy(INSERT, m.PrefixKey(), "", HASH, m.OptionSimple("type,name,text"))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
if len(arg) > 1 {
|
||||
m.Cmdy(SELECT, m.PrefixKey(), "", HASH, m.Config(SHORT), arg, func(value ice.Map) {
|
||||
m.Cmdy(kit.Keys(value[TEXT], value[NAME]), m.CommandKey(), arg[0], arg[1], kit.Select("", arg, 2), kit.Slice(arg, 3))
|
||||
|
@ -17,7 +17,7 @@ func init() {
|
||||
m.Option(TYPE, kit.Ext(m.Option(TYPE)))
|
||||
m.Cmdy(INSERT, m.PrefixKey(), "", HASH, m.OptionSimple("type,name,text"))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
if len(arg) > 1 {
|
||||
m.Cmdy(SELECT, m.PrefixKey(), "", HASH, m.Config(SHORT), arg, func(value ice.Map) {
|
||||
m.Cmdy(kit.Keys(value[TEXT], value[NAME]), m.CommandKey(), arg[0], arg[1], kit.Select("", arg, 2), kit.Slice(arg, 3))
|
||||
|
@ -17,7 +17,7 @@ func init() {
|
||||
m.Option(TYPE, kit.Ext(m.Option(TYPE)))
|
||||
m.Cmdy(INSERT, m.PrefixKey(), "", HASH, m.OptionSimple("type,name,text"))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
if len(arg) > 1 {
|
||||
m.Cmdy(SELECT, m.PrefixKey(), "", HASH, m.Config(SHORT), kit.Slice(arg, 0, 1), func(value ice.Map) {
|
||||
m.OptionFields(kit.Select("ctx,cmd,type,name,text", kit.Select(m.OptionFields())))
|
||||
|
@ -148,7 +148,7 @@ const ZONE = "zone"
|
||||
func ZoneAction(args ...ice.Any) map[string]*ice.Action {
|
||||
_zone := func(m *ice.Message) string { return kit.Select(ZONE, m.Config(SHORT)) }
|
||||
|
||||
return ice.SelectAction(map[string]*ice.Action{ice.CTX_INIT: AutoConfig(args...),
|
||||
return map[string]*ice.Action{ice.CTX_INIT: AutoConfig(args...),
|
||||
INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||
arg[0] = strings.TrimPrefix(arg[0], "extra.")
|
||||
arg[0] = kit.Select(arg[0], m.Config(kit.Keys(ALIAS, arg[0])))
|
||||
@ -208,7 +208,7 @@ func ZoneAction(args ...ice.Any) map[string]*ice.Action {
|
||||
SELECT: {Name: "select", Help: "列表", Hand: func(m *ice.Message, arg ...string) {
|
||||
ZoneSelect(m, arg...)
|
||||
}},
|
||||
})
|
||||
}
|
||||
}
|
||||
func ZoneSelect(m *ice.Message, arg ...string) *ice.Message {
|
||||
arg = kit.Slice(arg, 0, 2)
|
||||
|
@ -58,6 +58,8 @@ func _cat_find(m *ice.Message, name string) io.ReadCloser {
|
||||
if s := h(m, name); s != "" {
|
||||
return NewReadCloser(bytes.NewBufferString(s))
|
||||
}
|
||||
default:
|
||||
m.Error(true, ice.ErrNotImplement)
|
||||
}
|
||||
}
|
||||
|
||||
@ -182,7 +184,7 @@ func init() {
|
||||
mdb.RENDER: {Name: "render type name text", Help: "渲染", Hand: func(m *ice.Message, arg ...string) {
|
||||
_cat_list(m, path.Join(arg[2], arg[1]))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
if len(arg) == 0 || strings.HasSuffix(arg[0], ice.PS) {
|
||||
m.Cmdy(DIR, arg)
|
||||
return
|
||||
|
@ -84,6 +84,9 @@ func _dir_list(m *ice.Message, root string, name string, level int, deep bool, d
|
||||
case func(p string):
|
||||
cb(p)
|
||||
continue
|
||||
case nil:
|
||||
default:
|
||||
m.Error(true, ice.ErrNotImplement)
|
||||
}
|
||||
|
||||
for _, field := range fields {
|
||||
@ -258,7 +261,7 @@ func init() {
|
||||
TRASH: {Name: "trash", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(TRASH, m.Option(PATH))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
if m.Option(DIR_ROOT) != "" {
|
||||
m.Info("dir_root: %v", m.Option(DIR_ROOT))
|
||||
}
|
||||
|
@ -10,7 +10,7 @@ const FIND = "find"
|
||||
|
||||
func init() {
|
||||
Index.Merge(&ice.Context{Commands: map[string]*ice.Command{
|
||||
FIND: {Name: "find path word auto", Help: "搜索", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
FIND: {Name: "find path word auto", Help: "搜索", Hand: func(m *ice.Message, arg ...string) {
|
||||
for _, file := range strings.Split(m.Cmdx("cli.system", FIND, PWD, "-name", arg[1]), ice.NL) {
|
||||
m.Push(FILE, strings.TrimPrefix(file, PWD))
|
||||
}
|
||||
|
@ -6,7 +6,7 @@ const GREP = "grep"
|
||||
|
||||
func init() {
|
||||
Index.Merge(&ice.Context{Commands: map[string]*ice.Command{
|
||||
GREP: {Name: "grep path word auto", Help: "搜索", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
GREP: {Name: "grep path word auto", Help: "搜索", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Option("cmd_dir", arg[0])
|
||||
m.Split(m.Cmdx("cli.system", GREP, "--exclude=.[a-z]*", "--exclude-dir=.[a-z]*", "-rni", arg[1]), "file:line:text", ":")
|
||||
}},
|
||||
|
@ -73,7 +73,7 @@ func _link_file(m *ice.Message, name string, from string) {
|
||||
os.Remove(name)
|
||||
MkdirAll(m, path.Dir(name))
|
||||
if e := os.Link(from, name); e != nil {
|
||||
if m.Warn(os.Symlink(from, name), ice.ErrFailure, from) {
|
||||
if m.Warn(os.Symlink(from, name), ice.ErrWarn, from) {
|
||||
return
|
||||
}
|
||||
}
|
||||
@ -93,22 +93,22 @@ const LINK = "link"
|
||||
|
||||
func init() {
|
||||
Index.Merge(&ice.Context{Commands: map[string]*ice.Command{
|
||||
DEFS: {Name: "defs file text...", Help: "默认", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
DEFS: {Name: "defs file text...", Help: "默认", Hand: func(m *ice.Message, arg ...string) {
|
||||
_defs_file(m, arg[0], arg[1:]...)
|
||||
}},
|
||||
SAVE: {Name: "save file text...", Help: "保存", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
SAVE: {Name: "save file text...", Help: "保存", Hand: func(m *ice.Message, arg ...string) {
|
||||
if len(arg) == 1 {
|
||||
arg = append(arg, m.Option(CONTENT))
|
||||
}
|
||||
_save_file(m, arg[0], arg[1:]...)
|
||||
}},
|
||||
PUSH: {Name: "push file text...", Help: "追加", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
PUSH: {Name: "push file text...", Help: "追加", Hand: func(m *ice.Message, arg ...string) {
|
||||
if len(arg) == 1 {
|
||||
arg = append(arg, m.Option(CONTENT))
|
||||
}
|
||||
_push_file(m, arg[0], arg[1:]...)
|
||||
}},
|
||||
COPY: {Name: "copy file from...", Help: "复制", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
COPY: {Name: "copy file from...", Help: "复制", Hand: func(m *ice.Message, arg ...string) {
|
||||
for _, file := range arg[1:] {
|
||||
if kit.FileExists(file) {
|
||||
_copy_file(m, arg[0], arg[1:]...)
|
||||
@ -116,7 +116,7 @@ func init() {
|
||||
}
|
||||
}
|
||||
}},
|
||||
LINK: {Name: "link file from", Help: "链接", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
LINK: {Name: "link file from", Help: "链接", Hand: func(m *ice.Message, arg ...string) {
|
||||
_link_file(m, arg[0], arg[1])
|
||||
}},
|
||||
}})
|
||||
|
@ -62,11 +62,11 @@ func init() {
|
||||
mdb.CREATE: {Name: "create file name", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
|
||||
_tail_create(m, arg...)
|
||||
}},
|
||||
}, mdb.ZoneAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.ZoneAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Fields(len(kit.Slice(arg, 0, 2)), "time,name,count,file", m.Config(mdb.FIELD))
|
||||
m.OptionPage(kit.Slice(arg, 2)...)
|
||||
|
||||
mdb.ZoneSelect(m.Spawn(c), arg...).Table(func(index int, value map[string]string, head []string) {
|
||||
mdb.ZoneSelect(m.Spawn(), arg...).Table(func(index int, value map[string]string, head []string) {
|
||||
if strings.Contains(value[mdb.TEXT], m.Option(ice.CACHE_FILTER)) {
|
||||
m.Push("", value, head)
|
||||
}
|
||||
|
@ -31,7 +31,7 @@ func init() {
|
||||
m.Cmd("cli.system", "tar", "xvf", arg)
|
||||
m.Echo(arg[0])
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Option("cmd_dir", m.Option(DIR_ROOT))
|
||||
m.Debug("cmd_dir: %v", m.Option("cmd_dir"))
|
||||
m.Cmdy("cli.system", "tar", "zcvf", arg)
|
||||
|
@ -59,7 +59,7 @@ func init() {
|
||||
return false
|
||||
})
|
||||
}},
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
if mdb.HashSelect(m, arg...); len(arg) == 0 || !kit.FileExists(arg[0]) {
|
||||
m.PushAction(mdb.REVERT, mdb.REMOVE)
|
||||
return
|
||||
|
@ -266,33 +266,33 @@ func init() {
|
||||
PS2, []ice.Any{mdb.COUNT, " ", TARGET, "> "},
|
||||
)},
|
||||
}, Commands: map[string]*ice.Command{
|
||||
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {}},
|
||||
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) {}},
|
||||
SOURCE: {Name: "source file", Help: "脚本解析", Action: ice.MergeAction(map[string]*ice.Action{
|
||||
"repeat": {Name: "repeat", Help: "执行", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(SCREEN, m.Option(mdb.TEXT))
|
||||
m.ProcessInner()
|
||||
}},
|
||||
}, mdb.ZoneAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.ZoneAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
if len(arg) > 0 && kit.Ext(arg[0]) == ice.SHY {
|
||||
(&Frame{}).Start(m, arg...)
|
||||
return // 脚本解析
|
||||
}
|
||||
}},
|
||||
TARGET: {Name: "target name run", Help: "当前模块", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
f := c.Server().(*Frame)
|
||||
TARGET: {Name: "target name run", Help: "当前模块", Hand: func(m *ice.Message, arg ...string) {
|
||||
f := m.Target().Server().(*Frame)
|
||||
m.Search(arg[0]+ice.PT, func(p *ice.Context, s *ice.Context, key string) { f.target = s })
|
||||
f.prompt(m)
|
||||
}},
|
||||
PROMPT: {Name: "prompt arg run", Help: "命令提示", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
PROMPT: {Name: "prompt arg run", Help: "命令提示", Hand: func(m *ice.Message, arg ...string) {
|
||||
f := m.Optionv(FRAME).(*Frame)
|
||||
f.ps1 = arg
|
||||
f.prompt(m)
|
||||
}},
|
||||
PRINTF: {Name: "printf run text", Help: "输出显示", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
PRINTF: {Name: "printf run text", Help: "输出显示", Hand: func(m *ice.Message, arg ...string) {
|
||||
f := m.Optionv(FRAME).(*Frame)
|
||||
f.printf(m, arg[0])
|
||||
}},
|
||||
SCREEN: {Name: "screen run text", Help: "输出命令", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
SCREEN: {Name: "screen run text", Help: "输出命令", Hand: func(m *ice.Message, arg ...string) {
|
||||
f := m.Optionv(FRAME).(*Frame)
|
||||
for _, line := range kit.Split(arg[0], ice.NL, ice.NL) {
|
||||
fmt.Fprintf(f.pipe, line+ice.NL)
|
||||
@ -301,7 +301,7 @@ func init() {
|
||||
}
|
||||
m.Echo(f.res)
|
||||
}},
|
||||
RETURN: {Name: "return", Help: "结束脚本", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
RETURN: {Name: "return", Help: "结束脚本", Hand: func(m *ice.Message, arg ...string) {
|
||||
f := m.Optionv(FRAME).(*Frame)
|
||||
f.Close(m, arg...)
|
||||
}},
|
||||
|
@ -92,7 +92,7 @@ func init() {
|
||||
DIAL: {Name: "dial type name port=9010 host=", Help: "连接", Hand: func(m *ice.Message, arg ...string) {
|
||||
_client_dial(m, arg...)
|
||||
}},
|
||||
}, mdb.HashActionStatus()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.HashActionStatus()), Hand: func(m *ice.Message, arg ...string) {
|
||||
mdb.HashSelect(m, arg...).Table(func(index int, value map[string]string, head []string) {
|
||||
m.PushButton(kit.Select("", mdb.REMOVE, value[STATUS] == OPEN))
|
||||
})
|
||||
|
@ -92,7 +92,7 @@ func init() {
|
||||
m.Log_CREATE(aaa.WHITE, arg[0])
|
||||
m.Rich(HOST, kit.Keym(aaa.WHITE), kit.Dict(mdb.TEXT, arg[0]))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
_host_list(m, kit.Select("", arg, 0))
|
||||
}},
|
||||
}})
|
||||
|
@ -58,7 +58,7 @@ func init() {
|
||||
m.Cmd(nfs.TRASH, path.Join(ice.USR_LOCAL_DAEMON, m.Option(PORT)))
|
||||
}
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
current := kit.Int(m.Config(BEGIN))
|
||||
m.Option(nfs.DIR_ROOT, ice.USR_LOCAL_DAEMON)
|
||||
|
@ -100,7 +100,7 @@ func init() {
|
||||
LISTEN: {Name: "LISTEN type name port=9030 host=", Help: "监听", Hand: func(m *ice.Message, arg ...string) {
|
||||
_server_listen(m, arg...)
|
||||
}},
|
||||
}, mdb.HashActionStatus()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.HashActionStatus()), Hand: func(m *ice.Message, arg ...string) {
|
||||
mdb.HashSelect(m, arg...).Table(func(index int, value map[string]string, head []string) {
|
||||
m.PushButton(kit.Select("", mdb.REMOVE, value[STATUS] == CLOSE))
|
||||
})
|
||||
|
@ -81,7 +81,7 @@ func init() {
|
||||
}},
|
||||
}, mdb.HashAction(
|
||||
mdb.SHORT, "host,port", mdb.FIELD, "time,hash,host,port",
|
||||
)), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
)), Hand: func(m *ice.Message, arg ...string) {
|
||||
mdb.HashSelect(m, arg...)
|
||||
m.PushAction(SPACE, mdb.REMOVE)
|
||||
}},
|
||||
|
@ -142,7 +142,7 @@ func init() {
|
||||
mdb.LIMIT, "50", mdb.LEAST, "30",
|
||||
)},
|
||||
}, Commands: map[string]*ice.Command{
|
||||
"/cache/": {Name: "/cache/", Help: "缓存池", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
"/cache/": {Name: "/cache/", Help: "缓存池", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Richs(CACHE, nil, arg[0], func(key string, value ice.Map) {
|
||||
if kit.Format(value[nfs.FILE]) == "" {
|
||||
m.RenderResult(value[mdb.TEXT])
|
||||
@ -172,7 +172,7 @@ func init() {
|
||||
_cache_save(m, arg[0], arg[1], "", file, size)
|
||||
}
|
||||
}},
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
if mdb.HashSelect(m, arg...); len(arg) == 0 {
|
||||
return
|
||||
}
|
||||
|
@ -137,7 +137,7 @@ func init() {
|
||||
m.Cmd(nfs.TRASH, mdb.CREATE, path.Join(m.Config(nfs.PATH), m.Option(mdb.NAME)))
|
||||
m.ProcessRefresh30ms()
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
_dream_list(m)
|
||||
m.SetAppend("text")
|
||||
|
@ -98,7 +98,7 @@ func init() {
|
||||
m.Cmdy(SPACE, m.Option(ROUTE), ctx.CONTEXT, SPIDE, "", m.Option(ctx.CONTEXT), m.Option(mdb.NAME))
|
||||
}
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
if len(arg) == 0 || arg[0] == "" { // 路由列表
|
||||
if _route_travel(m, kit.Select("", arg, 0)); m.W != nil {
|
||||
_route_list(m)
|
||||
|
@ -92,6 +92,8 @@ func _serve_main(m *ice.Message, w http.ResponseWriter, r *http.Request) bool {
|
||||
if h(w, r) {
|
||||
return false
|
||||
}
|
||||
default:
|
||||
m.Error(true, ice.ErrNotImplement)
|
||||
}
|
||||
}
|
||||
return true
|
||||
@ -374,30 +376,30 @@ func init() {
|
||||
return
|
||||
}
|
||||
}},
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
mdb.HashSelect(m, arg...)
|
||||
}},
|
||||
|
||||
"/intshell/": {Name: "/intshell/", Help: "命令行", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
"/intshell/": {Name: "/intshell/", Help: "命令行", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.RenderIndex(SERVE, ice.INTSHELL, arg...)
|
||||
}},
|
||||
"/volcanos/": {Name: "/volcanos/", Help: "浏览器", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
"/volcanos/": {Name: "/volcanos/", Help: "浏览器", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.RenderIndex(SERVE, ice.VOLCANOS, arg...)
|
||||
}},
|
||||
"/require/src/": {Name: "/require/src/", Help: "代码库", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
"/require/src/": {Name: "/require/src/", Help: "代码库", Hand: func(m *ice.Message, arg ...string) {
|
||||
if p := path.Join(ice.SRC, path.Join(arg...)); m.Option(ice.POD) != "" {
|
||||
m.RenderResult(m.Cmdx(SPACE, m.Option(ice.POD), nfs.CAT, p))
|
||||
} else {
|
||||
m.RenderDownload(p)
|
||||
}
|
||||
}},
|
||||
"/require/usr/": {Name: "/require/usr/", Help: "代码库", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
"/require/usr/": {Name: "/require/usr/", Help: "代码库", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.RenderDownload(path.Join(ice.USR, path.Join(arg...)))
|
||||
}},
|
||||
"/require/": {Name: "/require/", Help: "代码库", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
"/require/": {Name: "/require/", Help: "代码库", Hand: func(m *ice.Message, arg ...string) {
|
||||
_share_repos(m, path.Join(arg[0], arg[1], arg[2]), arg[3:]...)
|
||||
}},
|
||||
"/publish/": {Name: "/publish/", Help: "定制化", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
"/publish/": {Name: "/publish/", Help: "定制化", Hand: func(m *ice.Message, arg ...string) {
|
||||
if arg[0] == ice.ORDER_JS {
|
||||
if p := path.Join(ice.USR_PUBLISH, ice.ORDER_JS); m.PodCmd(nfs.CAT, p) {
|
||||
if m.IsErr() {
|
||||
@ -415,7 +417,7 @@ func init() {
|
||||
}
|
||||
_share_local(m, m.Conf(SERVE, kit.Keym(ice.PUBLISH)), path.Join(arg...))
|
||||
}},
|
||||
"/help/": {Name: "/help/", Help: "帮助", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
"/help/": {Name: "/help/", Help: "帮助", Hand: func(m *ice.Message, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
arg = append(arg, "tutor.shy")
|
||||
}
|
||||
|
@ -154,7 +154,7 @@ func init() {
|
||||
m.EchoQRCode(msg.Option(mdb.LINK))
|
||||
m.ProcessInner()
|
||||
}},
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
if m.PodCmd(SHARE, arg) && m.Length() > 0 {
|
||||
return
|
||||
}
|
||||
@ -169,7 +169,7 @@ func init() {
|
||||
m.PushAction(mdb.REMOVE)
|
||||
m.StatusTimeCount()
|
||||
}},
|
||||
"/share/": {Name: "/share/", Help: "共享链", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
"/share/": {Name: "/share/", Help: "共享链", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Option(SHARE, kit.Select(m.Option(SHARE), arg, 0))
|
||||
if msg := m.Cmd(SHARE, m.Option(SHARE)); kit.Int(msg.Append(mdb.TIME)) < kit.Int(msg.FormatTime()) {
|
||||
m.RenderResult("共享超时")
|
||||
@ -189,27 +189,27 @@ func init() {
|
||||
}
|
||||
}},
|
||||
|
||||
SHARE_TOAST: {Name: "/share/toast/", Help: "推送流", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
SHARE_TOAST: {Name: "/share/toast/", Help: "推送流", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(SPACE, m.Option(ice.POD), m.Optionv("cmds"))
|
||||
}},
|
||||
SHARE_CACHE: {Name: "/share/cache/", Help: "缓存池", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
SHARE_CACHE: {Name: "/share/cache/", Help: "缓存池", Hand: func(m *ice.Message, arg ...string) {
|
||||
_share_cache(m, arg...)
|
||||
}},
|
||||
SHARE_REPOS: {Name: "/share/repos/", Help: "代码库", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
SHARE_REPOS: {Name: "/share/repos/", Help: "代码库", Hand: func(m *ice.Message, arg ...string) {
|
||||
_share_repos(m, path.Join(arg[0], arg[1], arg[2]), arg[3:]...)
|
||||
}},
|
||||
SHARE_PROXY: {Name: "/share/proxy/", Help: "文件流", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
SHARE_PROXY: {Name: "/share/proxy/", Help: "文件流", Hand: func(m *ice.Message, arg ...string) {
|
||||
_share_proxy(m)
|
||||
}},
|
||||
SHARE_LOCAL: {Name: "/share/local/", Help: "文件夹", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
SHARE_LOCAL: {Name: "/share/local/", Help: "文件夹", Hand: func(m *ice.Message, arg ...string) {
|
||||
_share_local(m, arg...)
|
||||
}},
|
||||
SHARE_LOCAL_AVATAR: {Name: "avatar", Help: "头像", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
SHARE_LOCAL_AVATAR: {Name: "avatar", Help: "头像", Hand: func(m *ice.Message, arg ...string) {
|
||||
// RenderType(m.W, "", "image/svg+xml")
|
||||
// m.RenderResult(`<svg font-size="32" text-anchor="middle" dominant-baseline="middle" width="80" height="60" xmlns="http://www.w3.org/2000/svg"><text x="40" y="30" stroke="red">hello</text></svg>`)
|
||||
m.RenderDownload(strings.TrimPrefix(m.Cmd(aaa.USER, m.Option(ice.MSG_USERNAME)).Append(aaa.AVATAR), SHARE_LOCAL))
|
||||
}},
|
||||
SHARE_LOCAL_BACKGROUND: {Name: "background", Help: "壁纸", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
SHARE_LOCAL_BACKGROUND: {Name: "background", Help: "壁纸", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.RenderDownload(strings.TrimPrefix(m.Cmd(aaa.USER, m.Option(ice.MSG_USERNAME)).Append(aaa.BACKGROUND), SHARE_LOCAL))
|
||||
}},
|
||||
}})
|
||||
|
@ -319,7 +319,7 @@ func init() {
|
||||
tcp.DIAL: {Name: "dial dev=ops name", Help: "连接", Hand: func(m *ice.Message, arg ...string) {
|
||||
_space_dial(m, m.Option(ice.DEV), kit.Select(ice.Info.NodeName, m.Option(mdb.NAME)))
|
||||
}},
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
if len(arg) < 2 { // 节点列表
|
||||
if mdb.HashSelect(m, arg...); len(arg) == 0 {
|
||||
m.Table(func(index int, value map[string]string, head []string) {
|
||||
@ -337,7 +337,7 @@ func init() {
|
||||
// 下发命令
|
||||
_space_send(m, strings.ToLower(arg[0]), arg[1:]...)
|
||||
}},
|
||||
"/space/": {Name: "/space/ type name share river", Help: "空间站", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
"/space/": {Name: "/space/ type name share river", Help: "空间站", Hand: func(m *ice.Message, arg ...string) {
|
||||
_space_fork(m)
|
||||
}},
|
||||
}})
|
||||
|
@ -372,7 +372,7 @@ func init() {
|
||||
"submit": {Name: "submit dev pod path size cache", Help: "发布", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(SPIDE, ice.DEV, SPIDE_RAW, m.Option("dev"), SPIDE_PART, "pod", m.Option("pod"), nfs.PATH, "bin/ice.bin", UPLOAD, "@"+"bin/ice.bin")
|
||||
}},
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
if len(arg) < 2 || arg[0] == "" || (len(arg) > 3 && arg[3] == "") {
|
||||
mdb.HashSelect(m, kit.Slice(arg, 0, 1)...)
|
||||
m.Sort("client.name")
|
||||
@ -385,14 +385,14 @@ func init() {
|
||||
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.DELETE, SPIDE, "", mdb.HASH, m.OptionSimple(CLIENT_NAME))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Echo(kit.Formats(kit.UnMarshal(m.Cmdx(SPIDE, ice.DEV, SPIDE_RAW, SPIDE_GET, arg[0], arg[1:]))))
|
||||
}},
|
||||
SPIDE_POST: {Name: "POST url key value run", Help: "蜘蛛侠", Action: map[string]*ice.Action{
|
||||
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.DELETE, SPIDE, "", mdb.HASH, m.OptionSimple(CLIENT_NAME))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Echo(kit.Formats(kit.UnMarshal(m.Cmdx(SPIDE, ice.DEV, SPIDE_RAW, SPIDE_POST, arg[0], arg[1:]))))
|
||||
}},
|
||||
}})
|
||||
|
@ -184,10 +184,10 @@ func init() {
|
||||
HISTORY: {Name: "history name", Help: "历史", Hand: func(m *ice.Message, arg ...string) {
|
||||
_story_history(m, arg[0])
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
_story_list(m, kit.Select("", arg, 0), kit.Select("", arg, 1))
|
||||
}},
|
||||
"/story/": {Name: "/story/", Help: "故事会", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
"/story/": {Name: "/story/", Help: "故事会", Hand: func(m *ice.Message, arg ...string) {
|
||||
switch arg[0] {
|
||||
case PULL:
|
||||
list := m.Cmd(STORY, INDEX, m.Option("begin")).Append("list")
|
||||
|
@ -358,6 +358,8 @@ func init() {
|
||||
switch cb := m.OptionCB(MATRIX).(type) {
|
||||
case func(string, *Matrix):
|
||||
cb(h, mat)
|
||||
default:
|
||||
m.Error(true, ice.ErrNotImplement)
|
||||
}
|
||||
m.Echo(h)
|
||||
}},
|
||||
@ -397,6 +399,8 @@ func init() {
|
||||
switch cb := m.OptionCB(MATRIX).(type) {
|
||||
case func(string, int, []string, int, *lex.Stream) (int, []string):
|
||||
return cb(nhash, hash, word, begin, stream)
|
||||
default:
|
||||
m.Error(true, ice.ErrNotImplement)
|
||||
}
|
||||
return hash, word
|
||||
}, mat.index(m, NPAGE, m.Option(NPAGE)), stream, 1)
|
||||
@ -415,7 +419,7 @@ func init() {
|
||||
})
|
||||
m.ProcessInner()
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) {
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Option(ice.CACHE_LIMIT, -1)
|
||||
if m.Action(mdb.CREATE); len(arg) == 0 { // 矩阵列表
|
||||
m.Fields(len(arg), "time,name,npage,nhash")
|
||||
|
@ -195,7 +195,7 @@ func init() {
|
||||
stream.P = frame.pos
|
||||
}
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
if len(arg) < 2 {
|
||||
m.Cmdy(MATRIX, arg)
|
||||
return
|
||||
@ -206,7 +206,7 @@ func init() {
|
||||
m.Option("stack", stack)
|
||||
m.Cmdy(MATRIX, PARSE, arg[0], arg[1], arg[2], func(nhash string, hash int, word []string, begin int, stream *lex.Stream) (int, []string) {
|
||||
m.Option("stream", stream)
|
||||
if _, ok := c.Commands[SCRIPT].Action[nhash]; ok && stack.can_run(nhash) {
|
||||
if _, ok := m.Target().Commands[SCRIPT].Action[nhash]; ok && stack.can_run(nhash) {
|
||||
msg := m.Cmd(SCRIPT, nhash, word, ice.Option{"begin", begin})
|
||||
return hash, msg.Resultv()
|
||||
}
|
||||
|
29
conf.go
29
conf.go
@ -4,6 +4,8 @@ const (
|
||||
TB = "\t"
|
||||
SP = " "
|
||||
DF = ":"
|
||||
EQ = "="
|
||||
AT = "@"
|
||||
PS = "/"
|
||||
PT = "."
|
||||
FS = ","
|
||||
@ -293,20 +295,17 @@ const ( // LOG
|
||||
LOG_IMPORT = "import"
|
||||
)
|
||||
const ( // Err
|
||||
ErrWarn = "warn: "
|
||||
ErrPanic = "panic: "
|
||||
ErrExists = "exists: "
|
||||
ErrExpire = "expire: "
|
||||
ErrTimeout = "timeout: "
|
||||
ErrFailure = "failure: "
|
||||
ErrWarn = "warn: "
|
||||
ErrExpire = "expire: "
|
||||
|
||||
ErrNotLogin = "not login: "
|
||||
ErrNotFound = "not found: "
|
||||
ErrNotRight = "not right: "
|
||||
ErrNotFound = "not found: "
|
||||
ErrNotStart = "not start: "
|
||||
ErrNotImplement = "not implement: "
|
||||
)
|
||||
|
||||
const (
|
||||
const ( // ice
|
||||
// CTX = "ctx"
|
||||
CLI = "cli"
|
||||
WEB = "web"
|
||||
@ -335,6 +334,14 @@ const ( // web
|
||||
SPACE = "space"
|
||||
SPIDE = "spide"
|
||||
CACHE = "cache"
|
||||
|
||||
WEBSITE = "website"
|
||||
)
|
||||
const ( // aaa
|
||||
ROLE = "role"
|
||||
RIGHT = "right"
|
||||
USERROLE = "userrole"
|
||||
ROOT = "root"
|
||||
)
|
||||
const ( // mdb
|
||||
KEY = "key"
|
||||
@ -358,9 +365,3 @@ const ( // gdb
|
||||
HAPPEN = "happen"
|
||||
FILELINE = "fileline"
|
||||
)
|
||||
const ( // aaa
|
||||
ROLE = "role"
|
||||
RIGHT = "right"
|
||||
USERROLE = "userrole"
|
||||
ROOT = "root"
|
||||
)
|
||||
|
@ -185,7 +185,7 @@ func init() {
|
||||
"_share": {Name: "_share", Help: "共享", Hand: func(m *ice.Message, arg ...string) {
|
||||
_action_share(m, arg...)
|
||||
}},
|
||||
}, ctx.CmdAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, ctx.CmdAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
if m.Warn(m.Option(ice.MSG_USERNAME) == "", ice.ErrNotLogin, arg) {
|
||||
return // 没有登录
|
||||
}
|
||||
|
@ -65,7 +65,7 @@ func init() {
|
||||
m.Cmdy(CMD, mdb.CREATE, mdb.TYPE, k, mdb.NAME, "web.code.inner")
|
||||
}
|
||||
}},
|
||||
}, ctx.CmdAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, ctx.CmdAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
if strings.HasSuffix(m.R.URL.Path, ice.PS) {
|
||||
m.RenderCmd(CMD)
|
||||
return // 目录
|
||||
@ -101,7 +101,7 @@ func init() {
|
||||
m.ProcessLocation(nfs.PWD)
|
||||
}
|
||||
}},
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
if _cmd_file(m, arg...) {
|
||||
return
|
||||
}
|
||||
|
@ -31,7 +31,7 @@ func init() {
|
||||
nfs.TEMPLATE, _div_template,
|
||||
)},
|
||||
}, Commands: map[string]*ice.Command{
|
||||
"/div/": {Name: "/div/", Help: "定制", Action: ice.MergeAction(ctx.CmdAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
"/div/": {Name: "/div/", Help: "定制", Action: ice.MergeAction(ctx.CmdAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
switch p := path.Join(arg...); kit.Ext(kit.Select("", p)) {
|
||||
case nfs.HTML:
|
||||
m.RenderDownload(p)
|
||||
@ -65,7 +65,7 @@ func init() {
|
||||
}
|
||||
})
|
||||
}},
|
||||
}, mdb.HashAction(), ctx.CmdAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.HashAction(), ctx.CmdAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
switch kit.Ext(kit.Select("", arg, 0)) {
|
||||
case "shy":
|
||||
m.Fields(0)
|
||||
|
@ -25,7 +25,7 @@ func init() {
|
||||
}
|
||||
m.Cmdy(mdb.INSERT, m.PrefixKey(), "", mdb.HASH, mdb.TYPE, kit.Ext(up[1]), mdb.NAME, up[1], nfs.SIZE, up[2], mdb.DATA, up[0])
|
||||
}},
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
mdb.HashSelect(m, arg...)
|
||||
m.Table(func(index int, value map[string]string, head []string) {
|
||||
link := web.SHARE_CACHE + value[mdb.DATA]
|
||||
|
@ -24,7 +24,7 @@ func init() {
|
||||
m.Set(ice.MSG_RESULT).Cmdy(cli.SYSTEM, arg)
|
||||
}
|
||||
}},
|
||||
}, ctx.CmdAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, ctx.CmdAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Confm(FOOTER, LEGAL, func(index int, value string) { m.Echo(value) })
|
||||
}},
|
||||
}})
|
||||
|
@ -71,7 +71,7 @@ func init() {
|
||||
Index.Merge(&ice.Context{Configs: map[string]*ice.Config{
|
||||
HEADER: {Name: HEADER, Help: "标题栏", Value: kit.Data(aaa.LOGIN, kit.List("登录", "扫码"))},
|
||||
}, Commands: map[string]*ice.Command{
|
||||
web.WEB_LOGIN: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
web.WEB_LOGIN: {Hand: func(m *ice.Message, arg ...string) {
|
||||
switch arg[0] {
|
||||
case "/sso":
|
||||
return
|
||||
@ -105,7 +105,7 @@ func init() {
|
||||
}
|
||||
}},
|
||||
aaa.LOGOUT: {Name: "logout", Help: "退出登录", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmd(aaa.SESS, mdb.REMOVE, ice.OptionHash(m.Option(ice.MSG_SESSID)))
|
||||
m.Cmd(aaa.SESS, mdb.REMOVE, kit.Dict(mdb.HASH, m.Option(ice.MSG_SESSID)))
|
||||
}},
|
||||
aaa.USERNICK: {Name: "usernick", Help: "用户昵称", Hand: func(m *ice.Message, arg ...string) {
|
||||
_header_users(m, m.ActionKey(), arg...)
|
||||
@ -134,7 +134,7 @@ func init() {
|
||||
code.WEBPACK: {Name: "webpack", Help: "打包页面", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(code.WEBPACK, cli.BUILD, m.OptionSimple(mdb.NAME))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
msg := m.Cmd(aaa.USER, m.Option(ice.MSG_USERNAME))
|
||||
for _, k := range []string{aaa.LANGUAGE, aaa.BACKGROUND, aaa.AVATAR, aaa.USERNICK} {
|
||||
m.Option(k, msg.Append(k))
|
||||
@ -150,7 +150,7 @@ func init() {
|
||||
m.Option(GRANT, ice.TRUE)
|
||||
}
|
||||
|
||||
m.Option(TRANS, kit.Format(kit.Value(c.Commands[cmd].Meta, "_trans")))
|
||||
m.Option(TRANS, kit.Format(kit.Value(m.Target().Commands[m.CommandKey()].Meta, "_trans")))
|
||||
m.Option(MENUS, m.Config(MENUS))
|
||||
m.Echo(m.Config(TITLE))
|
||||
// m.Cmdy(WEBSITE)
|
||||
@ -159,7 +159,7 @@ func init() {
|
||||
GRANT: {Name: "grant space", Help: "授权", Hand: func(m *ice.Message, arg ...string) {
|
||||
_header_grant(m, arg...)
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
|
||||
}},
|
||||
}})
|
||||
|
@ -13,7 +13,7 @@ func init() {
|
||||
mdb.MODIFY: {Name: "modify", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.MODIFY, RIVER, "", mdb.HASH, mdb.HASH, m.Option(ice.MSG_RIVER), arg)
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
m.OptionFields(mdb.DETAIL)
|
||||
m.Cmdy(mdb.SELECT, RIVER, "", mdb.HASH, mdb.HASH, m.Option(ice.MSG_RIVER))
|
||||
}},
|
||||
|
@ -41,7 +41,7 @@ func init() {
|
||||
OPENLOCATION: {Name: "location", Help: "地图"},
|
||||
GETLOCATION: {Name: "location create", Help: "打卡"},
|
||||
mdb.CREATE: {Name: "create type=text name text latitude longitude", Help: "添加"},
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
mdb.HashSelect(m, arg...)
|
||||
m.PushAction(OPENLOCATION, mdb.REMOVE)
|
||||
}},
|
||||
|
@ -19,7 +19,7 @@ func init() {
|
||||
}, Commands: map[string]*ice.Command{
|
||||
"monkey": {Name: "monkey total=888 count=9 run", Help: "猴子开箱子", Meta: kit.Dict("_trans", kit.Dict("name", "姓名")), Action: ice.MergeAction(map[string]*ice.Action{
|
||||
mdb.CREATE: {Name: "create name 照片 性别 年龄 身高 体重 籍贯 户口 学历 学校 职业 公司 年薪 资产 家境", Help: "添加"},
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
total := kit.Int(arg[0])
|
||||
count := kit.Int(arg[1])
|
||||
for i := 1; i <= total; i++ {
|
||||
@ -40,7 +40,7 @@ func init() {
|
||||
}},
|
||||
MISS: {Name: "miss name auto create", Help: "资料", Meta: kit.Dict("_trans", kit.Dict("name", "姓名")), Action: ice.MergeAction(map[string]*ice.Action{
|
||||
mdb.CREATE: {Name: "create name 照片 性别 年龄 身高 体重 籍贯 户口 学历 学校 职业 公司 年薪 资产 家境", Help: "添加"},
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
msg := m.Spawn()
|
||||
mdb.HashSelect(msg, arg...).Table(func(index int, value map[string]string, head []string) {
|
||||
value["照片"] = ice.Render(m, ice.RENDER_IMAGES, value["照片"], kit.Select("100", "400", msg.FieldsIsDetail()))
|
||||
|
@ -47,7 +47,7 @@ func init() {
|
||||
m.Option(web.SHARE, m.Cmdx(web.SHARE, mdb.CREATE, mdb.TYPE, RIVER))
|
||||
m.Cmdy(code.PUBLISH, ice.CONTEXTS, "tool")
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
m.OptionFields("time,type,name,share")
|
||||
m.Cmdy(mdb.SELECT, RIVER, _river_key(m, NODE), mdb.HASH)
|
||||
|
@ -81,7 +81,7 @@ var Index = &ice.Context{Name: OAUTH, Help: "认证授权", Commands: map[string
|
||||
REPLY: {Name: "reply hash auto create prunes", Help: "授权", Action: mdb.HashAction(mdb.EXPIRE, "720h", mdb.SHORT, mdb.UNIQ, mdb.FIELD, "time,hash,username,scope,offer")},
|
||||
OFFER: {Name: "offer hash auto create prunes", Help: "访问", Action: mdb.HashAction(mdb.EXPIRE, "720h", mdb.SHORT, mdb.UNIQ, mdb.FIELD, "time,hash,username,scope,redirect_uri")},
|
||||
|
||||
web.P(APPLY): {Name: "/apply scope redirect_uri", Help: "申请", Action: ctx.CmdAction(), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
web.P(APPLY): {Name: "/apply scope redirect_uri", Help: "申请", Action: ctx.CmdAction(), Hand: func(m *ice.Message, arg ...string) {
|
||||
if m.Option(REDIRECT_URI) == "" {
|
||||
m.RenderStatusBadRequest() // 参数错误
|
||||
|
||||
@ -89,7 +89,7 @@ var Index = &ice.Context{Name: OAUTH, Help: "认证授权", Commands: map[string
|
||||
m.RenderCmd(m.Prefix(OAUTH), APPLY)
|
||||
}
|
||||
}},
|
||||
web.P(REPLY): {Name: "/reply scope offer", Help: "授权", Action: ctx.CmdAction(), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
web.P(REPLY): {Name: "/reply scope offer", Help: "授权", Action: ctx.CmdAction(), Hand: func(m *ice.Message, arg ...string) {
|
||||
if m.Option(OFFER) == "" {
|
||||
m.RenderStatusBadRequest() // 参数错误
|
||||
|
||||
@ -97,7 +97,7 @@ var Index = &ice.Context{Name: OAUTH, Help: "认证授权", Commands: map[string
|
||||
m.RenderCmd(m.Prefix(OAUTH), REPLY)
|
||||
}
|
||||
}},
|
||||
web.P(OFFER): {Name: "/offer access_token", Help: "访问", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
web.P(OFFER): {Name: "/offer access_token", Help: "访问", Hand: func(m *ice.Message, arg ...string) {
|
||||
if m.Option(ACCESS_TOKEN) == "" {
|
||||
m.RenderStatusBadRequest() // 参数错误
|
||||
|
||||
@ -113,7 +113,7 @@ var Index = &ice.Context{Name: OAUTH, Help: "认证授权", Commands: map[string
|
||||
TOKEN: {Name: "token hash auto create prunes", Help: "授权", Action: mdb.HashAction(mdb.EXPIRE, "72h", mdb.FIELD, "time,hash,used,state,scope,redirect_uri")},
|
||||
ACCESS: {Name: "access hash auto create prunes", Help: "访问", Action: mdb.HashAction(mdb.EXPIRE, "720h", mdb.SHORT, mdb.UNIQ, mdb.FIELD, "time,hash,username,scope,redirect_uri")},
|
||||
|
||||
web.P(AUTHORIZE): {Name: "/authorize state scope client_id redirect_uri", Help: "认证", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
web.P(AUTHORIZE): {Name: "/authorize state scope client_id redirect_uri", Help: "认证", Hand: func(m *ice.Message, arg ...string) {
|
||||
if m.Option(CLIENT_ID) == "" || m.Option(REDIRECT_URI) == "" {
|
||||
m.RenderStatusBadRequest() // 参数错误
|
||||
|
||||
@ -127,7 +127,7 @@ var Index = &ice.Context{Name: OAUTH, Help: "认证授权", Commands: map[string
|
||||
m.RenderRedirect(m.Option(REDIRECT_URI), CODE, m.Cmdx(TOKEN, mdb.CREATE, m.OptionSimple(STATE, SCOPE, REDIRECT_URI)), m.OptionSimple(STATE))
|
||||
}
|
||||
}},
|
||||
web.P(TOKEN): {Name: "/token code redirect_uri", Help: "授权", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
web.P(TOKEN): {Name: "/token code redirect_uri", Help: "授权", Hand: func(m *ice.Message, arg ...string) {
|
||||
if m.Option(CODE) == "" || m.Option(REDIRECT_URI) == "" {
|
||||
m.RenderStatusBadRequest() // 参数错误
|
||||
return
|
||||
@ -153,7 +153,7 @@ var Index = &ice.Context{Name: OAUTH, Help: "认证授权", Commands: map[string
|
||||
m.Cmdx(TOKEN, mdb.MODIFY, mdb.HASH, m.Option(CODE), USED, ice.TRUE)
|
||||
}
|
||||
}},
|
||||
web.P(USERINFO): {Name: "/userinfo Authorization", Help: "信息", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
web.P(USERINFO): {Name: "/userinfo Authorization", Help: "信息", Hand: func(m *ice.Message, arg ...string) {
|
||||
if ls := strings.SplitN(m.R.Header.Get(web.Authorization), ice.SP, 2); m.Warn(len(ls) != 2 || ls[1] == "", ice.ErrNotFound, web.Bearer) {
|
||||
m.RenderStatusBadRequest() // 参数错误
|
||||
|
||||
|
@ -21,7 +21,7 @@ func init() {
|
||||
mdb.DELETE: {Name: "delete", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.DELETE, RIVER, _river_key(m, OCEAN), mdb.HASH, m.OptionSimple(aaa.USERNAME))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Fields(len(arg), "time,username")
|
||||
m.Cmdy(mdb.SELECT, RIVER, _river_key(m, OCEAN), mdb.HASH, aaa.USERNAME, arg)
|
||||
m.Table(func(index int, value map[string]string, head []string) {
|
||||
|
@ -21,7 +21,7 @@ func init() {
|
||||
m.Cmdy(PASTE, mdb.CREATE, arg)
|
||||
}},
|
||||
mdb.CREATE: {Name: "create type=text name=hi text:textarea=hi", Help: "添加"},
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
if mdb.HashSelect(m, arg...); len(arg) > 0 {
|
||||
m.PushScript(ssh.SCRIPT, m.Append(mdb.TEXT))
|
||||
m.PushQRCode(cli.QRCODE, m.Append(mdb.TEXT))
|
||||
|
@ -22,7 +22,7 @@ func init() {
|
||||
"/pod/": {Name: "/pod/", Help: "节点", Action: ice.MergeAction(map[string]*ice.Action{
|
||||
ice.CTX_INIT: {Name: "_init", Help: "初始化", Hand: func(m *ice.Message, arg ...string) {
|
||||
}},
|
||||
}, ctx.CmdAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, ctx.CmdAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
if strings.HasPrefix(m.R.Header.Get("User-Agent"), "curl") || strings.HasPrefix(m.R.Header.Get("User-Agent"), "Wget") {
|
||||
m.Option(ice.MSG_USERNAME, "root")
|
||||
m.Option(ice.MSG_USERROLE, "root")
|
||||
|
@ -89,7 +89,7 @@ func init() {
|
||||
),
|
||||
))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
if m.Warn(m.Option(ice.MSG_USERNAME) == "", ice.ErrNotLogin, RIVER) {
|
||||
m.Render(web.STATUS, 401)
|
||||
return // 没有登录
|
||||
|
@ -43,7 +43,7 @@ func init() {
|
||||
m.Cmdy(mdb.DELETE, m.Prefix(ROOM), kit.KeyHash(m.Option(mdb.ZONE)), mdb.HASH, m.OptionSimple(web.SPACE))
|
||||
m.Cmdy(mdb.DELETE, m.Prefix(JOIN), kit.KeyHash(m.Option(web.SPACE)), mdb.HASH, m.OptionSimple(mdb.ZONE))
|
||||
}},
|
||||
}, mdb.ZoneAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.ZoneAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
if mdb.ZoneSelect(m, arg...); len(arg) == 0 {
|
||||
m.Action(mdb.CREATE)
|
||||
m.PushAction(mdb.INSERT, JOIN)
|
||||
@ -72,7 +72,7 @@ func init() {
|
||||
mdb.DELETE: {Name: "delete zone socket", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.DELETE, m.Prefix(JOIN), kit.KeyHash(m.Option(mdb.ZONE)), mdb.HASH, m.OptionSimple(web.SOCKET))
|
||||
}},
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Fields(len(arg), "time,space", "time,zone")
|
||||
if len(arg) == 0 {
|
||||
m.Cmdy(mdb.SELECT, m.Prefix(JOIN), "", mdb.HASH)
|
||||
|
@ -22,7 +22,7 @@ func init() {
|
||||
"scanQRCode0": {Name: "scan create", Help: "本机扫码"},
|
||||
"scanQRCode": {Name: "scan create", Help: "扫码"},
|
||||
mdb.CREATE: {Name: "create type=text name=hi text:textarea=hi", Help: "添加"},
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
if mdb.HashSelect(m, arg...); len(arg) > 0 {
|
||||
if m.Append(mdb.TYPE) == "image" {
|
||||
m.PushImages("image", m.Append(mdb.TEXT))
|
||||
|
@ -25,7 +25,7 @@ func init() {
|
||||
mdb.RENDER: {Name: "render", Help: "渲染", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(m.Space(m.Option(ice.POD)), mdb.RENDER, arg[1:])
|
||||
}},
|
||||
}, ctx.CmdAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, ctx.CmdAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
if kit.Contains(arg[1], ";") {
|
||||
arg = kit.Split(arg[1], ";", ";", ";")
|
||||
}
|
||||
|
@ -13,7 +13,7 @@ const SSO = "sso"
|
||||
|
||||
func init() {
|
||||
Index.Merge(&ice.Context{Commands: map[string]*ice.Command{
|
||||
"/sso": {Name: "/sso", Help: "登录", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
"/sso": {Name: "/sso", Help: "登录", Hand: func(m *ice.Message, arg ...string) {
|
||||
if m.Option(ice.MSG_USERNAME) == "" {
|
||||
m.RenderIndex(web.SERVE, ice.VOLCANOS)
|
||||
return
|
||||
|
@ -60,7 +60,7 @@ func init() {
|
||||
m.Cmdy(cmd, mdb.IMPORT)
|
||||
}},
|
||||
SHARE: {Name: "share", Help: "共享", Hand: func(m *ice.Message, arg ...string) { _header_share(m, arg...) }},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
if len(arg) == 0 { // 应用列表
|
||||
m.OptionFields("time,hash,type,name,count")
|
||||
m.Cmdy(mdb.SELECT, RIVER, _river_key(m, STORM), mdb.HASH)
|
||||
|
@ -39,7 +39,7 @@ func init() {
|
||||
m.PushAction(SEND, nfs.TRASH)
|
||||
}
|
||||
}},
|
||||
}, ctx.CmdAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, ctx.CmdAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
m.Cmdy(web.ROUTE).RenameAppend(web.ROUTE, FROM)
|
||||
return
|
||||
|
@ -91,7 +91,7 @@ func _website_parse(m *ice.Message, text string, args ...string) (ice.Map, bool)
|
||||
case ctx.ARGS:
|
||||
data[ls[i]] = kit.Split(ls[i+1])
|
||||
case ctx.DISPLAY:
|
||||
data[ls[i]] = ice.DisplayRequire(1, ls[i+1])[ctx.DISPLAY]
|
||||
data[ls[i]] = ice.Display(ls[i+1])[ctx.DISPLAY]
|
||||
|
||||
case "title", "menus", "action", "style":
|
||||
data[ls[i]] = kit.UnMarshal(ls[i+1])
|
||||
@ -250,7 +250,7 @@ func init() {
|
||||
}
|
||||
})
|
||||
}},
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
mdb.HashSelect(m, arg...).Table(func(index int, value map[string]string, head []string) {
|
||||
m.PushAnchor(m.MergeWebsite(value[nfs.PATH]))
|
||||
})
|
||||
|
@ -213,7 +213,7 @@ func init() {
|
||||
m.Cmd(nfs.SAVE, path.Join(kit.Env(cli.HOME), ".ssh/"+m.Option(mdb.ALIAS)+".json"),
|
||||
kit.Formats(kit.Dict(m.OptionSimple("username,host,port,list"))))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(nfs.CAT, arg[0], kit.Dict(nfs.DIR_ROOT, ice.SRC))
|
||||
}},
|
||||
}})
|
||||
|
@ -72,7 +72,7 @@ func init() {
|
||||
_bench_redis(m, m.Option(mdb.TEXT))
|
||||
}
|
||||
}},
|
||||
}, mdb.ZoneAction(mdb.SHORT, mdb.ZONE, mdb.FIELD, "time,id,type,name,text,nconn,nreqs")), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.ZoneAction(mdb.SHORT, mdb.ZONE, mdb.FIELD, "time,id,type,name,text,nconn,nreqs")), Hand: func(m *ice.Message, arg ...string) {
|
||||
mdb.ZoneSelect(m, arg...).PushAction(kit.Select(mdb.REMOVE, ice.RUN, len(arg) > 0))
|
||||
}},
|
||||
}})
|
||||
|
@ -178,7 +178,7 @@ func init() {
|
||||
m.Log_EXPORT(nfs.FILE, kit.WriteFile(key, value), nfs.SIZE, len(value))
|
||||
}
|
||||
}},
|
||||
}, mdb.HashAction(mdb.SHORT, nfs.PATH)), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.HashAction(mdb.SHORT, nfs.PATH)), Hand: func(m *ice.Message, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
for k, v := range ice.Info.Pack {
|
||||
m.Push(nfs.PATH, k).Push(nfs.SIZE, len(v))
|
||||
|
@ -60,7 +60,7 @@ func init() {
|
||||
m.Info(`curl "` + m.Option(cli.API) + `" -H "Content-Type: application/json"` + ` -d '` + m.Option(ice.ARG) + `'`)
|
||||
m.ProcessDisplay("/plugin/story/json.js")
|
||||
}},
|
||||
}, mdb.ZoneAction(mdb.SHORT, mdb.ZONE, mdb.FIELD, "time,id,name,cmd,api,arg,res")), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.ZoneAction(mdb.SHORT, mdb.ZONE, mdb.FIELD, "time,id,name,cmd,api,arg,res")), Hand: func(m *ice.Message, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
m.Cmdy(web.SPIDE).RenameAppend("client.name", "dev", "client.url", "address").Action(mdb.CREATE)
|
||||
return
|
||||
@ -102,7 +102,7 @@ func init() {
|
||||
}
|
||||
}
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
if len(arg) == 0 || arg[0] == "" {
|
||||
m.Cmdy(nfs.DIR, nfs.PWD)
|
||||
return
|
||||
|
@ -68,7 +68,7 @@ func init() {
|
||||
RELAY: {Name: "relay", Help: "跳板", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmd(COMPILE, ice.SRC_RELAY_GO, path.Join(ice.USR_PUBLISH, RELAY))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
// 下载依赖
|
||||
_autogen_version(m.Spawn())
|
||||
m.Cmd(cli.SYSTEM, GO, "get", "shylinux.com/x/ice")
|
||||
|
@ -15,7 +15,7 @@ func init() {
|
||||
INNER: {Name: "inner", Help: "源码", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.ProcessCommand(INNER, m.OptionSplit("path,file,line"), arg...)
|
||||
}},
|
||||
}, mdb.ZoneAction(mdb.SHORT, mdb.ZONE, mdb.FIELD, "time,id,type,name,text,path,file,line")), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.ZoneAction(mdb.SHORT, mdb.ZONE, mdb.FIELD, "time,id,type,name,text,path,file,line")), Hand: func(m *ice.Message, arg ...string) {
|
||||
mdb.ZoneSelect(m, arg...).PushAction(kit.Select(mdb.REMOVE, INNER, len(arg) > 0))
|
||||
}},
|
||||
}})
|
||||
|
@ -224,7 +224,7 @@ const GODOC = "godoc"
|
||||
|
||||
func init() {
|
||||
Index.Register(&ice.Context{Name: GO, Help: "后端", Commands: map[string]*ice.Command{
|
||||
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmd(mdb.SEARCH, mdb.CREATE, GODOC, m.Prefix(GO))
|
||||
m.Cmd(mdb.ENGINE, mdb.CREATE, GO, m.Prefix(GO))
|
||||
|
||||
|
@ -167,7 +167,7 @@ func init() {
|
||||
_inner_make(m, m.Cmd(cli.SYSTEM, cli.MAKE, arg))
|
||||
}},
|
||||
FAVOR: {Name: "favor", Help: "收藏"},
|
||||
}, ctx.CmdAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, ctx.CmdAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
if arg[0] = strings.Split(arg[0], ice.FS)[0]; !strings.HasSuffix(arg[0], ice.PS) {
|
||||
arg[1] = kit.Slice(strings.Split(arg[0], ice.PS), -1)[0]
|
||||
arg[0] = strings.TrimSuffix(arg[0], arg[1])
|
||||
|
@ -118,6 +118,8 @@ func _install_start(m *ice.Message, arg ...string) {
|
||||
args = append(args, cb(p)...)
|
||||
case func(string):
|
||||
cb(p)
|
||||
default:
|
||||
m.Error(true, ice.ErrNotImplement)
|
||||
}
|
||||
|
||||
if m.Cmdy(cli.DAEMON, arg[1:], args); cli.IsSuccess(m) {
|
||||
@ -186,7 +188,7 @@ func init() {
|
||||
cli.STOP: {Name: "stop", Help: "停止", Hand: func(m *ice.Message, arg ...string) {
|
||||
_install_stop(m, arg...)
|
||||
}},
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
switch len(arg) {
|
||||
case 0: // 源码列表
|
||||
mdb.HashSelect(m, arg...)
|
||||
@ -203,7 +205,7 @@ func init() {
|
||||
}
|
||||
|
||||
func InstallAction(args ...ice.Any) map[string]*ice.Action {
|
||||
return ice.SelectAction(map[string]*ice.Action{ice.CTX_INIT: mdb.AutoConfig(args...),
|
||||
return map[string]*ice.Action{ice.CTX_INIT: mdb.AutoConfig(args...),
|
||||
web.DOWNLOAD: {Name: "download", Help: "下载", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(INSTALL, web.DOWNLOAD, m.Config(nfs.SOURCE))
|
||||
}},
|
||||
@ -216,7 +218,7 @@ func InstallAction(args ...ice.Any) map[string]*ice.Action {
|
||||
nfs.TRASH: {Name: "trash", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmd(nfs.TRASH, m.Option(nfs.PATH))
|
||||
}},
|
||||
})
|
||||
}
|
||||
}
|
||||
func InstallSoftware(m *ice.Message, bin string, list ice.Any) (ok bool) {
|
||||
if cli.SystemFind(m, bin) != "" {
|
||||
|
@ -55,13 +55,13 @@ func init() {
|
||||
m.Push("", res)
|
||||
m.Echo("https://github.com/settings/keys")
|
||||
}},
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
if mdb.HashSelect(m, arg...).PushAction("user", "public", ACCESS_TOKEN, mdb.REMOVE); len(arg) == 0 {
|
||||
m.Action(mdb.CREATE)
|
||||
m.Echo(kit.MergeURL2(LOGIN_OAUTH, "authorize", m.ConfigSimple(REDIRECT_URI, CLIENT_ID), "scope", "read:user read:public_key write:public_key repo"))
|
||||
}
|
||||
}},
|
||||
"/oauth": {Name: "/oauth", Help: "授权", Action: ice.MergeAction(map[string]*ice.Action{}, ctx.CmdAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
"/oauth": {Name: "/oauth", Help: "授权", Action: ice.MergeAction(map[string]*ice.Action{}, ctx.CmdAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
if m.Option(CODE) != "" {
|
||||
m.RenderCmd(m.PrefixKey(), m.Cmdx(mdb.INSERT, m.PrefixKey(), "", mdb.HASH, m.OptionSimple(CODE)))
|
||||
}
|
||||
|
@ -65,7 +65,7 @@ func init() {
|
||||
m.Cmd(cli.DAEMON, m.Configv(PPROF), "-http="+p, m.Option(BINNARY), m.Option(nfs.FILE))
|
||||
m.Echo("http://%s/ui/top", p).ProcessInner()
|
||||
}},
|
||||
}, mdb.ZoneAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.ZoneAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Fields(len(arg), "time,zone,count,binnary,service,seconds", m.Config(mdb.FIELD))
|
||||
if mdb.ZoneSelect(m, arg...); len(arg) == 0 {
|
||||
m.PushAction(ice.RUN, mdb.REMOVE)
|
||||
@ -78,7 +78,7 @@ func init() {
|
||||
m.PushButton(web.SERVE)
|
||||
})
|
||||
}},
|
||||
"/pprof/": {Name: "/pprof/", Help: "性能分析", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
"/pprof/": {Name: "/pprof/", Help: "性能分析", Hand: func(m *ice.Message, arg ...string) {
|
||||
defer m.Render(ice.RENDER_VOID)
|
||||
m.R.URL.Path = "/debug" + m.R.URL.Path
|
||||
http.DefaultServeMux.ServeHTTP(m.W, m.R)
|
||||
|
@ -143,7 +143,7 @@ func init() {
|
||||
m.Cmd(nfs.TAR, kit.Path(ice.USR_PUBLISH, "contexts.home.tar.gz"), ".vim/plugged", kit.Dict(nfs.DIR_ROOT, kit.Env(cli.HOME)))
|
||||
m.Cmd("web.code.git.server", mdb.IMPORT)
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Option(nfs.DIR_ROOT, m.Config(nfs.PATH))
|
||||
m.Cmdy(nfs.DIR, kit.Select("", arg, 0), nfs.DIR_WEB_FIELDS)
|
||||
}},
|
||||
|
@ -38,7 +38,7 @@ func init() {
|
||||
mdb.RENDER: {Hand: func(m *ice.Message, arg ...string) {
|
||||
_py_main_script(m, arg...)
|
||||
}},
|
||||
}, PlugAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, PlugAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
if len(arg) > 0 && kit.Ext(arg[0]) == PY {
|
||||
_py_main_script(m, PY, arg[0], ice.SRC)
|
||||
return
|
||||
|
@ -82,7 +82,7 @@ func init() {
|
||||
mdb.RENDER: {Name: "render", Help: "渲染", Hand: func(m *ice.Message, arg ...string) {
|
||||
_sh_main_script(m, arg...)
|
||||
}},
|
||||
}, PlugAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, PlugAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
if len(arg) > 0 && kit.Ext(arg[0]) == SH {
|
||||
_sh_main_script(m, SH, arg[0], ice.SRC)
|
||||
return
|
||||
|
@ -54,7 +54,7 @@ func init() {
|
||||
_go_grep(m, kit.Select(cli.MAIN, arg, 1), arg[2])
|
||||
}
|
||||
}},
|
||||
}, PlugAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, PlugAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
if len(arg) > 0 && kit.Ext(arg[0]) == m.CommandKey() {
|
||||
m.Cmdy("web.wiki.word", path.Join(ice.SRC, arg[0]))
|
||||
return
|
||||
|
@ -34,7 +34,7 @@ func init() {
|
||||
}
|
||||
}
|
||||
}},
|
||||
}, mdb.HashAction(mdb.SHORT, mdb.NAME, mdb.FIELD, "time,type,name,text,args")), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.HashAction(mdb.SHORT, mdb.NAME, mdb.FIELD, "time,type,name,text,args")), Hand: func(m *ice.Message, arg ...string) {
|
||||
if mdb.HashSelect(m, arg...).Sort(mdb.NAME); len(arg) == 0 {
|
||||
m.Cut("time,action,type,name,text,args")
|
||||
m.Action(mdb.CREATE)
|
||||
|
@ -27,8 +27,8 @@ func init() {
|
||||
cli.RESTART: {Name: "restart", Help: "重启", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Sleep("1s").Go(func() { m.Cmd(ice.EXIT, 1) })
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Grows(cmd, kit.Keys(mdb.HASH, kit.Select(cli.SYSTEM, arg, 0)), "", "", func(index int, value ice.Map) {
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Grows(m.CommandKey(), kit.Keys(mdb.HASH, kit.Select(cli.SYSTEM, arg, 0)), "", "", func(index int, value ice.Map) {
|
||||
if value[nfs.FILE] == ice.ICE_BIN { // 程序文件
|
||||
value[nfs.FILE] = kit.Keys(ice.ICE, runtime.GOOS, runtime.GOARCH)
|
||||
defer m.Cmd(cli.SYSTEM, "mv", value[nfs.FILE], ice.BIN_ICE_BIN)
|
||||
|
@ -209,6 +209,6 @@ func init() {
|
||||
m.ProcessInner()
|
||||
m.ToastSuccess()
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Cmdy(INNER, arg) }},
|
||||
}, Hand: func(m *ice.Message, arg ...string) { m.Cmdy(INNER, arg) }},
|
||||
}})
|
||||
}
|
||||
|
@ -151,7 +151,7 @@ func init() {
|
||||
_webpack_cache(m.Spawn(), _volcanos(m), true)
|
||||
_webpack_build(m, _publish(m, WEBPACK, m.Option(mdb.NAME)))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Option(nfs.DIR_DEEP, true)
|
||||
m.Option(nfs.DIR_TYPE, nfs.CAT)
|
||||
m.OptionFields(nfs.DIR_WEB_FIELDS)
|
||||
|
@ -91,7 +91,7 @@ func init() {
|
||||
}
|
||||
m.Toast("核算成功")
|
||||
}},
|
||||
}, mdb.ZoneAction(), ctx.CmdAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.ZoneAction(), ctx.CmdAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Fields(len(arg), "time,account,amount,count", m.Config(mdb.FIELD))
|
||||
amount, count := 0, 0
|
||||
if mdb.ZoneSelect(m, arg...); len(arg) == 0 {
|
||||
|
@ -21,7 +21,7 @@ func init() {
|
||||
}, Commands: map[string]*ice.Command{
|
||||
SALARY: {Name: "salary month auto create", Help: "工资", Action: ice.MergeAction(map[string]*ice.Action{
|
||||
mdb.CREATE: {Name: "create month company amount income tax 公积金 养老保险 医疗保险 生育保险 工伤保险 失业保险 企业公积金 企业养老保险 企业医疗保险 企业生育保险 企业工伤保险 企业失业保险", Help: "添加"},
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
mdb.HashSelect(m, arg...)
|
||||
amount, income, tax := 0, 0, 0
|
||||
m.Table(func(index int, value map[string]string, head []string) {
|
||||
|
@ -19,7 +19,7 @@ func init() {
|
||||
mdb.INSERT: {Name: "insert zone type=once,step,week name text begin_time@date close_time@date", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(TASK, mdb.INSERT, arg)
|
||||
}},
|
||||
}, TASK), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, TASK), Hand: func(m *ice.Message, arg ...string) {
|
||||
begin_time, end_time := _plan_scope(m, 8, append([]string{LONG}, arg...)...)
|
||||
msg := _plan_list(m.Spawn(), begin_time, end_time)
|
||||
msg.SortTime(BEGIN_TIME)
|
||||
|
@ -90,11 +90,11 @@ func init() {
|
||||
msg := m.Cmd(TASK, arg[0], arg[1])
|
||||
m.Cmdy(kit.Simple(kit.Keys(msg.Append(kit.KeyExtra(ice.CTX)), msg.Append(kit.KeyExtra(ice.CMD))), arg[2:]))
|
||||
}},
|
||||
}, TASK), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, TASK), Hand: func(m *ice.Message, arg ...string) {
|
||||
arg = kit.Slice(arg, 0, 2)
|
||||
begin_time, end_time := _plan_scope(m, 8, arg...)
|
||||
_plan_list(m, begin_time, end_time)
|
||||
m.PushPodCmd(cmd, arg...)
|
||||
m.PushPodCmd(m.CommandKey(), arg...)
|
||||
}},
|
||||
}})
|
||||
}
|
||||
|
@ -93,7 +93,7 @@ func init() {
|
||||
END: {Name: "end", Help: "完成", Hand: func(m *ice.Message, arg ...string) {
|
||||
_task_modify(m, STATUS, FINISH)
|
||||
}},
|
||||
}, mdb.ZoneAction(), ctx.CmdAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.ZoneAction(), ctx.CmdAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
if mdb.ZoneSelect(m, arg...); len(arg) > 0 {
|
||||
status := map[string]int{}
|
||||
m.Table(func(index int, value map[string]string, head []string) {
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user