forked from x/icebergs
opt some
This commit is contained in:
parent
64b7398f9b
commit
e2b2212724
@ -16,29 +16,37 @@ import (
|
||||
)
|
||||
|
||||
func _system_cmd(m *ice.Message, arg ...string) *exec.Cmd {
|
||||
bin := ""
|
||||
if text := kit.ReadFile(ice.ETC_PATH); len(text) > 0 {
|
||||
if file := _system_find(m, arg[0], strings.Split(text, ice.NL)...); file != "" {
|
||||
m.Logs(mdb.SELECT, "etc path cmd", file)
|
||||
arg[0] = file // 配置目录
|
||||
bin = file // 配置目录
|
||||
}
|
||||
}
|
||||
|
||||
env := kit.Simple(m.Optionv(CMD_ENV))
|
||||
for i := 0; i < len(env)-1; i += 2 {
|
||||
if env[i] == PATH {
|
||||
if file := _system_find(m, arg[0], strings.Split(env[i+1], ice.DF)...); file != "" {
|
||||
m.Logs(mdb.SELECT, "env path cmd", file)
|
||||
arg[0] = file // 环境变量
|
||||
bin = file // 环境变量
|
||||
}
|
||||
}
|
||||
}
|
||||
if _system_find(m, arg[0]) == "" && !strings.Contains(arg[0], ice.PS) {
|
||||
// if m.Option(CMD_DIR) != "" {
|
||||
// if file := _system_find(m, arg[0], m.Option(CMD_DIR)); file != "" {
|
||||
// m.Logs(mdb.SELECT, "dir path cmd", file)
|
||||
// bin = file // 当前目录
|
||||
// }
|
||||
// }
|
||||
if bin == "" && !strings.Contains(arg[0], ice.PS) {
|
||||
m.Cmd(MIRRORS, CMD, arg[0])
|
||||
if file := _system_find(m, arg[0]); file != "" {
|
||||
m.Logs(mdb.SELECT, "mirrors cmd", file)
|
||||
arg[0] = file // 软件镜像
|
||||
bin = file // 软件镜像
|
||||
}
|
||||
}
|
||||
cmd := exec.Command(arg[0], arg[1:]...)
|
||||
cmd := exec.Command(bin, arg[1:]...)
|
||||
|
||||
// 运行目录
|
||||
if cmd.Dir = m.Option(CMD_DIR); len(cmd.Dir) > 0 {
|
||||
@ -83,7 +91,7 @@ func _system_exec(m *ice.Message, cmd *exec.Cmd) {
|
||||
defer func() {
|
||||
m.Push(CMD_OUT, out.String())
|
||||
m.Push(CMD_ERR, err.String())
|
||||
if m.Echo(strings.TrimSpace(kit.Select(out.String(), err.String()))); IsSuccess(m) {
|
||||
if m.Echo(strings.TrimSpace(kit.Select(out.String(), err.String()))); IsSuccess(m) && out.String() == "" {
|
||||
m.SetAppend()
|
||||
}
|
||||
}()
|
||||
|
@ -178,6 +178,9 @@ func init() {
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, arg ...string) {
|
||||
root, name := kit.Select(PWD, m.Option(DIR_ROOT)), kit.Select(PWD, arg, 0)
|
||||
if strings.HasPrefix(name, ice.PS) {
|
||||
root = ice.PS
|
||||
}
|
||||
if !aaa.Right(m, path.Join(root, name)) {
|
||||
return // 没有权限
|
||||
}
|
||||
|
@ -130,26 +130,36 @@ func init() {
|
||||
"case",
|
||||
"default",
|
||||
"return",
|
||||
"goto",
|
||||
),
|
||||
DATATYPE, kit.Simple(
|
||||
"struct",
|
||||
"union",
|
||||
"enum",
|
||||
|
||||
"typedef",
|
||||
"sizeof",
|
||||
"void",
|
||||
"char",
|
||||
"float",
|
||||
"double",
|
||||
"unsigned",
|
||||
"signed",
|
||||
"short",
|
||||
"long",
|
||||
"int",
|
||||
|
||||
"register",
|
||||
"volatile",
|
||||
"extern",
|
||||
"static",
|
||||
"const",
|
||||
),
|
||||
DATATYPE, kit.Simple(
|
||||
"union",
|
||||
"struct",
|
||||
"unsigned",
|
||||
"double",
|
||||
"void",
|
||||
"long",
|
||||
"char",
|
||||
"int",
|
||||
),
|
||||
FUNCTION, kit.Simple(
|
||||
"typedef",
|
||||
"sizeof",
|
||||
|
||||
"assert",
|
||||
"zmalloc",
|
||||
"free",
|
||||
),
|
||||
CONSTANT, kit.Simple(
|
||||
"NULL", "-1", "0", "1", "2",
|
||||
|
@ -108,8 +108,8 @@ const (
|
||||
COMMENT = "comment"
|
||||
KEYWORD = "keyword"
|
||||
CONSTANT = "constant"
|
||||
DATATYPE = "datatype"
|
||||
FUNCTION = "function"
|
||||
DATATYPE = "datatype"
|
||||
)
|
||||
const (
|
||||
SPLIT = "split"
|
||||
@ -145,6 +145,7 @@ func init() {
|
||||
_inner_exec(m, arg[0], arg[1], arg[2])
|
||||
}},
|
||||
mdb.SEARCH: {Name: "search", Help: "搜索", Hand: func(m *ice.Message, arg ...string) {
|
||||
_inner_tags(m, m.Option(nfs.PATH), arg[1])
|
||||
return
|
||||
m.Option(nfs.DIR_ROOT, arg[2])
|
||||
m.Option(cli.CMD_DIR, kit.Path(arg[2]))
|
||||
@ -203,7 +204,8 @@ func init() {
|
||||
}},
|
||||
FAVOR: {Name: "favor", Help: "收藏"},
|
||||
"man": {Name: "man", Help: "手册", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(cli.SYSTEM, "sh", "-c", kit.Format("man %s|col -b", arg[0]))
|
||||
m.Option(cli.CMD_ENV, "COLUMNS", kit.Int(kit.Select("1920", m.Option("width")))/12)
|
||||
m.Cmdy(cli.SYSTEM, "sh", "-c", kit.Format("man %s %s|col -b", kit.Select("", arg, 1, arg[1] != "1"), arg[0]))
|
||||
}},
|
||||
"doc": {Name: "man", Help: "手册", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(cli.SYSTEM, "go", "doc", arg[0])
|
||||
|
@ -218,6 +218,9 @@ func init() {
|
||||
nfs.TRASH: {Name: "trash", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
_install_trash(m, arg...)
|
||||
}},
|
||||
nfs.PATH: {Name: "path", Help: "路径", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Echo(_install_path(m, kit.Select("", arg, 0)))
|
||||
}},
|
||||
nfs.SOURCE: {Name: "source link path", Help: "源码", Hand: func(m *ice.Message, arg ...string) {
|
||||
if m.Option(nfs.DIR_ROOT, path.Join(_install_path(m, ""), _INSTALL)); !nfs.ExistsFile(m, m.Option(nfs.DIR_ROOT)) {
|
||||
m.Option(nfs.DIR_ROOT, path.Join(_install_path(m, "")))
|
||||
|
@ -132,8 +132,14 @@ func AddChart(name string, hand func(m *ice.Message) Chart) { chart_list[name] =
|
||||
func _chart_show(m *ice.Message, kind, text string, arg ...string) {
|
||||
// 默认参数
|
||||
m.Option(STROKE_WIDTH, "2")
|
||||
switch m.Option("topic") {
|
||||
case "black":
|
||||
m.Option(STROKE, cli.YELLOW)
|
||||
m.Option(FILL, cli.YELLOW)
|
||||
default:
|
||||
m.Option(STROKE, cli.BLUE)
|
||||
m.Option(FILL, cli.YELLOW)
|
||||
}
|
||||
m.Option(FONT_SIZE, "24")
|
||||
m.Option(FONT_FAMILY, "monospace")
|
||||
chart := chart_list[kind](m)
|
||||
|
@ -103,11 +103,19 @@ const CHAIN = "chain"
|
||||
|
||||
func init() {
|
||||
wiki.AddChart(CHAIN, func(m *ice.Message) wiki.Chart {
|
||||
m.Option(wiki.STROKE_WIDTH, "2")
|
||||
switch m.Option("topic") {
|
||||
case "black":
|
||||
m.Option(wiki.STROKE, cli.YELLOW)
|
||||
default:
|
||||
m.Option(wiki.STROKE, cli.BLUE)
|
||||
}
|
||||
m.Option(wiki.STROKE, "")
|
||||
m.Option(wiki.FILL, "")
|
||||
m.Option(wiki.STROKE_WIDTH, "2")
|
||||
m.Option(wiki.MARGINX, "40")
|
||||
m.Option(wiki.MARGINY, "10")
|
||||
wiki.AddGroupOption(m, SHIP, wiki.STROKE, cli.RED, wiki.FILL, cli.GLASS)
|
||||
// wiki.AddGroupOption(m, SHIP, wiki.STROKE, cli.RED, wiki.FILL, cli.GLASS)
|
||||
wiki.AddGroupOption(m, SHIP, wiki.FILL, cli.GLASS)
|
||||
return &Chain{}
|
||||
})
|
||||
}
|
||||
|
@ -15,10 +15,11 @@ func _refer_show(m *ice.Message, text string, arg ...string) {
|
||||
list := [][]string{}
|
||||
for _, v := range kit.Split(strings.TrimSpace(text), ice.NL, ice.NL) {
|
||||
if ls := kit.Split(v, " ", " "); len(ls) == 1 {
|
||||
name, _ := url.QueryUnescape(path.Base(ls[0]))
|
||||
list = append(list, []string{kit.Select(ls[0], name), ls[0]})
|
||||
p, _ := url.QueryUnescape(ls[0])
|
||||
list = append(list, []string{kit.Select(ls[0], path.Base(p)), ls[0], p})
|
||||
} else {
|
||||
list = append(list, ls)
|
||||
p, _ := url.QueryUnescape(ls[1])
|
||||
list = append(list, append(ls, p))
|
||||
}
|
||||
}
|
||||
m.Optionv(mdb.LIST, list)
|
||||
@ -34,7 +35,7 @@ func init() {
|
||||
}},
|
||||
}, Configs: ice.Configs{
|
||||
REFER: {Name: REFER, Help: "参考", Value: kit.Data(
|
||||
nfs.TEMPLATE, `<ul {{.OptionTemplate}}>{{range $index, $value := .Optionv "list"}}<li>{{index $value 0}}: <a href="{{index $value 1}}" data-name="{{index $value 0}}" target="_blank">{{index $value 1}}</a></li>{{end}}</ul>`,
|
||||
nfs.TEMPLATE, `<ul {{.OptionTemplate}}>{{range $index, $value := .Optionv "list"}}<li>{{index $value 0}}: <a href="{{index $value 1}}" data-name="{{index $value 0}}" target="_blank">{{index $value 2}}</a></li>{{end}}</ul>`,
|
||||
)},
|
||||
}})
|
||||
}
|
||||
|
6
misc.go
6
misc.go
@ -249,6 +249,9 @@ func (c *Context) _command(m *Message, cmd *Command, key string, arg ...string)
|
||||
}
|
||||
|
||||
m._target = kit.FileLine(cmd.Hand, 3)
|
||||
if cmd.RawHand != nil {
|
||||
m._target = kit.FileLine(cmd.RawHand, 3)
|
||||
}
|
||||
if key == "select" {
|
||||
m.Log(LOG_CMDS, "%s.%s %d %v %v", c.Name, key, len(arg), arg, m.Optionv(MSG_FIELDS),
|
||||
logs.FileLineMeta(kit.Select(m._target, m._source, m.target.Name == MDB)))
|
||||
@ -292,6 +295,9 @@ func (c *Context) _action(m *Message, cmd *Command, key string, sub string, h *A
|
||||
}
|
||||
|
||||
m._target = kit.FileLine(cmd.Hand, 3)
|
||||
if cmd.RawHand != nil {
|
||||
m._target = kit.FileLine(cmd.RawHand, 3)
|
||||
}
|
||||
m.Log(LOG_CMDS, "%s.%s %s %d %v", c.Name, key, sub, len(arg), arg,
|
||||
logs.FileLineMeta(kit.Select(m._target, m._source, m.target.Name == MDB)))
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user