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

opt route

This commit is contained in:
shaoying 2020-11-17 21:31:36 +08:00
parent dc686729a2
commit 2353f80ce2
12 changed files with 96 additions and 49 deletions

View File

@ -63,6 +63,8 @@ func IsLocalHost(m *ice.Message, ip string) bool { return _islocalhost(m, ip) }
const (
HOSTPORT = "hostport"
HOSTNAME = "hostname"
LOCALHOST = "localhost"
)
const HOST = "host"

View File

@ -66,13 +66,16 @@ func _dream_show(m *ice.Message, name string) {
// 启动任务
m.Optionv(cli.CMD_STDERR, path.Join(p, m.Conf(DREAM, "meta.env.ctx_log")))
m.Cmd(cli.DAEMON, m.Confv(DREAM, "meta.cmd"), "self", name)
m.Event(DREAM_CREATE, kit.MDB_TYPE, m.Option(kit.MDB_TYPE), kit.MDB_NAME, name)
m.Sleep("1s")
}
m.Cmdy(nfs.DIR, p)
}
const (
DREAM_START = "dream.start"
DREAM_STOP = "dream.stop"
DREAM_CREATE = "dream.create"
DREAM_START = "dream.start"
DREAM_STOP = "dream.stop"
)
const DREAM = "dream"

View File

@ -64,6 +64,12 @@ func init() {
m.Cmdy("web.wiki.image", "qrcode", m.Option(ice.MSG_USERWEB))
}},
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
switch m.Option("action") {
case "autogen":
m.Cmdy(SPACE, m.Option(ROUTE), "web.code.autogen", "inputs", arg)
return
}
switch arg[0] {
case "cmd":
m.Cmdy(SPACE, m.Option(ROUTE), ctx.COMMAND)
@ -82,9 +88,8 @@ func init() {
m.Cmdy(SPACE, m.Option(ROUTE), "exit")
m.Sleep("3s")
}},
"gen": {Name: "gen module=hi@key template=usr/icebergs/misc/zsh/zsh.go@key", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(SPACE, m.Option(ROUTE), "web.code.autogen",
"create", "name", m.Option("module"), "from", m.Option("template"))
"autogen": {Name: "autogen main=src/main.go@key name=hi@key from=usr/icebergs/misc/bash/bash.go@key", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(SPACE, m.Option(ROUTE), "web.code.autogen", "create", arg)
}},
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
if len(arg) == 0 || arg[0] == "" {
@ -102,7 +107,7 @@ func init() {
case SERVER:
m.PushButton(gdb.START)
case WORKER:
m.PushButton(gdb.STOP)
m.PushButton("autogen")
default:
m.PushButton("")
}
@ -132,7 +137,7 @@ func init() {
} else if len(arg) > 2 { // 加载插件
m.Cmdy(SPACE, arg[0], ctx.CONTEXT, arg[1], ctx.COMMAND, arg[2])
m.Option("_prefix", arg[0], arg[1], arg[2], "run")
m.Option("_process", "_field")
m.Option(ice.MSG_PROCESS, ice.PROCESS_FIELD)
} else if len(arg) > 1 { // 命令列表
m.Cmd(SPACE, arg[0], ctx.CONTEXT, arg[1], ctx.COMMAND).Table(func(index int, value map[string]string, head []string) {

View File

@ -2,6 +2,7 @@ package code
import (
ice "github.com/shylinux/icebergs"
"github.com/shylinux/icebergs/base/cli"
"github.com/shylinux/icebergs/base/mdb"
"github.com/shylinux/icebergs/base/nfs"
kit "github.com/shylinux/toolkits"
@ -60,7 +61,7 @@ func _autogen_mod(m *ice.Message, file string) (mod string) {
m.Option(nfs.CAT_CB, func(line string, index int) {
if strings.HasPrefix(line, "module") {
mod = strings.Split(line, " ")[1]
m.Info("module", mod)
m.Info("module %s", mod)
}
})
m.Cmd(nfs.CAT, "go.mod")
@ -81,7 +82,7 @@ field "{{.Option "name"}}" web.code.{{.Option "name"}}.{{.Option "name"}}
},
Commands: map[string]*ice.Command{
AUTOGEN: {Name: "autogen path auto create", Help: "生成", Action: map[string]*ice.Action{
mdb.CREATE: {Name: "create main=src/main.go@key name=hi@key from=usr/icebergs/misc/zsh/zsh.go@key", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
mdb.CREATE: {Name: "create main=src/main.go@key name=hi@key from=usr/icebergs/misc/bash/bash.go@key", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
if p := path.Join("src", m.Option("name"), m.Option("name")+".shy"); !kit.FileExists(p) {
_autogen_script(m, p)
_autogen_source(m, m.Option("name"))
@ -91,15 +92,18 @@ field "{{.Option "name"}}" web.code.{{.Option "name"}}.{{.Option "name"}}
_autogen_index(m, p, m.Option("from"), m.Option("name"))
_autogen_main(m, m.Option("main"), _autogen_mod(m, "go.mod"), m.Option("name"))
}
m.Cmdy(cli.SYSTEM, "make")
}},
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
switch arg[0] {
case "main":
m.Option(nfs.DIR_REG, ".*.go")
m.Cmdy(nfs.DIR, "src", "path,size,time")
m.Sort(kit.MDB_PATH)
case "from":
m.Option(nfs.DIR_DEEP, true)
m.Cmdy(nfs.DIR, "usr/icebergs", "path,size,time")
m.Option(nfs.DIR_REG, ".*.go")
m.Cmdy(nfs.DIR, "usr/icebergs/misc/", "path,size,time")
m.Sort(kit.MDB_PATH)
}
}},

View File

@ -16,6 +16,7 @@ import (
"strings"
)
const PREPARE = "prepare"
const INSTALL = "install"
func init() {

View File

@ -101,6 +101,9 @@ var Index = &Context{Name: "ice", Help: "冰山模块",
})
}},
"init": {Name: "init", Help: "启动", Hand: func(m *Message, c *Context, cmd string, arg ...string) {
if m.target != m.target.root {
return
}
m.root.Cmd(CTX_INIT)
m.target.root.wg = &sync.WaitGroup{}
for _, k := range kit.Split(kit.Select("gdb,log,ssh,mdb")) {
@ -112,7 +115,10 @@ var Index = &Context{Name: "ice", Help: "冰山模块",
"help": {Name: "help", Help: "帮助", Hand: func(m *Message, c *Context, cmd string, arg ...string) {
m.Echo(strings.Join(kit.Simple(m.Confv("help", "index")), "\n"))
}},
"exit": {Name: "exit", Help: "结束", Hand: func(m *Message, c *Context, cmd string, arg ...string) {
"exit": {Name: "exit restart:button", Help: "结束", Action: map[string]*Action{
"restart": {Name: "restart", Help: "重启", Hand: func(m *Message, arg ...string) {
}},
}, Hand: func(m *Message, c *Context, cmd string, arg ...string) {
m.root.target.server.(*Frame).code = kit.Int(kit.Select("0", arg, 0))
m.Cmd("ssh.source", "etc/exit.shy", "exit.shy", "退出配置")
m.root.Cmd(CTX_EXIT)

10
misc.go
View File

@ -21,17 +21,17 @@ func (m *Message) Save(arg ...string) *Message {
}
}
for _, k := range arg {
list = append(list, kit.Keys(m.Cap(CTX_FOLLOW), k))
list = append(list, m.Prefix(k))
}
m.Cmd("ctx.config", "save", kit.Keys(m.Cap(CTX_FOLLOW), "json"), list)
m.Cmd("ctx.config", "save", m.Prefix("json"), list)
return m
}
func (m *Message) Load(arg ...string) *Message {
list := []string{}
for _, k := range arg {
list = append(list, kit.Keys(m.Cap(CTX_FOLLOW), k))
list = append(list, m.Prefix(k))
}
m.Cmd("ctx.config", "load", kit.Keys(m.Cap(CTX_FOLLOW), "json"), list)
m.Cmd("ctx.config", "load", m.Prefix("json"), list)
return m
}
@ -57,7 +57,7 @@ func (m *Message) Space(arg interface{}) []string {
}
func (m *Message) PushPlugin(key string, arg ...string) *Message {
m.Option("_process", "_field")
m.Option(MSG_PROCESS, PROCESS_FIELD)
m.Option("_prefix", arg)
m.Cmdy("command", key)
return m

View File

@ -12,6 +12,12 @@ import (
"strings"
)
func _repos_path(name string) string {
if wd, _ := os.Getwd(); name != path.Base(wd) {
return path.Join("usr", name)
}
return "./"
}
func _repos_insert(m *ice.Message, name string, dir string) {
if s, e := os.Stat(m.Option(cli.CMD_DIR, path.Join(dir, ".git"))); e == nil && s.IsDir() {
ls := strings.SplitN(strings.Trim(m.Cmdx(cli.SYSTEM, GIT, "log", "-n1", `--pretty=format:"%ad %s"`, "--date=iso"), "\""), " ", 4)
@ -29,7 +35,6 @@ const (
ORIGIN = "origin"
BRANCH = "branch"
MASTER = "master"
COMMIT = "commit"
)
const REPOS = "repos"

View File

@ -4,6 +4,7 @@ import (
ice "github.com/shylinux/icebergs"
"github.com/shylinux/icebergs/base/cli"
"github.com/shylinux/icebergs/base/mdb"
"github.com/shylinux/icebergs/core/code"
kit "github.com/shylinux/toolkits"
"path"
@ -11,14 +12,18 @@ import (
)
const (
PULL = "pull"
PULL = "pull"
COMPILE = "compile"
ADD = "add"
COMMIT = "commit"
PUSH = "push"
)
const STATUS = "status"
func init() {
Index.Merge(&ice.Context{
Commands: map[string]*ice.Command{
STATUS: {Name: "status name auto submit compile pull", Help: "代码状态", Action: map[string]*ice.Action{
STATUS: {Name: "status name auto commit compile pull", Help: "代码状态", Action: map[string]*ice.Action{
PULL: {Name: "pull", Help: "下载", Hand: func(m *ice.Message, arg ...string) {
m.Option(cli.PROGRESS_CB, func(cb func(name string, count, total int)) {
count, total := 0, len(m.Confm(REPOS, kit.MDB_HASH))
@ -34,35 +39,26 @@ func init() {
})
m.Cmdy(cli.PROGRESS, mdb.CREATE)
}},
"compile": {Name: "compile", Help: "编译", Hand: func(m *ice.Message, arg ...string) {
COMPILE: {Name: "compile", Help: "编译", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(cli.SYSTEM, "make")
}},
"add": {Name: "add", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
if strings.Contains(m.Option(kit.MDB_NAME), ":\\") {
m.Option(cli.CMD_DIR, m.Option(kit.MDB_NAME))
} else {
m.Option(cli.CMD_DIR, path.Join("usr", m.Option(kit.MDB_NAME)))
}
m.Cmdy(cli.SYSTEM, GIT, "add", m.Option(kit.MDB_FILE))
ADD: {Name: "add", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
m.Option(cli.CMD_DIR, _repos_path(m.Option(kit.MDB_NAME)))
m.Cmdy(cli.SYSTEM, GIT, ADD, m.Option(kit.MDB_FILE))
}},
"submit": {Name: "submit action=opt,add comment=some", Help: "提交", Hand: func(m *ice.Message, arg ...string) {
COMMIT: {Name: "commit action=opt,add comment=some", Help: "提交", Hand: func(m *ice.Message, arg ...string) {
if m.Option(kit.MDB_NAME) == "" {
return
}
if strings.Contains(m.Option(kit.MDB_NAME), ":\\") {
m.Option(cli.CMD_DIR, m.Option(kit.MDB_NAME))
} else {
m.Option(cli.CMD_DIR, path.Join("usr", m.Option(kit.MDB_NAME)))
}
m.Option(cli.CMD_DIR, _repos_path(m.Option(kit.MDB_NAME)))
if arg[0] == "action" {
m.Cmdy(cli.SYSTEM, GIT, "commit", "-am", kit.Select("opt some", arg[1]+" "+arg[3]))
m.Cmdy(cli.SYSTEM, GIT, COMMIT, "-am", kit.Select("opt some", arg[1]+" "+arg[3]))
} else {
m.Cmdy(cli.SYSTEM, GIT, "commit", "-am", kit.Select("opt some", strings.Join(arg, " ")))
m.Cmdy(cli.SYSTEM, GIT, COMMIT, "-am", kit.Select("opt some", strings.Join(arg, " ")))
}
}},
"push": {Name: "push", Help: "上传", Hand: func(m *ice.Message, arg ...string) {
PUSH: {Name: "push", Help: "上传", Hand: func(m *ice.Message, arg ...string) {
if m.Option(kit.MDB_NAME) == "" {
return
}
@ -71,7 +67,14 @@ func init() {
} else {
m.Option(cli.CMD_DIR, path.Join("usr", m.Option(kit.MDB_NAME)))
}
m.Cmdy(cli.SYSTEM, GIT, "push")
m.Cmdy(cli.SYSTEM, GIT, PUSH)
}},
mdb.CREATE: {Name: "create main=src/main.go@key name=hi@key from=usr/icebergs/misc/bash/bash.go@key", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(code.AUTOGEN, mdb.CREATE, arg)
}},
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(code.AUTOGEN, mdb.INPUTS, arg)
}},
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
m.Richs(REPOS, nil, kit.Select(kit.MDB_FOREACH, arg, 0), func(key string, value map[string]interface{}) {
@ -83,7 +86,7 @@ func init() {
}
// 更改列表
for _, v := range strings.Split(strings.TrimSpace(m.Cmdx(cli.SYSTEM, GIT, "status", "-sb")), "\n") {
for _, v := range strings.Split(strings.TrimSpace(m.Cmdx(cli.SYSTEM, GIT, STATUS, "-sb")), "\n") {
vs := strings.SplitN(strings.TrimSpace(v), " ", 2)
m.Push("name", value[kit.MDB_NAME])
m.Push("tags", vs[0])
@ -92,14 +95,15 @@ func init() {
list := []string{}
switch vs[0] {
case "##":
list = append(list, mdb.CREATE)
if strings.Contains(vs[1], "ahead") {
list = append(list, "push")
list = append(list, PUSH)
}
default:
if strings.Contains(vs[0], "??") {
list = append(list, "add")
list = append(list, ADD)
} else {
list = append(list, "submit")
list = append(list, COMMIT)
}
}
m.PushButton(strings.Join(list, ","))

View File

@ -1,14 +1,14 @@
package lark
import (
"github.com/shylinux/icebergs"
ice "github.com/shylinux/icebergs"
"github.com/shylinux/icebergs/base/aaa"
"github.com/shylinux/icebergs/base/cli"
"github.com/shylinux/icebergs/base/mdb"
"github.com/shylinux/icebergs/base/web"
"github.com/shylinux/icebergs/core/chat"
"github.com/shylinux/icebergs/core/wiki"
"github.com/shylinux/toolkits"
kit "github.com/shylinux/toolkits"
"encoding/json"
"math/rand"
@ -98,7 +98,7 @@ var Index = &ice.Context{Name: LARK, Help: "机器人",
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
m.Load()
m.Cmd(web.SPIDE, mdb.CREATE, LARK, m.Conf(APP, kit.Keys(kit.MDB_META, LARK)))
m.Cmd(DUTY, "boot", m.Conf(cli.RUNTIME, "boot.hostname"), m.Time())
// m.Cmd(DUTY, "boot", m.Conf(cli.RUNTIME, "boot.hostname"), m.Time())
}},
ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
m.Save()

View File

@ -52,7 +52,7 @@ var Index = &ice.Context{Name: TMUX, Help: "工作台",
Commands: map[string]*ice.Command{
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
m.Load()
m.Watch(web.DREAM_START, m.Prefix(SESSION))
m.Watch(web.DREAM_CREATE, m.Prefix(SESSION))
}},
ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
m.Save()
@ -161,7 +161,7 @@ var Index = &ice.Context{Name: TMUX, Help: "工作台",
m.PushAction(mdb.REMOVE)
}},
SESSION: {Name: "session session window pane cmd auto create script", Help: "会话管理", Action: map[string]*ice.Action{
web.DREAM_START: {Name: "dream.start type name share river", Help: "梦想", Hand: func(m *ice.Message, arg ...string) {
web.DREAM_CREATE: {Name: "dream.create type name", Help: "梦想", Hand: func(m *ice.Message, arg ...string) {
m.Cmd(m.Prefix(SESSION), mdb.CREATE)
}},
mdb.CREATE: {Name: "create name", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
@ -178,7 +178,20 @@ var Index = &ice.Context{Name: TMUX, Help: "工作台",
} else {
// 创建会话
m.Option(cli.CMD_DIR, path.Join(m.Conf(web.DREAM, kit.META_PATH), m.Option(kit.MDB_NAME)))
m.Cmdy(cli.SYSTEM, TMUX, "new-session", "-ds", m.Option(kit.MDB_NAME))
ls := kit.Split(m.Option(kit.MDB_NAME), "-_")
name := ls[len(ls)-1]
m.Cmdy(cli.SYSTEM, TMUX, "new-session", "-ds", m.Option(kit.MDB_NAME), "-n", name)
name = m.Option(kit.MDB_NAME) + ":" + ls[len(ls)-1]
m.Cmdy(cli.SYSTEM, TMUX, "split-window", "-t", kit.Keys(name, "1"), "-p", "20")
m.Cmdy(cli.SYSTEM, TMUX, "split-window", "-t", kit.Keys(name, "2"), "-h")
m.Cmd(cli.SYSTEM, TMUX, "send-keys", "-t", kit.Keys(name, "3"), "ish_miss_log", "Enter")
m.Cmd(cli.SYSTEM, TMUX, "send-keys", "-t", kit.Keys(name, "2"), "ish_miss_space dev")
m.Cmd(cli.SYSTEM, TMUX, "send-keys", "-t", kit.Keys(name, "1"), "vi etc/miss.sh", "Enter")
m.Cmdy(cli.SYSTEM, TMUX, "link-window", "-s", name, "-t", "miss:")
}
m.Option(ice.MSG_PROCESS, "_refresh")
}},

View File

@ -219,7 +219,7 @@ func (c *Context) _split(name string) []interface{} {
switch kit.Value(item, kit.MDB_INPUT, ls[i+1]); ls[i+1] {
case "textarea":
kit.Value(item, "style.width", "360")
kit.Value(item, "style.height", "120")
kit.Value(item, "style.height", "60")
case "button":
kit.Value(item, kit.MDB_VALUE, "")
button = true
@ -632,6 +632,10 @@ func (m *Message) _hand(arg ...interface{}) *Message {
m.TryCatch(m.Spawn(), true, func(msg *Message) {
m = m.target.cmd(msg, cmd, list[0], list[1:]...)
})
} else if cmd, ok := m.source.Commands[list[0]]; ok {
m.TryCatch(m.Spawn(m.source), true, func(msg *Message) {
m = m.source.cmd(msg, cmd, list[0], list[1:]...)
})
} else {
m.Search(list[0], func(p *Context, s *Context, key string, cmd *Command) {
m.TryCatch(m.Spawn(s), true, func(msg *Message) {