forked from x/icebergs
add rewrite
This commit is contained in:
parent
84e5eb0e13
commit
b3d67dacfc
@ -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
|
||||
}
|
||||
|
@ -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) {
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
}
|
||||
|
||||
|
@ -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(
|
||||
|
@ -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") {
|
||||
|
6
logs.go
6
logs.go
@ -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))
|
||||
|
@ -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) {
|
||||
}},
|
||||
},
|
||||
}
|
||||
|
||||
|
@ -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 "应用"
|
||||
|
@ -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) {
|
||||
|
@ -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
|
||||
|
@ -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",
|
||||
|
||||
|
@ -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 ]`
|
||||
|
@ -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"))
|
||||
|
@ -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
|
||||
`
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user