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 {
|
func _system_cmd(m *ice.Message, arg ...string) *exec.Cmd {
|
||||||
|
bin := ""
|
||||||
if text := kit.ReadFile(ice.ETC_PATH); len(text) > 0 {
|
if text := kit.ReadFile(ice.ETC_PATH); len(text) > 0 {
|
||||||
if file := _system_find(m, arg[0], strings.Split(text, ice.NL)...); file != "" {
|
if file := _system_find(m, arg[0], strings.Split(text, ice.NL)...); file != "" {
|
||||||
m.Logs(mdb.SELECT, "etc path cmd", file)
|
m.Logs(mdb.SELECT, "etc path cmd", file)
|
||||||
arg[0] = file // 配置目录
|
bin = file // 配置目录
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
env := kit.Simple(m.Optionv(CMD_ENV))
|
env := kit.Simple(m.Optionv(CMD_ENV))
|
||||||
for i := 0; i < len(env)-1; i += 2 {
|
for i := 0; i < len(env)-1; i += 2 {
|
||||||
if env[i] == PATH {
|
if env[i] == PATH {
|
||||||
if file := _system_find(m, arg[0], strings.Split(env[i+1], ice.DF)...); file != "" {
|
if file := _system_find(m, arg[0], strings.Split(env[i+1], ice.DF)...); file != "" {
|
||||||
m.Logs(mdb.SELECT, "env path cmd", 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])
|
m.Cmd(MIRRORS, CMD, arg[0])
|
||||||
if file := _system_find(m, arg[0]); file != "" {
|
if file := _system_find(m, arg[0]); file != "" {
|
||||||
m.Logs(mdb.SELECT, "mirrors cmd", 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 {
|
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() {
|
defer func() {
|
||||||
m.Push(CMD_OUT, out.String())
|
m.Push(CMD_OUT, out.String())
|
||||||
m.Push(CMD_ERR, err.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()
|
m.SetAppend()
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
@ -178,6 +178,9 @@ func init() {
|
|||||||
}},
|
}},
|
||||||
}, Hand: func(m *ice.Message, arg ...string) {
|
}, Hand: func(m *ice.Message, arg ...string) {
|
||||||
root, name := kit.Select(PWD, m.Option(DIR_ROOT)), kit.Select(PWD, arg, 0)
|
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)) {
|
if !aaa.Right(m, path.Join(root, name)) {
|
||||||
return // 没有权限
|
return // 没有权限
|
||||||
}
|
}
|
||||||
|
@ -130,26 +130,36 @@ func init() {
|
|||||||
"case",
|
"case",
|
||||||
"default",
|
"default",
|
||||||
"return",
|
"return",
|
||||||
|
"goto",
|
||||||
|
),
|
||||||
|
DATATYPE, kit.Simple(
|
||||||
|
"struct",
|
||||||
|
"union",
|
||||||
|
"enum",
|
||||||
|
|
||||||
"typedef",
|
"void",
|
||||||
"sizeof",
|
"char",
|
||||||
|
"float",
|
||||||
|
"double",
|
||||||
|
"unsigned",
|
||||||
|
"signed",
|
||||||
|
"short",
|
||||||
|
"long",
|
||||||
|
"int",
|
||||||
|
|
||||||
|
"register",
|
||||||
|
"volatile",
|
||||||
"extern",
|
"extern",
|
||||||
"static",
|
"static",
|
||||||
"const",
|
"const",
|
||||||
),
|
),
|
||||||
DATATYPE, kit.Simple(
|
|
||||||
"union",
|
|
||||||
"struct",
|
|
||||||
"unsigned",
|
|
||||||
"double",
|
|
||||||
"void",
|
|
||||||
"long",
|
|
||||||
"char",
|
|
||||||
"int",
|
|
||||||
),
|
|
||||||
FUNCTION, kit.Simple(
|
FUNCTION, kit.Simple(
|
||||||
|
"typedef",
|
||||||
|
"sizeof",
|
||||||
|
|
||||||
"assert",
|
"assert",
|
||||||
"zmalloc",
|
"zmalloc",
|
||||||
|
"free",
|
||||||
),
|
),
|
||||||
CONSTANT, kit.Simple(
|
CONSTANT, kit.Simple(
|
||||||
"NULL", "-1", "0", "1", "2",
|
"NULL", "-1", "0", "1", "2",
|
||||||
|
@ -108,8 +108,8 @@ const (
|
|||||||
COMMENT = "comment"
|
COMMENT = "comment"
|
||||||
KEYWORD = "keyword"
|
KEYWORD = "keyword"
|
||||||
CONSTANT = "constant"
|
CONSTANT = "constant"
|
||||||
DATATYPE = "datatype"
|
|
||||||
FUNCTION = "function"
|
FUNCTION = "function"
|
||||||
|
DATATYPE = "datatype"
|
||||||
)
|
)
|
||||||
const (
|
const (
|
||||||
SPLIT = "split"
|
SPLIT = "split"
|
||||||
@ -145,6 +145,7 @@ func init() {
|
|||||||
_inner_exec(m, arg[0], arg[1], arg[2])
|
_inner_exec(m, arg[0], arg[1], arg[2])
|
||||||
}},
|
}},
|
||||||
mdb.SEARCH: {Name: "search", Help: "搜索", Hand: func(m *ice.Message, arg ...string) {
|
mdb.SEARCH: {Name: "search", Help: "搜索", Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
_inner_tags(m, m.Option(nfs.PATH), arg[1])
|
||||||
return
|
return
|
||||||
m.Option(nfs.DIR_ROOT, arg[2])
|
m.Option(nfs.DIR_ROOT, arg[2])
|
||||||
m.Option(cli.CMD_DIR, kit.Path(arg[2]))
|
m.Option(cli.CMD_DIR, kit.Path(arg[2]))
|
||||||
@ -203,7 +204,8 @@ func init() {
|
|||||||
}},
|
}},
|
||||||
FAVOR: {Name: "favor", Help: "收藏"},
|
FAVOR: {Name: "favor", Help: "收藏"},
|
||||||
"man": {Name: "man", Help: "手册", Hand: func(m *ice.Message, arg ...string) {
|
"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) {
|
"doc": {Name: "man", Help: "手册", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(cli.SYSTEM, "go", "doc", arg[0])
|
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) {
|
nfs.TRASH: {Name: "trash", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||||
_install_trash(m, arg...)
|
_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) {
|
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)) {
|
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, "")))
|
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) {
|
func _chart_show(m *ice.Message, kind, text string, arg ...string) {
|
||||||
// 默认参数
|
// 默认参数
|
||||||
m.Option(STROKE_WIDTH, "2")
|
m.Option(STROKE_WIDTH, "2")
|
||||||
m.Option(STROKE, cli.BLUE)
|
switch m.Option("topic") {
|
||||||
m.Option(FILL, cli.YELLOW)
|
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_SIZE, "24")
|
||||||
m.Option(FONT_FAMILY, "monospace")
|
m.Option(FONT_FAMILY, "monospace")
|
||||||
chart := chart_list[kind](m)
|
chart := chart_list[kind](m)
|
||||||
|
@ -103,11 +103,19 @@ const CHAIN = "chain"
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
wiki.AddChart(CHAIN, func(m *ice.Message) wiki.Chart {
|
wiki.AddChart(CHAIN, func(m *ice.Message) wiki.Chart {
|
||||||
|
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.STROKE_WIDTH, "2")
|
||||||
m.Option(wiki.STROKE, cli.BLUE)
|
|
||||||
m.Option(wiki.MARGINX, "40")
|
m.Option(wiki.MARGINX, "40")
|
||||||
m.Option(wiki.MARGINY, "10")
|
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{}
|
return &Chain{}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -15,10 +15,11 @@ func _refer_show(m *ice.Message, text string, arg ...string) {
|
|||||||
list := [][]string{}
|
list := [][]string{}
|
||||||
for _, v := range kit.Split(strings.TrimSpace(text), ice.NL, ice.NL) {
|
for _, v := range kit.Split(strings.TrimSpace(text), ice.NL, ice.NL) {
|
||||||
if ls := kit.Split(v, " ", " "); len(ls) == 1 {
|
if ls := kit.Split(v, " ", " "); len(ls) == 1 {
|
||||||
name, _ := url.QueryUnescape(path.Base(ls[0]))
|
p, _ := url.QueryUnescape(ls[0])
|
||||||
list = append(list, []string{kit.Select(ls[0], name), ls[0]})
|
list = append(list, []string{kit.Select(ls[0], path.Base(p)), ls[0], p})
|
||||||
} else {
|
} else {
|
||||||
list = append(list, ls)
|
p, _ := url.QueryUnescape(ls[1])
|
||||||
|
list = append(list, append(ls, p))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
m.Optionv(mdb.LIST, list)
|
m.Optionv(mdb.LIST, list)
|
||||||
@ -34,7 +35,7 @@ func init() {
|
|||||||
}},
|
}},
|
||||||
}, Configs: ice.Configs{
|
}, Configs: ice.Configs{
|
||||||
REFER: {Name: REFER, Help: "参考", Value: kit.Data(
|
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)
|
m._target = kit.FileLine(cmd.Hand, 3)
|
||||||
|
if cmd.RawHand != nil {
|
||||||
|
m._target = kit.FileLine(cmd.RawHand, 3)
|
||||||
|
}
|
||||||
if key == "select" {
|
if key == "select" {
|
||||||
m.Log(LOG_CMDS, "%s.%s %d %v %v", c.Name, key, len(arg), arg, m.Optionv(MSG_FIELDS),
|
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)))
|
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)
|
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,
|
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)))
|
logs.FileLineMeta(kit.Select(m._target, m._source, m.target.Name == MDB)))
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user