1
0
forked from x/icebergs

add rewrite

This commit is contained in:
shaoying 2020-08-29 14:03:33 +08:00
parent 84e5eb0e13
commit b3d67dacfc
15 changed files with 277 additions and 85 deletions

View File

@ -81,7 +81,7 @@ func init() {
}},
"stop": {Name: "stop", Help: "停止", Hand: func(m *ice.Message, arg ...string) {
m.Richs(DAEMON, "", m.Option(kit.MDB_HASH), func(key string, value map[string]interface{}) {
m.Cmdy(SYSTEM, "kill", value[kit.MDB_PID])
m.Cmdy(SYSTEM, "kill", "-9", value[kit.MDB_PID])
if strings.Count(m.Cmdx(SYSTEM, "ps", value[kit.MDB_PID]), "\n") == 1 {
value[kit.MDB_STATUS] = StatusClose
}

View File

@ -103,7 +103,8 @@ func _hash_select(m *ice.Message, prefix, key, field, value string) {
if field != "" && value != val[field] {
return
}
m.Push("detail", val)
m.Push(key, val, fields)
// m.Push("detail", val)
})
}
func _hash_search(m *ice.Message, prefix, key, field, value string) {

View File

@ -170,6 +170,15 @@ func _file_list(m *ice.Message, root string, name string, level int, deep bool,
}
}
func _file_show(m *ice.Message, name string) {
if n := m.Cmd("file_rewrite", name).Append("to"); n != "" {
m.Logs("rewrite", "from", name, "to", n)
name = n
}
if strings.HasPrefix(name, "http") {
m.Cmdy("web.spide", "dev", "raw", "GET", name)
return
}
if f, e := os.OpenFile(path.Join(m.Option(DIR_ROOT), name), os.O_RDONLY, 0640); m.Assert(e) {
defer f.Close()
@ -302,8 +311,19 @@ var Index = &ice.Context{Name: "nfs", Help: "存储模块",
"json", "true",
),
)},
"file_rewrite": {Name: "file_rewrite", Help: "重定向", Value: kit.Data(kit.MDB_SHORT, "from")},
},
Commands: map[string]*ice.Command{
"file_rewrite": {Name: "file_rewrite", Help: "重定向", Action: map[string]*ice.Action{
mdb.CREATE: {Name: "create from to", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(mdb.INSERT, m.Prefix("file_rewrite"), "", mdb.HASH, arg)
}},
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
m.Option(mdb.FIELDS, "time,hash,from,to")
m.Cmdy(mdb.SELECT, m.Prefix("file_rewrite"), "", mdb.HASH, "from", arg)
}},
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
m.Cmd(mdb.SEARCH, mdb.CREATE, FILE)
m.Cmd(mdb.SEARCH, mdb.CREATE, DIR)

View File

@ -75,7 +75,7 @@ func _spide_create(m *ice.Message, name, address string, arg ...string) {
"name", name, "url", address, "method", "POST",
"protocol", uri.Scheme, "hostname", uri.Host,
"path", dir, "file", file, "query", uri.RawQuery,
"timeout", "100s", "logheaders", false,
"timeout", "600s", "logheaders", false,
),
))
}
@ -141,10 +141,21 @@ func init() {
Index.Merge(&ice.Context{
Configs: map[string]*ice.Config{
SPIDE: {Name: "spide", Help: "蜘蛛侠", Value: kit.Data(kit.MDB_SHORT, "client.name")},
"spide_rewrite": {Name: "spide_rewrite", Help: "重定向", Value: kit.Data(kit.MDB_SHORT, "from")},
},
Commands: map[string]*ice.Command{
"spide_rewrite": {Name: "spide name=auto [action:select=msg|raw|cache] [method:select=POST|GET] url [format:select=json|form|part|data|file] arg... auto", Help: "蜘蛛侠", Action: map[string]*ice.Action{
mdb.CREATE: {Name: "create from to", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(mdb.INSERT, m.Prefix("spide_rewrite"), "", mdb.HASH, arg)
}},
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
m.Option(mdb.FIELDS, "time,hash,from,to")
m.Cmdy(mdb.SELECT, m.Prefix("spide_rewrite"), "", mdb.HASH, "from", arg)
}},
SPIDE: {Name: "spide name=auto [action:select=msg|raw|cache] [method:select=POST|GET] url [format:select=json|form|part|data|file] arg... auto", Help: "蜘蛛侠", Action: map[string]*ice.Action{
mdb.CREATE: {Name: "create name address", Help: "", Hand: func(m *ice.Message, arg ...string) {
mdb.CREATE: {Name: "create name address", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
_spide_create(m, arg[0], arg[1])
}},
mdb.SEARCH: {Name: "search type name text arg...", Help: "搜索", Hand: func(m *ice.Message, arg ...string) {
@ -192,6 +203,10 @@ func init() {
// 请求地址
uri, arg := arg[0], arg[1:]
if n := m.Cmd("spide_rewrite", uri).Append("to"); n != "" && n != uri {
m.Logs("rewrite", "from", uri, "to", n)
uri = n
}
// 渲染引擎
head := map[string]string{}
@ -294,7 +309,7 @@ func init() {
// 发送请求
res, e := web.Client.Do(req)
if m.Warn(e != nil, "%s", e) {
if m.Warn(e != nil, ice.ErrNotFound, e) {
return
}

View File

@ -78,6 +78,10 @@ func init() {
_inner_list(m, nfs.DIR, "", kit.Select("", arg, 0))
return
}
if strings.HasPrefix("http", arg[0]) {
m.Cmdy(web.SPIDE, "dev", "raw", "GET", arg[0]+arg[1])
return
}
_inner_list(m, _inner_ext(arg[1]), arg[1], arg[0])
}},
VIMER: {Name: "vimer path=usr/demo file=hi.sh line=1 刷新:button=auto 保存:button 运行:button 项目:button", Help: "编辑器", Meta: kit.Dict(

View File

@ -52,6 +52,11 @@ func init() {
p := path.Join(m.Conf(INSTALL, kit.META_PATH), name)
m.Cmd(cli.SYSTEM, "touch", p)
// 代理
to := m.Cmd("web.spide_rewrite", arg[0]).Append("to")
m.Debug("to: %s", to)
arg[0] = kit.Select(arg[0], to)
// 下载
m.Option(cli.CMD_DIR, m.Conf(INSTALL, kit.META_PATH))
if strings.HasPrefix(arg[0], "ftp") {

View File

@ -50,6 +50,12 @@ func (m *Message) log(level string, str string, arg ...interface{}) *Message {
prefix, suffix = "", ""
}
switch level {
case LOG_INFO, "send", "recv":
if len(str) > 200 {
str = str[:200]
}
}
// 输出日志
log.Info(fmt.Sprintf("%02d %9s %s%s %s%s", m.code, fmt.Sprintf("%4s->%-4s", m.source.Name, m.target.Name),
prefix, level, str, suffix))

View File

@ -40,7 +40,7 @@ const (
var Index = &ice.Context{Name: GIT, Help: "代码库",
Configs: map[string]*ice.Config{
GIT: {Name: GIT, Help: "代码库", Value: kit.Data(
"source", "https://github.com/git/git.git", "config", kit.Dict(
"source", "https://mirrors.edge.kernel.org/pub/software/scm/git/git-1.8.3.1.tar.gz", "config", kit.Dict(
"alias", kit.Dict("s", "status", "b", "branch"),
"color", kit.Dict("ui", "true"),
"push", kit.Dict("default", "simple"),
@ -73,6 +73,30 @@ var Index = &ice.Context{Name: GIT, Help: "代码库",
_repos_insert(m, value["name"], value["path"])
})
}},
GIT: {Name: "git port=auto path=auto auto 启动:button 构建:button 下载:button", Help: "编辑器", Action: map[string]*ice.Action{
"download": {Name: "download", Help: "下载", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(code.INSTALL, "download", m.Conf(GIT, kit.META_SOURCE))
}},
"build": {Name: "build", Help: "构建", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(code.INSTALL, "build", m.Conf(GIT, kit.META_SOURCE))
}},
"start": {Name: "start", Help: "启动", Hand: func(m *ice.Message, arg ...string) {
m.Optionv("prepare", func(p string) []string {
m.Option(cli.CMD_DIR, p)
kit.Fetch(m.Confv(GIT, "meta.config"), func(conf string, value interface{}) {
kit.Fetch(value, func(key string, value string) {
m.Cmd(cli.SYSTEM, "bin/git", "config", "--global", conf+"."+key, value)
})
})
return []string{}
})
m.Cmdy(code.INSTALL, "start", m.Conf(GIT, kit.META_SOURCE), "bin/git")
}},
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
m.Cmdy(code.INSTALL, path.Base(m.Conf(GIT, kit.META_SOURCE)), arg)
}},
REPOS: {Name: "repos [name=auto [path [remote [branch]]]] auto", Help: "代码仓库", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
if len(arg) > 1 {
if _, e := os.Stat(path.Join(arg[1], ".git")); e != nil && os.IsNotExist(e) {
@ -386,27 +410,6 @@ var Index = &ice.Context{Name: GIT, Help: "代码库",
})
m.Sort("name")
}},
"_install": {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
m.Option("cmd_dir", m.Conf("install", "meta.path"))
m.Cmd(cli.SYSTEM, "git", "clone", m.Conf("git", "meta.source"))
m.Option("cmd_dir", path.Join(m.Conf("install", "meta.path"), "git"))
m.Cmd(cli.SYSTEM, "make", "configure")
m.Cmd(cli.SYSTEM, "./configure", "--prefix="+kit.Path("usr/local"))
m.Cmd(cli.SYSTEM, "make", "-j4")
m.Cmd(cli.SYSTEM, "make", "install")
}},
code.PREPARE: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
kit.Fetch(m.Confv("git", "meta.config"), func(conf string, value interface{}) {
kit.Fetch(value, func(key string, value string) {
m.Cmd(cli.SYSTEM, "git", "config", "--global", conf+"."+key, value)
})
})
}},
code.PROJECT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
}},
},
}

View File

@ -1,9 +1,26 @@
title "git"
refer "官网" `
官网 https://git-scm.com/
文档 https://git-scm.com/docs
源码 https://github.com/git/git
文档 https://git-scm.com/docs
`
premenu
field "安装" web.code.git.git
field "源码" web.code.inner args `[ usr/install/git-1.8.3.1/ shell.c 145 ]`
chapter "安装"
section "编译安装"
spark shell `
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-1.8.3.1.tar.gz
tar xvf git-1.8.3.1.tar.gz && cd git-1.8.3.1
./configure --prefix=$PWD/install
make -j4 && make install
`
section "使用体验"
spark shell `
cd ./install
./bin/git
`
chapter "应用"

View File

@ -58,14 +58,22 @@ var Index = &ice.Context{Name: TMUX, Help: "工作台",
)},
},
Commands: map[string]*ice.Command{
TMUX: {Name: "tmux 启动:button 编译:button 下载:button", Help: "终端", Action: map[string]*ice.Action{
TMUX: {Name: "git port=auto path=auto auto 启动:button 构建:button 下载:button", Help: "命令行", Action: map[string]*ice.Action{
"download": {Name: "download", Help: "下载", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(code.INSTALL, "download", m.Conf(TMUX, kit.META_SOURCE))
}},
"build": {Name: "build", Help: "构建", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(code.INSTALL, "build", m.Conf(TMUX, kit.META_SOURCE))
}},
"start": {Name: "start", Help: "启动", Hand: func(m *ice.Message, arg ...string) {
m.Optionv("prepare", func(p string) []string {
m.Option(cli.CMD_DIR, p)
return []string{}
})
m.Cmdy(code.INSTALL, "start", m.Conf(TMUX, kit.META_SOURCE), "bin/tmux")
}},
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
m.Cmdy(code.INSTALL, path.Base(m.Conf(TMUX, kit.META_SOURCE)), arg)
}},
TEXT: {Name: "text 保存:button 清空:button text:textarea", Help: "文本", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {

View File

@ -10,13 +10,34 @@ field tmux web.code.tmux.tmux
field tmux web.code.inner args `[ usr/install/tmux-3.1b cmd-bind-key.c ]`
chapter "安装"
section "编译安装"
spark shell `
wget https://github.com/tmux/tmux/releases/download/3.1b/tmux-3.1b.tar.gz
tar xvf tmux-3.1b.tar.gz && cd tmux-3.1b
./configure --prefix=$PWD/install
make -j8 && make install
`
section "使用体验"
spark shell `
cd ./install
./bin/tmux
`
chapter "应用"
field text web.code.tmux.text
field buffer web.code.tmux.buffer args 0
field session web.code.tmux.session
chapter "项目"
field icebergs web.code.inner args `[ usr/icebergs misc/tmux/tmux.go ]`
return
section "libevent"
spark shell `
wget https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz
tar xvf libevent-2.1.12-stable.tar.gz && cd libevent-2.1.12-stable
./configure
make -j8
make install
./configure --prefix=$PWD/install
make -j8 && make install
`
section "ncurses"
spark shell `
@ -26,16 +47,4 @@ tar xvf ncurses.tar.gz && cd ncurses-6.2
make -j8
make install
`
section "tmux"
spark shell `
wget https://github.com/tmux/tmux/releases/download/3.1b/tmux-3.1b.tar.gz
tar xvf tmux-3.1b.tar.gz && cd tmux-3.1b
./configure
make -j8
make install
`
chapter "应用"
field text web.code.tmux.text
field buffer web.code.tmux.buffer args 0
field session web.code.tmux.session

View File

@ -19,7 +19,7 @@ import (
const VIM = "vim"
const VIMRC = "vimrc"
var Index = &ice.Context{Name: "vim", Help: "编辑器",
var Index = &ice.Context{Name: VIM, Help: "编辑器",
Commands: map[string]*ice.Command{
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
m.Conf(web.FAVOR, "meta.render.vimrc", m.AddCmd(&ice.Command{Name: "render favor id", Help: "渲染引擎", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
@ -46,32 +46,35 @@ var Index = &ice.Context{Name: "vim", Help: "编辑器",
m.Cmd(mdb.RENDER, mdb.CREATE, VIMRC, VIM, c.Cap(ice.CTX_FOLLOW))
m.Cmd(mdb.PLUGIN, mdb.CREATE, VIM, VIM, c.Cap(ice.CTX_FOLLOW))
m.Cmd(mdb.RENDER, mdb.CREATE, VIM, VIM, c.Cap(ice.CTX_FOLLOW))
m.Cmd("web.spide_rewrite", "create", "from", "ftp://ftp.vim.org/pub/vim/unix/vim-8.1.tar.bz2", "to", "http://localhost:9020/publish/vim-8.1.tar.bz2")
m.Cmd("web.spide_rewrite", "create", "from", "https://raw.githubusercontent.com/shylinux/contexts/master/etc/conf/vimrc", "to", "http://localhost:9020/publish/vimrc")
m.Cmd("web.spide_rewrite", "create", "from", "https://raw.githubusercontent.com/shylinux/contexts/master/etc/conf/plug.vim", "to", "http://localhost:9020/publish/plug.vim")
m.Cmd("nfs.file_rewrite", "create", "from", "etc/conf/plug.vim", "to", "https://raw.githubusercontent.com/shylinux/contexts/master/etc/conf/plug.vim")
}},
VIM: {Name: "vim 配置:button 编译:button 下载:button", Help: "vim", Action: map[string]*ice.Action{
VIM: {Name: "vim port=auto path=auto auto 启动:button 构建:button 下载:button", Help: "编辑器", Action: map[string]*ice.Action{
"download": {Name: "download", Help: "下载", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(code.INSTALL, "download", m.Conf(VIM, "meta.source"))
m.Cmdy(code.INSTALL, "download", m.Conf(VIM, kit.META_SOURCE))
}},
"compile": {Name: "compile", Help: "编译", Hand: func(m *ice.Message, arg ...string) {
name := path.Base(strings.TrimSuffix(m.Conf(VIM, "meta.source"), ".tar.bz2"))
name = strings.ReplaceAll(strings.ReplaceAll(name, "-", ""), ".", "")
m.Option(cli.CMD_DIR, path.Join(m.Conf(code.INSTALL, kit.META_PATH), name))
m.Cmdy(cli.SYSTEM, "./configure", "--prefix="+kit.Path(m.Conf(VIM, "meta.target")),
"--enable-multibyte=yes", m.Confv(VIM, "meta.config"))
m.Cmdy(cli.SYSTEM, "make", "-j4")
m.Cmdy(cli.SYSTEM, "make", "install")
"build": {Name: "build", Help: "构建", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(code.INSTALL, "build",
strings.Replace(strings.Replace(kit.TrimExt(m.Conf(VIM, kit.META_SOURCE)), ".", "", -1), "-", "", -1))
}},
"prepare": {Name: "prepare", Help: "配置", Hand: func(m *ice.Message, arg ...string) {
// 语法脚本
for _, s := range []string{"go.vim", "shy.vim", "javascript.vim"} {
m.Cmd(nfs.LINK, path.Join(os.Getenv("HOME"), ".vim/syntax/"+s), "etc/conf/"+s)
}
// 启动脚本
m.Cmd(nfs.LINK, path.Join(os.Getenv("HOME"), ".vim/autoload/plug.vim"), "etc/conf/plug.vim")
m.Cmd(nfs.LINK, path.Join(os.Getenv("HOME"), ".vimrc"), "etc/conf/vimrc")
"start": {Name: "start", Help: "启动", Hand: func(m *ice.Message, arg ...string) {
m.Optionv("prepare", func(p string) []string {
list := kit.Simple(m.Confv(VIM, "meta.start"))
for i := 0; i < len(list); i += 2 {
m.Cmd(web.SPIDE, "dev", web.SPIDE_SAVE, path.Join(os.Getenv("HOME"), list[i]),
web.SPIDE_GET, m.Conf(VIM, "meta.remote")+list[i+1])
}
return []string{"-T", "screen", "-c", "PlugInstall", "-c", "exit", "-c", "exit"}
})
m.Cmdy(code.INSTALL, "start",
strings.Replace(strings.Replace(kit.TrimExt(m.Conf(VIM, kit.META_SOURCE)), ".", "", -1), "-", "", -1),
"bin/vim")
// 安装插件
m.Echo("\n")
m.Echo("vim -c PlugInstall\n")
m.Echo("vim -c GoInstallBinaries\n")
}},
@ -80,8 +83,14 @@ var Index = &ice.Context{Name: "vim", Help: "编辑器",
m.Echo(m.Conf(VIM, "meta.plug"))
}},
mdb.RENDER: {Hand: func(m *ice.Message, arg ...string) {
if strings.HasPrefix(arg[2], "http") {
m.Cmdy(web.SPIDE, "dev", "raw", "GET", arg[2]+arg[1])
return
}
m.Cmdy(nfs.CAT, path.Join(arg[2], arg[1]))
}},
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
m.Cmdy(code.INSTALL, path.Base(m.Conf(VIM, kit.META_SOURCE)), arg)
}},
"/sync": {Name: "/sync", Help: "同步", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
@ -148,11 +157,20 @@ var Index = &ice.Context{Name: "vim", Help: "编辑器",
Configs: map[string]*ice.Config{
VIM: {Name: "vim", Help: "编辑器", Value: kit.Data(
"source", "ftp://ftp.vim.org/pub/vim/unix/vim-8.1.tar.bz2",
"target", "usr/local", "config", []interface{}{
"remote", "https://raw.githubusercontent.com/shylinux/contexts/master/etc/conf/",
"build", []interface{}{
"--enable-multibyte=yes",
"--enable-pythoninterp=yes",
"--enable-luainterp=yes",
"--enable-cscope=yes",
},
"start", []interface{}{
".vimrc", "vimrc",
".vim/autoload/plug.vim", "plug.vim",
".vim/syntax/javascript.vim", "javascript.vim",
".vim/syntax/shy.vim", "shy.vim",
".vim/syntax/go.vim", "go.vim",
},
"history", "vim.history",

View File

@ -10,22 +10,21 @@ chapter "安装"
section "编译安装"
spark shell `
wget ftp://ftp.vim.org/pub/vim/unix/vim-8.1.tar.bz2
tar xvf vim-81.tar.bz2 && cd vim81
./configure --prefix=/usr/local --enable-multibyte=yes
make -j4
make install
tar xvf vim-8.1.tar.bz2 && cd vim81
./configure --prefix=$PWD/install --enable-multibyte=yes
make -j4 && make install
`
section "使用体验"
spark shell `
vim
cd ./install
./bin/vim
`
section "项目"
field "安装" web.code.vim.vim
field "源码" web.code.inner args `[ usr/install/vim81/ src/main.c 110 ]`
field "脚本" web.code.inner args `[ usr/local/share/vim/vim81/ filetype.vim ]`
field "文档" web.code.inner args `[ usr/local/share/vim/vim81/doc/ help.txt ]`
field "脚本" web.code.inner args `[ usr/install/vim81/install/share/vim/vim81/ filetype.vim ]`
field "文档" web.code.inner args `[ usr/install/vim81/install/share/vim/vim81/doc/ help.txt ]`
chapter "使用"
@ -34,13 +33,13 @@ chapter "配置"
refer `
启动脚本 https://github.com/shylinux/contexts/blob/master/etc/conf/vimrc
`
field "启动脚本" web.code.inner args `[ etc/conf/ vimrc ]`
field "启动脚本" web.code.inner args `[ https://raw.githubusercontent.com/shylinux/contexts/master/etc/conf/ vimrc ]`
chapter "插件"
refer `
插件管理器 https://github.com/junegunn/vim-plug
插件管理器 https://github.com/junegunn/vim-plug/plug.vim
`
field "插件管理器" web.code.inner args `[ etc/conf/ plug.vim ]`
field "插件管理器" web.code.inner args `[ https://raw.githubusercontent.com/shylinux/contexts/master/etc/conf/ plug.vim ]`
section "状态栏"
refer `
@ -48,9 +47,5 @@ refer `
`
chapter "应用"
section "收藏夹"
field favor web.favor args `[ vim.history ]`
section "输入法"
# field input web.code.input.find `[ shwq ]`

View File

@ -15,10 +15,19 @@ import (
"unicode"
)
var Index = &ice.Context{Name: "zsh", Help: "命令行",
Caches: map[string]*ice.Cache{},
const (
BASH = "bash"
ZSH = "zsh"
)
var Index = &ice.Context{Name: ZSH, Help: "命令行",
Configs: map[string]*ice.Config{
"zsh": {Name: "zsh", Help: "命令行", Value: kit.Data(
BASH: {Name: BASH, Help: "命令行", Value: kit.Data(
"source", "http://mirrors.aliyun.com/gnu/bash/bash-4.2.53.tar.gz",
)},
ZSH: {Name: ZSH, Help: "命令行", Value: kit.Data(
"source", "https://sourceforge.net/projects/zsh/files/zsh/5.8/zsh-5.8.tar.xz",
"proxy", "tmux", "history", "zsh.history", "script", []interface{}{
".vim/syntax/sh.vim", "etc/conf/sh.vim",
".bashrc", "etc/conf/bashrc",
@ -27,7 +36,44 @@ var Index = &ice.Context{Name: "zsh", Help: "命令行",
)},
},
Commands: map[string]*ice.Command{
BASH: {Name: "bash port=auto path=auto auto 启动:button 构建:button 下载:button", Help: "命令行", Action: map[string]*ice.Action{
"download": {Name: "download", Help: "下载", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(code.INSTALL, "download", m.Conf(BASH, kit.META_SOURCE))
}},
"build": {Name: "build", Help: "构建", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(code.INSTALL, "build", m.Conf(BASH, kit.META_SOURCE))
}},
"start": {Name: "start", Help: "启动", Hand: func(m *ice.Message, arg ...string) {
m.Optionv("prepare", func(p string) []string {
m.Option(cli.CMD_DIR, p)
return []string{}
})
m.Cmdy(code.INSTALL, "start", m.Conf(BASH, kit.META_SOURCE), "bin/bash")
}},
}, 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)
}},
ZSH: {Name: "zsh port=auto path=auto auto 启动:button 构建:button 下载:button", Help: "命令行", Action: map[string]*ice.Action{
"download": {Name: "download", Help: "下载", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(code.INSTALL, "download", m.Conf(ZSH, kit.META_SOURCE))
}},
"build": {Name: "build", Help: "构建", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(code.INSTALL, "build", m.Conf(ZSH, kit.META_SOURCE))
}},
"start": {Name: "start", Help: "启动", Hand: func(m *ice.Message, arg ...string) {
m.Optionv("prepare", func(p string) []string {
m.Option(cli.CMD_DIR, p)
return []string{}
})
m.Cmdy(code.INSTALL, "start", m.Conf(ZSH, kit.META_SOURCE), "bin/zsh")
}},
}, 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)
}},
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
m.Cmd("web.spide_rewrite", "create", "from", "https://sourceforge.net/projects/zsh/files/zsh/5.8/zsh-5.8.tar.xz", "to", "http://localhost:9020/publish/zsh-5.8.tar.gz")
m.Conf(web.FAVOR, "meta.render.shell", m.AddCmd(&ice.Command{Name: "render type name text", Help: "渲染引擎", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
value, _ := m.Optionv(kit.MDB_VALUE).(map[string]interface{})
m.Option("cmd_dir", kit.Value(value, "extra.pwd"))

View File

@ -1,6 +1,51 @@
title "bash"
refer `
官网 https://www.gnu.org/software/bash/
源码 http://ftp.gnu.org/gnu/bash/
文档 https://www.gnu.org/software/bash/manual/bash.html
`
field "安装" web.code.zsh.bash
field "源码" web.code.inner args `[ usr/install/bash-4.2.53/ input.c 625 ]`
chapter "安装"
section "编译安装"
spark shell `
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
./configure --prefix=$PWD/install
make -j4 && make install
`
section "使用体验"
spark shell `
cd ./install
./bin/bash
`
title "zsh"
refer `
官网 https://www.zsh.org/
源码 https://github.com/zsh-users/zsh/
文档 http://zsh.sourceforge.net/Doc/Release/zsh_toc.html
`
field "安装" web.code.zsh.zsh
field "源码" web.code.inner args `[ usr/install/zsh-5.8/ Src/main.c 91 ]`
chapter "安装"
section "编译安装"
spark shell `
wget https://sourceforge.net/projects/zsh/files/zsh/5.8/zsh-5.8.tar.xz
tar xvf zsh-5.8.tar.gz && cd zsh-5.8
./configure --prefix=$PWD/install
make -j4 && make install
`
section "使用体验"
spark shell `
cd ./install
./bin/zsh
`