1
0
mirror of https://shylinux.com/x/icebergs synced 2025-04-26 09:34:05 +08:00
This commit is contained in:
shaoying 2020-10-26 18:27:29 +08:00
parent 6e6807f872
commit d6ac0ba5f0
10 changed files with 92 additions and 74 deletions

View File

@ -8,8 +8,6 @@ import (
"io" "io"
) )
const OUTPUT = "output"
func _cli_progress(m *ice.Message, cb interface{}) { func _cli_progress(m *ice.Message, cb interface{}) {
m.Option(mdb.FIELDS, "time,name,step,count,total") m.Option(mdb.FIELDS, "time,name,step,count,total")
if m.Option(ice.MSG_PROCESS, "_progress"); m.Option("_progress") != "" { if m.Option(ice.MSG_PROCESS, "_progress"); m.Option("_progress") != "" {
@ -32,23 +30,23 @@ func _cli_progress(m *ice.Message, cb interface{}) {
} }
}) })
} }
func Follow(m *ice.Message) bool { func Follow(m *ice.Message, action string) bool {
m.Option(ice.MSG_PROCESS, "_follow") m.Option(ice.MSG_PROCESS, "_follow")
if m.Option("cache.action", "build"); m.Option("cache.hash") != "" { if m.Option(mdb.CACHE_ACTION, action); m.Option(mdb.CACHE_HASH) != "" {
m.Cmdy(OUTPUT, m.Option("cache.hash")) m.Cmdy(OUTPUT, m.Option(mdb.CACHE_HASH))
m.Sort(kit.MDB_ID).Table(func(index int, value map[string]string, head []string) { m.Sort(kit.MDB_ID).Table(func(index int, value map[string]string, head []string) {
m.Option("cache.begin", value[kit.MDB_ID]) m.Option(mdb.CACHE_BEGIN, value[kit.MDB_ID])
m.Echo(value[kit.SSH_RES]) m.Echo(value[kit.SSH_RES])
}) })
if len(m.Resultv()) == 0 && m.Conf(OUTPUT, kit.Keys(kit.MDB_HASH, m.Option("cache.hash"), kit.MDB_META, kit.MDB_STATUS)) == STOP { if len(m.Resultv()) == 0 && m.Conf(OUTPUT, kit.Keys(kit.MDB_HASH, m.Option(mdb.CACHE_HASH), kit.MDB_META, kit.MDB_STATUS)) == STOP {
m.Echo(STOP) m.Echo(STOP)
} }
return true return true
} }
m.Cmdy(OUTPUT, mdb.CREATE, kit.MDB_NAME, m.Option(kit.MDB_LINK)) m.Cmdy(OUTPUT, mdb.CREATE, kit.MDB_NAME, m.Option(kit.MDB_LINK))
m.Option("cache.hash", m.Result()) m.Option(mdb.CACHE_HASH, m.Result())
m.Option("cache.begin", 1) m.Option(mdb.CACHE_BEGIN, 1)
m.Set(ice.MSG_RESULT) m.Set(ice.MSG_RESULT)
return false return false
} }
@ -59,6 +57,8 @@ const (
const PROGRESS = "progress" const PROGRESS = "progress"
const OUTPUT = "output"
func init() { func init() {
Index.Merge(&ice.Context{ Index.Merge(&ice.Context{
Configs: map[string]*ice.Config{ Configs: map[string]*ice.Config{
@ -113,7 +113,7 @@ func init() {
return return
} }
m.Option("_control", "_page") m.Option(ice.MSG_CONTROL, "_page")
m.Option(mdb.FIELDS, kit.Select("time,id,res", mdb.DETAIL, len(arg) > 1)) m.Option(mdb.FIELDS, kit.Select("time,id,res", mdb.DETAIL, len(arg) > 1))
m.Cmdy(mdb.SELECT, OUTPUT, kit.Keys(kit.MDB_HASH, arg[0]), mdb.LIST, kit.MDB_ID, arg[1:]) m.Cmdy(mdb.SELECT, OUTPUT, kit.Keys(kit.MDB_HASH, arg[0]), mdb.LIST, kit.MDB_ID, arg[1:])
m.Sort(kit.MDB_ID) m.Sort(kit.MDB_ID)

View File

@ -407,6 +407,15 @@ const (
INVITE = "invite" INVITE = "invite"
COMMIT = "commit" COMMIT = "commit"
) )
const (
CACHE_LIMIT = "cache.limit"
CACHE_FILED = "cache.field"
CACHE_VALUE = "cache.value"
CACHE_ACTION = "cache.action"
CACHE_BEGIN = "cache.begin"
CACHE_HASH = "cache.hash"
)
const MDB = "mdb" const MDB = "mdb"

View File

@ -69,7 +69,7 @@ func init() {
}) })
}}, }},
gdb.BUILD: {Name: "build link", Help: "构建", Hand: func(m *ice.Message, arg ...string) { gdb.BUILD: {Name: "build link", Help: "构建", Hand: func(m *ice.Message, arg ...string) {
if cli.Follow(m) { if cli.Follow(m, gdb.BUILD) {
return return
} }

View File

@ -2,6 +2,8 @@ package zsh
import ( import (
ice "github.com/shylinux/icebergs" ice "github.com/shylinux/icebergs"
"github.com/shylinux/icebergs/base/gdb"
"github.com/shylinux/icebergs/base/web"
"github.com/shylinux/icebergs/core/code" "github.com/shylinux/icebergs/core/code"
kit "github.com/shylinux/toolkits" kit "github.com/shylinux/toolkits"
@ -18,15 +20,15 @@ func init() {
)}, )},
}, },
Commands: map[string]*ice.Command{ Commands: map[string]*ice.Command{
BASH: {Name: "bash port path auto 启动 构建 下载", Help: "命令行", Action: map[string]*ice.Action{ BASH: {Name: "bash port path auto start build download", Help: "命令行", Action: map[string]*ice.Action{
"download": {Name: "download", Help: "下载", Hand: func(m *ice.Message, arg ...string) { web.DOWNLOAD: {Name: "download", Help: "下载", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(code.INSTALL, "download", m.Conf(BASH, kit.META_SOURCE)) m.Cmdy(code.INSTALL, web.DOWNLOAD, m.Conf(BASH, kit.META_SOURCE))
}}, }},
"build": {Name: "build", Help: "构建", Hand: func(m *ice.Message, arg ...string) { gdb.BUILD: {Name: "build", Help: "构建", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(code.INSTALL, "build", m.Conf(BASH, kit.META_SOURCE)) m.Cmdy(code.INSTALL, gdb.BUILD, m.Conf(BASH, kit.META_SOURCE))
}}, }},
"start": {Name: "start", Help: "启动", Hand: func(m *ice.Message, arg ...string) { gdb.START: {Name: "start", Help: "启动", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(code.INSTALL, "start", m.Conf(BASH, kit.META_SOURCE), "bin/bash") m.Cmdy(code.INSTALL, gdb.START, m.Conf(BASH, kit.META_SOURCE), "bin/bash")
}}, }},
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
m.Cmdy(code.INSTALL, path.Base(m.Conf(BASH, kit.META_SOURCE)), arg) m.Cmdy(code.INSTALL, path.Base(m.Conf(BASH, kit.META_SOURCE)), arg)

View File

@ -11,6 +11,9 @@ field "bash" web.code.inner args `[ usr/install/bash-4.2.53/ input.c 625 ]`
section "构建" section "构建"
spark shell ` spark shell `
yum install -y wget make gcc
yum install -y byacc.x86_64
wget http://mirrors.aliyun.com/gnu/bash/bash-4.2.53.tar.gz wget http://mirrors.aliyun.com/gnu/bash/bash-4.2.53.tar.gz
tar xvf bash-4.2.53.tar.gz && cd bash-4.2.53 tar xvf bash-4.2.53.tar.gz && cd bash-4.2.53
@ -27,7 +30,7 @@ cd ./_install
chapter "应用" chapter "应用"
web.code.zsh.sess contexts web.code.zsh.sess contexts
field "命令行" web.code.zsh.sess field "会话流" web.code.zsh.sess
field "回收站" web.code.zsh.trash field "回收站" web.code.zsh.trash
field "收藏夹" web.code.zsh.favor field "收藏夹" web.code.zsh.favor
field "同步流" web.code.zsh.sync field "同步流" web.code.zsh.sync

View File

@ -20,15 +20,12 @@ func init() {
mdb.CREATE: {Name: "create topic", Help: "创建", Hand: func(m *ice.Message, arg ...string) { mdb.CREATE: {Name: "create topic", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(mdb.INSERT, m.Prefix(FAVOR), "", mdb.HASH, arg) m.Cmdy(mdb.INSERT, m.Prefix(FAVOR), "", mdb.HASH, arg)
}}, }},
mdb.INSERT: {Name: "insert topic=数据结构 name=hi text=hello file=hi.c line=1", Help: "添加", Hand: func(m *ice.Message, arg ...string) { mdb.INSERT: {Name: "insert topic=数据结构 type=shell name=hi text=hello file=hi.c line=1", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
m.Richs(m.Prefix(FAVOR), "", m.Option(kit.MDB_TOPIC), func(key string, value map[string]interface{}) { m.Cmdy(mdb.INSERT, m.Prefix(FAVOR), "", mdb.HASH, kit.MDB_TOPIC, m.Option(kit.MDB_TOPIC))
m.Cmdy(mdb.INSERT, m.Prefix(FAVOR), kit.Keys(kit.MDB_HASH, key), mdb.LIST, arg[2:]) m.Cmdy(mdb.INSERT, m.Prefix(FAVOR), kit.SubKey(m.Option(kit.MDB_TOPIC)), mdb.LIST, arg[2:])
})
}}, }},
mdb.MODIFY: {Name: "modify", Help: "编辑", Hand: func(m *ice.Message, arg ...string) { mdb.MODIFY: {Name: "modify", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
m.Richs(m.Prefix(FAVOR), "", m.Option(kit.MDB_TOPIC), func(key string, value map[string]interface{}) { m.Cmdy(mdb.MODIFY, m.Prefix(FAVOR), kit.SubKey(m.Option(kit.MDB_TOPIC)), mdb.LIST, kit.MDB_ID, m.Option(kit.MDB_ID), arg)
m.Cmdy(mdb.MODIFY, m.Prefix(FAVOR), kit.Keys(kit.MDB_HASH, key), mdb.LIST, kit.MDB_ID, m.Option(kit.MDB_ID), arg)
})
}}, }},
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) { mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(mdb.DELETE, m.Prefix(FAVOR), "", mdb.HASH, kit.MDB_TOPIC, m.Option(kit.MDB_TOPIC)) m.Cmdy(mdb.DELETE, m.Prefix(FAVOR), "", mdb.HASH, kit.MDB_TOPIC, m.Option(kit.MDB_TOPIC))
@ -42,22 +39,25 @@ func init() {
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) { mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
switch arg[0] { switch arg[0] {
case kit.MDB_TOPIC: case kit.MDB_TOPIC:
m.Option(mdb.FIELDS, "topic,count") m.Cmdy(mdb.INPUTS, m.Prefix(FAVOR), "", mdb.HASH, arg)
m.Cmdy(mdb.SELECT, m.Prefix(FAVOR), "", mdb.HASH) default:
m.Cmdy(mdb.INPUTS, m.Prefix(FAVOR), kit.SubKey(m.Option(kit.MDB_TOPIC)), mdb.LIST, arg)
} }
}}, }},
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
if len(arg) == 0 {
m.Option(mdb.FIELDS, "time,count,topic")
m.Cmdy(mdb.SELECT, m.Prefix(FAVOR), "", mdb.HASH)
m.PushAction(mdb.REMOVE)
return
}
if len(arg) > 0 { if len(arg) > 0 {
m.Option(mdb.FIELDS, kit.Select(m.Conf(m.Prefix(FAVOR), kit.META_FIELD), mdb.DETAIL, len(arg) > 1)) m.Option(mdb.FIELDS, kit.Select(m.Conf(m.Prefix(FAVOR), kit.META_FIELD), mdb.DETAIL, len(arg) > 1))
m.Richs(m.Prefix(FAVOR), "", arg[0], func(key string, value map[string]interface{}) { m.Richs(m.Prefix(FAVOR), "", arg[0], func(key string, value map[string]interface{}) {
m.Cmdy(mdb.SELECT, m.Prefix(FAVOR), kit.Keys(kit.MDB_HASH, key), mdb.LIST, kit.MDB_ID, arg[1:]) m.Cmdy(mdb.SELECT, m.Prefix(FAVOR), kit.Keys(kit.MDB_HASH, key), mdb.LIST, kit.MDB_ID, arg[1:])
}) })
return
} }
m.Option(mdb.FIELDS, "time,count,topic")
m.Cmdy(mdb.SELECT, m.Prefix(FAVOR), "", mdb.HASH)
m.PushAction("删除")
}}, }},
"/favor": {Name: "/favor", Help: "收藏", Action: map[string]*ice.Action{ "/favor": {Name: "/favor", Help: "收藏", Action: map[string]*ice.Action{

View File

@ -29,7 +29,7 @@ func init() {
)}, )},
}, },
Commands: map[string]*ice.Command{ Commands: map[string]*ice.Command{
SESS: {Name: "sess hash auto 清理", Help: "会话流", Action: map[string]*ice.Action{ SESS: {Name: "sess hash auto prunes", Help: "会话流", Action: map[string]*ice.Action{
mdb.PRUNES: {Name: "prunes", Help: "清理", Hand: func(m *ice.Message, arg ...string) { mdb.PRUNES: {Name: "prunes", Help: "清理", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(mdb.PRUNES, m.Prefix(SESS), "", mdb.HASH, kit.MDB_STATUS, "logout") m.Cmdy(mdb.PRUNES, m.Prefix(SESS), "", mdb.HASH, kit.MDB_STATUS, "logout")
}}, }},
@ -37,20 +37,7 @@ func init() {
m.Option(mdb.FIELDS, kit.Select(m.Conf(m.Prefix(SESS), kit.META_FIELD), mdb.DETAIL, len(arg) > 0)) m.Option(mdb.FIELDS, kit.Select(m.Conf(m.Prefix(SESS), kit.META_FIELD), mdb.DETAIL, len(arg) > 0))
m.Cmdy(mdb.SELECT, m.Prefix(SESS), "", mdb.HASH, kit.MDB_HASH, arg) m.Cmdy(mdb.SELECT, m.Prefix(SESS), "", mdb.HASH, kit.MDB_HASH, arg)
}}, }},
"/sess": {Name: "/sess", Help: "会话", Action: map[string]*ice.Action{
"logout": {Name: "logout", Help: "退出", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(mdb.MODIFY, m.Prefix(SESS), "", mdb.HASH, kit.MDB_HASH, m.Option(SID), kit.MDB_STATUS, "logout")
}},
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
m.Option(mdb.FIELDS, m.Conf(m.Prefix(SESS), kit.META_FIELD))
if strings.TrimSpace(m.Option(SID)) == "" {
m.Option(SID, m.Cmdx(mdb.INSERT, m.Prefix(SESS), "", mdb.HASH, kit.MDB_STATUS, "login",
aaa.USERNAME, m.Option(aaa.USERNAME), tcp.HOSTNAME, m.Option(tcp.HOSTNAME), PID, m.Option(PID), PWD, m.Option(PWD)))
} else {
m.Cmdy(mdb.MODIFY, m.Prefix(SESS), "", mdb.HASH, kit.MDB_HASH, m.Option(SID), kit.MDB_STATUS, "login")
}
m.Echo(m.Option(SID))
}},
web.LOGIN: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { web.LOGIN: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
if f, _, e := m.R.FormFile(SUB); e == nil { if f, _, e := m.R.FormFile(SUB); e == nil {
defer f.Close() defer f.Close()
@ -60,8 +47,8 @@ func init() {
} }
} }
m.Option(mdb.FIELDS, m.Conf(m.Prefix(SESS), kit.META_FIELD))
if strings.TrimSpace(m.Option(SID)) != "" { if strings.TrimSpace(m.Option(SID)) != "" {
m.Option(mdb.FIELDS, m.Conf(m.Prefix(SESS), kit.META_FIELD))
msg := m.Cmd(mdb.SELECT, m.Prefix(SESS), "", mdb.HASH, kit.MDB_HASH, strings.TrimSpace(m.Option(SID))) msg := m.Cmd(mdb.SELECT, m.Prefix(SESS), "", mdb.HASH, kit.MDB_HASH, strings.TrimSpace(m.Option(SID)))
if m.Option(SID, msg.Append(kit.MDB_HASH)) != "" { if m.Option(SID, msg.Append(kit.MDB_HASH)) != "" {
m.Option(aaa.USERNAME, msg.Append(aaa.USERNAME)) m.Option(aaa.USERNAME, msg.Append(aaa.USERNAME))
@ -70,6 +57,19 @@ func init() {
} }
m.Render(ice.RENDER_RESULT) m.Render(ice.RENDER_RESULT)
}}, }},
"/sess": {Name: "/sess", Help: "会话", Action: map[string]*ice.Action{
"logout": {Name: "logout", Help: "退出", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(mdb.MODIFY, m.Prefix(SESS), "", mdb.HASH, kit.MDB_HASH, m.Option(SID), kit.MDB_STATUS, "logout")
}},
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
if strings.TrimSpace(m.Option(SID)) == "" {
m.Option(SID, m.Cmdx(mdb.INSERT, m.Prefix(SESS), "", mdb.HASH, kit.MDB_STATUS, "login",
aaa.USERNAME, m.Option(aaa.USERNAME), tcp.HOSTNAME, m.Option(tcp.HOSTNAME), PID, m.Option(PID), PWD, m.Option(PWD)))
} else {
m.Cmdy(mdb.MODIFY, m.Prefix(SESS), "", mdb.HASH, kit.MDB_HASH, m.Option(SID), kit.MDB_STATUS, "login")
}
m.Echo(m.Option(SID))
}},
}, },
}, nil) }, nil)
} }

View File

@ -10,8 +10,8 @@ import (
"strings" "strings"
) )
const SYNC = "sync"
const SHELL = "shell" const SHELL = "shell"
const SYNC = "sync"
func init() { func init() {
Index.Merge(&ice.Context{ Index.Merge(&ice.Context{
@ -21,16 +21,16 @@ func init() {
)}, )},
}, },
Commands: map[string]*ice.Command{ Commands: map[string]*ice.Command{
SYNC: {Name: "sync id auto 导出 导入", Help: "同步流", Action: map[string]*ice.Action{ SYNC: {Name: "sync id auto export import", Help: "同步流", Action: map[string]*ice.Action{
mdb.EXPORT: {Name: "export", Help: "导出", Hand: func(m *ice.Message, arg ...string) { mdb.EXPORT: {Name: "export", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(mdb.EXPORT, m.Prefix(SYNC), "", mdb.LIST) m.Cmdy(mdb.EXPORT, m.Prefix(SYNC), "", mdb.LIST)
}}, }},
mdb.IMPORT: {Name: "import", Help: "导入", Hand: func(m *ice.Message, arg ...string) { mdb.IMPORT: {Name: "import", Help: "导入", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(mdb.IMPORT, m.Prefix(SYNC), "", mdb.LIST) m.Cmdy(mdb.IMPORT, m.Prefix(SYNC), "", mdb.LIST)
}}, }},
FAVOR: {Name: "favor topic name", Help: "收藏", Hand: func(m *ice.Message, arg ...string) { FAVOR: {Name: "favor topic type name text", Help: "收藏", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(m.Prefix(FAVOR), mdb.INSERT, kit.MDB_TOPIC, m.Option(kit.MDB_TOPIC), m.Cmdy(m.Prefix(FAVOR), mdb.INSERT, kit.MDB_TOPIC, m.Option(kit.MDB_TOPIC),
kit.MDB_TYPE, SHELL, kit.MDB_NAME, m.Option(kit.MDB_NAME), kit.MDB_TEXT, m.Option(kit.MDB_TEXT)) kit.MDB_TYPE, m.Option(kit.MDB_TYPE), kit.MDB_NAME, m.Option(kit.MDB_NAME), kit.MDB_TEXT, m.Option(kit.MDB_TEXT))
}}, }},
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) { mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
switch arg[0] { switch arg[0] {
@ -41,16 +41,16 @@ func init() {
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
m.Option(mdb.FIELDS, kit.Select(m.Conf(SYNC, kit.META_FIELD), mdb.DETAIL, len(arg) > 0)) m.Option(mdb.FIELDS, kit.Select(m.Conf(SYNC, kit.META_FIELD), mdb.DETAIL, len(arg) > 0))
if len(arg) > 0 { if len(arg) > 0 {
m.Option("cache.field", kit.MDB_ID) m.Option(mdb.CACHE_FILED, kit.MDB_ID)
m.Option("cache.value", arg[0]) m.Option(mdb.CACHE_VALUE, arg[0])
} else { } else {
defer m.PushAction("收藏") defer m.PushAction(FAVOR)
if m.Option("_control", "page"); m.Option("cache.limit") == "" { if m.Option(ice.MSG_CONTROL, "_page"); m.Option(mdb.CACHE_LIMIT) == "" {
m.Option("cache.limit", "10") m.Option(mdb.CACHE_LIMIT, "10")
} }
} }
m.Cmdy(mdb.SELECT, m.Prefix(SYNC), "", mdb.LIST, m.Option("cache.field"), m.Option("cache.value")) m.Cmdy(mdb.SELECT, m.Prefix(SYNC), "", mdb.LIST, m.Option(mdb.CACHE_FILED), m.Option(mdb.CACHE_VALUE))
}}, }},
"/sync": {Name: "/sync", Help: "同步", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { "/sync": {Name: "/sync", Help: "同步", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
switch arg[0] { switch arg[0] {

View File

@ -2,6 +2,7 @@ package zsh
import ( import (
ice "github.com/shylinux/icebergs" ice "github.com/shylinux/icebergs"
"github.com/shylinux/icebergs/base/gdb"
"github.com/shylinux/icebergs/base/web" "github.com/shylinux/icebergs/base/web"
"github.com/shylinux/icebergs/core/code" "github.com/shylinux/icebergs/core/code"
kit "github.com/shylinux/toolkits" kit "github.com/shylinux/toolkits"
@ -14,26 +15,26 @@ const ZSH = "zsh"
var Index = &ice.Context{Name: ZSH, Help: "命令行", var Index = &ice.Context{Name: ZSH, Help: "命令行",
Configs: map[string]*ice.Config{ Configs: map[string]*ice.Config{
ZSH: {Name: ZSH, Help: "命令行", Value: kit.Data( ZSH: {Name: ZSH, Help: "命令行", Value: kit.Data(
"source", "https://sourceforge.net/projects/zsh/files/zsh/5.8/zsh-5.8.tar.xz", "source", "https://nchc.dl.sourceforge.net/project/zsh/zsh/5.8/zsh-5.8.tar.xz",
)}, )},
}, },
Commands: map[string]*ice.Command{ Commands: map[string]*ice.Command{
ZSH: {Name: "zsh port path auto 启动 构建 下载", Help: "命令行", Action: map[string]*ice.Action{ ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Load() }},
"download": {Name: "download", Help: "下载", Hand: func(m *ice.Message, arg ...string) { ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Save() }},
m.Cmdy(code.INSTALL, "download", m.Conf(ZSH, kit.META_SOURCE))
ZSH: {Name: "zsh port path auto start build download", Help: "命令行", Action: map[string]*ice.Action{
web.DOWNLOAD: {Name: "download", Help: "下载", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(code.INSTALL, web.DOWNLOAD, m.Conf(ZSH, kit.META_SOURCE))
}}, }},
"build": {Name: "build", Help: "构建", Hand: func(m *ice.Message, arg ...string) { gdb.BUILD: {Name: "build", Help: "构建", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(code.INSTALL, "build", m.Conf(ZSH, kit.META_SOURCE)) m.Cmdy(code.INSTALL, gdb.BUILD, m.Conf(ZSH, kit.META_SOURCE))
}}, }},
"start": {Name: "start", Help: "启动", Hand: func(m *ice.Message, arg ...string) { gdb.START: {Name: "start", Help: "启动", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(code.INSTALL, "start", m.Conf(ZSH, kit.META_SOURCE), "bin/zsh") m.Cmdy(code.INSTALL, gdb.START, m.Conf(ZSH, kit.META_SOURCE), "bin/zsh")
}}, }},
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
m.Cmdy(code.INSTALL, path.Base(m.Conf(ZSH, kit.META_SOURCE)), arg) m.Cmdy(code.INSTALL, path.Base(m.Conf(ZSH, kit.META_SOURCE)), arg)
}}, }},
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Load() }},
ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Save() }},
}, },
} }

View File

@ -1,8 +1,8 @@
title "zsh" title "zsh"
refer ` refer `
官网 https://www.zsh.org/ 官网 https://www.zsh.org/
源码 https://github.com/zsh-users/zsh/
文档 http://zsh.sourceforge.net/Doc/Release/zsh_toc.html 文档 http://zsh.sourceforge.net/Doc/Release/zsh_toc.html
源码 https://github.com/zsh-users/zsh/
` `
chapter "源码" chapter "源码"
@ -11,11 +11,14 @@ field zsh web.code.inner args `[ usr/install/zsh-5.8/ Src/main.c 91 ]`
section "构建" section "构建"
spark shell ` spark shell `
wget https://sourceforge.net/projects/zsh/files/zsh/5.8/zsh-5.8.tar.xz yum install -y wget make gcc
tar xvf zsh-5.8.tar.gz && cd zsh-5.8 yum install -y ncurses-devel.x86_64
wget https://nchc.dl.sourceforge.net/project/zsh/zsh/5.8/zsh-5.8.tar.xz
tar xvf zsh-5.8.tar.xz && cd zsh-5.8
./configure --prefix=$PWD/_install ./configure --prefix=$PWD/_install
make -j4 && make install make -j8 && make install
` `
section "启动" section "启动"