mirror of
https://shylinux.com/x/ContextOS
synced 2025-04-25 08:48:06 +08:00
add cli.date
This commit is contained in:
parent
5637eeca20
commit
ff63b234cb
@ -58,7 +58,7 @@ main() {
|
||||
trap HUP hup
|
||||
log "\nstarting..."
|
||||
while true; do
|
||||
date && ${ctx_bin} "$@" && break
|
||||
date && ${ctx_bin} "$@" 2>error.log && break
|
||||
log "\n\nrestarting..." && sleep 1
|
||||
done
|
||||
}
|
||||
|
@ -13,3 +13,6 @@
|
||||
~nfs
|
||||
source local.shy
|
||||
|
||||
~cli
|
||||
upgrade plugin context
|
||||
upgrade plugin love
|
||||
|
@ -57,13 +57,10 @@ var Index = &ctx.Context{Name: "cli", Help: "管理中心",
|
||||
Caches: map[string]*ctx.Cache{},
|
||||
Configs: map[string]*ctx.Config{
|
||||
"runtime": &ctx.Config{Name: "runtime", Value: map[string]interface{}{
|
||||
"init": []interface{}{
|
||||
"ctx_log", "ctx_app", "ctx_bin",
|
||||
"ctx_ups", "ctx_box", "ctx_dev",
|
||||
"ctx_cas",
|
||||
"ctx_root", "ctx_home",
|
||||
"ctx_type",
|
||||
"web_port", "ssh_port",
|
||||
"init": []interface{}{"ctx_log",
|
||||
"ctx_cas", "ctx_ups", "ctx_box", "ctx_dev",
|
||||
"ctx_app", "ctx_bin", "ctx_root", "ctx_home",
|
||||
"ctx_type", "ssh_port", "web_port",
|
||||
},
|
||||
"boot": map[string]interface{}{
|
||||
"web_port": ":9095",
|
||||
@ -139,7 +136,7 @@ var Index = &ctx.Context{Name: "cli", Help: "管理中心",
|
||||
},
|
||||
}, Help: "版本发布"},
|
||||
"upgrade": &ctx.Config{Name: "upgrade", Value: map[string]interface{}{
|
||||
"install": []interface{}{"context", "tmux", "mind", "love"},
|
||||
"install": []interface{}{"context", "love"},
|
||||
"system": []interface{}{"boot.sh", "zone.sh", "user.sh", "node.sh", "init.shy", "common.shy", "exit.shy"},
|
||||
"portal": []interface{}{"template.tar.gz", "librarys.tar.gz"},
|
||||
"script": []interface{}{"test.php"},
|
||||
@ -709,6 +706,66 @@ var Index = &ctx.Context{Name: "cli", Help: "管理中心",
|
||||
}
|
||||
return
|
||||
}},
|
||||
"date": &ctx.Command{Name: "date", Help: "日历", Form: map[string]int{"space": 1, "format": 2, "count": 1, "nature": 1, "cmd": -1}, Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
|
||||
if m.Has("cmd") {
|
||||
m.Log("fino", "what %v", m.Meta["cmd"])
|
||||
m.Cmdy(m.Meta["cmd"])
|
||||
return
|
||||
}
|
||||
show := map[int]string{0: "周日", 1: "周一", 2: "周二", 3: "周三", 4: "周四", 5: "周五", 6: "周六"}
|
||||
|
||||
format, format_time := "", ""
|
||||
if m.Has("format") {
|
||||
format, format_time = kit.Select("%s", m.Meta["format"], 0), kit.Select("20060102", m.Meta["format"], 1)
|
||||
}
|
||||
space := m.Options("space")
|
||||
now := kit.Times(m.Cmd("cli.time", arg).Append("datetime"))
|
||||
n := kit.Int(kit.Select("1", m.Option("count")))
|
||||
if m.Has("nature") {
|
||||
n = 0
|
||||
nature := kit.Times(m.Option("nature"))
|
||||
for cur := now; cur.Before(nature); cur = cur.AddDate(0, 1, 0) {
|
||||
n++
|
||||
}
|
||||
}
|
||||
|
||||
cur := now
|
||||
for i := 0; i < n; i, now = i+1, now.AddDate(0, 1, 0) {
|
||||
begin := time.Unix(now.Unix()-int64(now.Day()-1)*24*3600, 0)
|
||||
last := time.Unix(begin.Unix()-int64(begin.Weekday())*24*3600, 0)
|
||||
cur = last
|
||||
|
||||
if last.Month() != now.Month() {
|
||||
for month := cur.Month(); cur.Month() == month; cur = cur.AddDate(0, 0, 1) {
|
||||
if space || i == 0 {
|
||||
m.Push(show[int(cur.Weekday())], "")
|
||||
}
|
||||
}
|
||||
}
|
||||
for month := cur.Month(); cur.Month() == month; cur = cur.AddDate(0, 0, 1) {
|
||||
data := fmt.Sprintf("%d", cur.Day())
|
||||
if cur.Day() == 1 {
|
||||
if cur.Month() == 1 {
|
||||
data = fmt.Sprintf("%d年", cur.Year())
|
||||
} else {
|
||||
data = fmt.Sprintf("%d月", cur.Month())
|
||||
}
|
||||
}
|
||||
if format != "" {
|
||||
data = fmt.Sprintf(format, cur.Format(format_time), data)
|
||||
}
|
||||
m.Push(show[int(cur.Weekday())], data)
|
||||
}
|
||||
if space || i == n-1 {
|
||||
for ; cur.Weekday() > 0; cur = cur.AddDate(0, 0, 1) {
|
||||
m.Push(show[int(cur.Weekday())], "")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m.Table()
|
||||
return
|
||||
}},
|
||||
"proc": &ctx.Command{Name: "proc", Help: "进程管理", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
|
||||
m.Cmdy("cli.system", "ps", kit.Select("ax", arg, 0), "cmd_parse", "cut")
|
||||
if len(arg) > 1 {
|
||||
@ -940,7 +997,7 @@ var Index = &ctx.Context{Name: "cli", Help: "管理中心",
|
||||
m.Sort("file").Table()
|
||||
return
|
||||
}},
|
||||
"upgrade": &ctx.Command{Name: "upgrade project|bench|system|portal|plugin|restart|script", Help: "服务升级", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
|
||||
"upgrade": &ctx.Command{Name: "upgrade install|bench|system|portal|script|plugin|restart|package|project", Help: "服务升级", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
|
||||
if len(arg) == 0 {
|
||||
m.Cmdy("ctx.config", "upgrade")
|
||||
return
|
||||
@ -954,11 +1011,6 @@ var Index = &ctx.Context{Name: "cli", Help: "管理中心",
|
||||
m.Cmd("cli.upgrade", "package", value)
|
||||
})
|
||||
|
||||
case "project":
|
||||
m.Cmd("cli.project", "init")
|
||||
m.Cmd("cli.compile", "all")
|
||||
m.Cmd("cli.publish")
|
||||
|
||||
case "script":
|
||||
// 脚本列表
|
||||
if len(arg) == 1 {
|
||||
@ -977,18 +1029,6 @@ var Index = &ctx.Context{Name: "cli", Help: "管理中心",
|
||||
"missyou", miss, "save", path.Join(m.Conf("project", "script.path"), v))
|
||||
}
|
||||
|
||||
case "restart":
|
||||
m.Cmdy("cli.quit", "1")
|
||||
|
||||
case "package":
|
||||
name := arg[1] + ".tar.gz"
|
||||
p := path.Join(m.Conf("publish", "path"), name)
|
||||
|
||||
m.Cmd("web.get", "dev", fmt.Sprintf("publish/%s", name), "save", p,
|
||||
"GOARCH", m.Conf("runtime", "host.GOARCH"), "GOOS", m.Conf("runtime", "host.GOOS"))
|
||||
|
||||
m.Cmd("cli.system", "tar", "-xvf", p, "-C", path.Dir(p))
|
||||
|
||||
case "plugin":
|
||||
// 模块列表
|
||||
if arg = arg[1:]; len(arg) == 0 {
|
||||
@ -1013,6 +1053,9 @@ var Index = &ctx.Context{Name: "cli", Help: "管理中心",
|
||||
|
||||
// 查找脚本
|
||||
p := m.Cmdx("nfs.path", path.Join(msg.Conf("project", "plugin.path"), arg[0], "index.shy"))
|
||||
if p == "" {
|
||||
p = m.Cmdx("nfs.path", path.Join(msg.Conf("publish", "path"), arg[0], "index.shy"))
|
||||
}
|
||||
if p == "" {
|
||||
p = m.Cmdx("nfs.hash", m.Cmdx("web.get", "dev", fmt.Sprintf("publish/%s", arg[0]),
|
||||
"GOARCH", m.Conf("runtime", "host.GOARCH"),
|
||||
@ -1031,13 +1074,30 @@ var Index = &ctx.Context{Name: "cli", Help: "管理中心",
|
||||
// 组件列表
|
||||
m.Confm("ssh.componet", arg[0], func(index int, value map[string]interface{}) {
|
||||
m.Push("index", index)
|
||||
m.Push("name", value["componet_name"])
|
||||
m.Push("help", value["componet_help"])
|
||||
m.Push("ctx", value["componet_ctx"])
|
||||
m.Push("cmd", value["componet_cmd"])
|
||||
m.Push("name", value["name"])
|
||||
m.Push("help", value["help"])
|
||||
m.Push("ctx", value["ctx"])
|
||||
m.Push("cmd", value["cmd"])
|
||||
})
|
||||
m.Table()
|
||||
|
||||
case "restart":
|
||||
m.Cmdy("cli.quit", "1")
|
||||
|
||||
case "package":
|
||||
name := arg[1] + ".tar.gz"
|
||||
p := path.Join(m.Conf("publish", "path"), name)
|
||||
|
||||
m.Cmd("web.get", "dev", fmt.Sprintf("publish/%s", name), "save", p,
|
||||
"GOARCH", m.Conf("runtime", "host.GOARCH"), "GOOS", m.Conf("runtime", "host.GOOS"))
|
||||
|
||||
m.Cmd("cli.system", "tar", "-xvf", p, "-C", path.Dir(p))
|
||||
|
||||
case "project":
|
||||
m.Cmd("cli.project", "init")
|
||||
m.Cmd("cli.compile", "all")
|
||||
m.Cmd("cli.publish")
|
||||
|
||||
default:
|
||||
restart := false
|
||||
for _, link := range kit.View([]string{arg[0]}, m.Confm("upgrade")) {
|
||||
|
@ -4,5 +4,5 @@ var version = struct {
|
||||
host string
|
||||
self int
|
||||
}{
|
||||
"2019-09-19 08:57:38", "com.mac", 501,
|
||||
"2019-09-19 19:02:39", "centos", 562,
|
||||
}
|
||||
|
@ -153,37 +153,37 @@ func (m *Message) Format(arg ...interface{}) string {
|
||||
for i := len(ms) - 1; i >= 0; i-- {
|
||||
msg := ms[i]
|
||||
|
||||
meta = append(meta, fmt.Sprintf("%s\n", msg.Format("time", "ship")))
|
||||
meta = append(meta, fmt.Sprintf("%s", msg.Format("time", "ship")))
|
||||
if len(msg.Meta["detail"]) > 0 {
|
||||
meta = append(meta, fmt.Sprintf(" detail: %d %v\n", len(msg.Meta["detail"]), msg.Meta["detail"]))
|
||||
meta = append(meta, fmt.Sprintf("detail:%d %v", len(msg.Meta["detail"]), msg.Meta["detail"]))
|
||||
}
|
||||
|
||||
if len(msg.Meta["option"]) > 0 {
|
||||
meta = append(meta, fmt.Sprintf(" option: %d %v\n", len(msg.Meta["option"]), msg.Meta["option"]))
|
||||
meta = append(meta, fmt.Sprintf("option:%d %v\n", len(msg.Meta["option"]), msg.Meta["option"]))
|
||||
for _, k := range msg.Meta["option"] {
|
||||
if _, ok := msg.Data[k]; ok {
|
||||
// meta = append(meta, fmt.Sprintf(" %s: %v\n", k, kit.Format(v)))
|
||||
} else if v, ok := msg.Meta[k]; ok {
|
||||
if v, ok := msg.Meta[k]; ok {
|
||||
meta = append(meta, fmt.Sprintf(" %s: %d %v\n", k, len(v), v))
|
||||
}
|
||||
}
|
||||
} else {
|
||||
meta = append(meta, "\n")
|
||||
}
|
||||
|
||||
if len(msg.Meta["append"]) > 0 {
|
||||
meta = append(meta, fmt.Sprintf(" append: %d %v\n", len(msg.Meta["append"]), msg.Meta["append"]))
|
||||
meta = append(meta, fmt.Sprintf(" append:%d %v\n", len(msg.Meta["append"]), msg.Meta["append"]))
|
||||
for _, k := range msg.Meta["append"] {
|
||||
if _, ok := msg.Data[k]; ok {
|
||||
// meta = append(meta, fmt.Sprintf(" %s: %v\n", k, kit.Format(v)))
|
||||
} else if v, ok := msg.Meta[k]; ok {
|
||||
if v, ok := msg.Meta[k]; ok {
|
||||
meta = append(meta, fmt.Sprintf(" %s: %d %v\n", k, len(v), v))
|
||||
}
|
||||
}
|
||||
}
|
||||
if len(msg.Meta["result"]) > 0 {
|
||||
meta = append(meta, fmt.Sprintf(" result: %d %v\n", len(msg.Meta["result"]), msg.Meta["result"]))
|
||||
meta = append(meta, fmt.Sprintf(" result:%d %v\n", len(msg.Meta["result"]), msg.Meta["result"]))
|
||||
}
|
||||
}
|
||||
case "stack":
|
||||
pc := make([]uintptr, 100)
|
||||
pc = pc[:runtime.Callers(0, pc)]
|
||||
pc = pc[:runtime.Callers(5, pc)]
|
||||
frames := runtime.CallersFrames(pc)
|
||||
|
||||
for {
|
||||
|
@ -17,7 +17,7 @@ kit publish "发布" private \
|
||||
|
||||
kit upgrade "升级" private "ssh._route" _ "cli.upgrade" \
|
||||
text "" name pod imports plugin_pod \
|
||||
select "" values script values restart values plugin values bench values portal values system action auto \
|
||||
select "" values script values plugin values restart values package values bench values portal values system action auto \
|
||||
text "" name see imports plugin_see \
|
||||
button "升级"
|
||||
|
||||
|
@ -1,4 +1,15 @@
|
||||
{init: function(run, field, option, output) {
|
||||
kit.Log("hello world")
|
||||
return {}
|
||||
return {
|
||||
show: function(event) {
|
||||
run(event, ["", "", "cmd", "ssh.data", "show", "love"], function(msg) {
|
||||
ctx.Table(msg, function(value) {
|
||||
var ts = ".s"+value.when.split(" ")[0].split("-").join("")
|
||||
kit.Selector(output, ts, function(item) {
|
||||
item.parentNode.style.backgroundColor = "red"
|
||||
item.parentNode.title = value.where
|
||||
})
|
||||
})
|
||||
})
|
||||
},
|
||||
}
|
||||
}}
|
||||
|
@ -16,7 +16,9 @@ fun meets "第一眼" private \
|
||||
copy ssh.data insert _ when _ where __
|
||||
end
|
||||
|
||||
fun meet "第一眼" protected "ssh.data" show \
|
||||
text "love" name table imports plugin_table \
|
||||
button "查看" action auto
|
||||
kit date "日历" "index.js" protected "cli.date" format '<span class="%s">%s</span>' "s20060102" space true _ nature _ \
|
||||
text "2019-07-08" name "起始时间" \
|
||||
text "date" name "截止时间" \
|
||||
button "查看" action auto \
|
||||
button "显示" click show
|
||||
|
||||
|
@ -34,6 +34,9 @@ func Time(arg ...string) int {
|
||||
}
|
||||
return 0
|
||||
}
|
||||
func Times(arg ...string) time.Time {
|
||||
return time.Unix(int64(Time(arg...)), 0)
|
||||
}
|
||||
func Duration(arg ...string) time.Duration {
|
||||
d, _ := time.ParseDuration(arg[0])
|
||||
return d
|
||||
|
@ -564,7 +564,7 @@ function Pane(page, field) {
|
||||
|
||||
list.push(ui.last), field.scrollBy(0, field.scrollHeight+100)
|
||||
key && key.length > 0 && (member[line[which]] = member[line[key[0]]] = {index:index, key:line[which]});
|
||||
line.name && (type == "plugin" || type == "field") && pane.Plugin(page, pane, ui.field, function(event, cmds, cbs) {
|
||||
(type == "plugin" && line.name || type == "field") && pane.Plugin(page, pane, ui.field, function(event, cmds, cbs) {
|
||||
typeof cb == "function" && cb(line, index, event, cmds, cbs)
|
||||
})
|
||||
return ui
|
||||
|
@ -477,6 +477,7 @@ kit = toolkit = {
|
||||
|
||||
// HTML显示文本
|
||||
Color: function(s) {
|
||||
if (!s) {return s}
|
||||
s = s.replace(/\033\[1m/g, "<span style='font-weight:bold'>")
|
||||
s = s.replace(/\033\[36m/g, "<span style='color:#0ff'>")
|
||||
s = s.replace(/\033\[33m/g, "<span style='color:#ff0'>")
|
||||
|
Loading…
x
Reference in New Issue
Block a user