1
0
forked from x/icebergs
This commit is contained in:
IT 老营长 @云轩领航-创始人 2022-09-08 13:35:19 +08:00
parent 64b7398f9b
commit e2b2212724
9 changed files with 75 additions and 28 deletions

View File

@ -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()
}
}()

View File

@ -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 // 没有权限
}

View File

@ -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",

View File

@ -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])

View File

@ -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, "")))

View File

@ -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)

View File

@ -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{}
})
}

View File

@ -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>`,
)},
}})
}

View File

@ -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)))