diff --git a/base/nfs/dir.go b/base/nfs/dir.go index 7d0ce4c7..06dfb4f0 100644 --- a/base/nfs/dir.go +++ b/base/nfs/dir.go @@ -128,11 +128,12 @@ func _dir_list(m *ice.Message, root string, dir string, level int, deep bool, di } const ( - PWD = "./" - SRC = "src/" - BIN = "bin/" - USR = "usr/" - REQUIRE = "/require/" + PWD = "./" + SRC = "src/" + BIN = "bin/" + USR = "usr/" + USR_INSTALL = "usr/install/" + REQUIRE = "/require/" TYPE_ALL = "all" TYPE_BIN = "bin" diff --git a/base/nfs/pack.go b/base/nfs/pack.go index 21e19638..42c67900 100644 --- a/base/nfs/pack.go +++ b/base/nfs/pack.go @@ -25,13 +25,16 @@ func init() { }}, mdb.REMOVE: {Hand: func(m *ice.Message, arg ...string) { PackFile.Remove(path.Clean(m.Option(PATH))) }}, mdb.SEARCH: {Hand: func(m *ice.Message, arg ...string) { - if arg[0] == mdb.FOREACH { - OptionFiles(m, PackFile) - m.Cmd(DIR, SRC, PATH, kit.Dict(DIR_REG, kit.Format(`.*%s.*\.shy`, arg[1]), DIR_DEEP, ice.TRUE, DIR_TYPE, CAT), func(value ice.Maps) { - m.PushSearch(mdb.TYPE, SHY, mdb.NAME, value[PATH]) + if arg[0] == mdb.FOREACH && arg[1] != "" { + m.Cmd(DIR, SRC, PATH, kit.Dict(DIR_REG, arg[1], DIR_DEEP, ice.TRUE, DIR_TYPE, CAT), func(value ice.Maps) { + if strings.HasPrefix(value[PATH], ice.SRC_TEMPLATE) { + return + } + m.PushSearch(mdb.TYPE, kit.Ext(value[PATH]), mdb.NAME, path.Base(value[PATH]), mdb.TEXT, value[PATH]) }) - m.Cmd(DIR, USR, PATH, kit.Dict(DIR_REG, kit.Format(`.*%s.*\.shy`, arg[1]), DIR_DEEP, ice.TRUE, DIR_TYPE, CAT), func(value ice.Maps) { - m.PushSearch(mdb.TYPE, SHY, mdb.NAME, value[PATH]) + OptionFiles(m, PackFile) + m.Cmd(DIR, USR, PATH, kit.Dict(DIR_REG, arg[1], DIR_DEEP, ice.TRUE, DIR_TYPE, CAT), func(value ice.Maps) { + m.PushSearch(mdb.TYPE, kit.Ext(value[PATH]), mdb.NAME, path.Base(value[PATH]), mdb.TEXT, value[PATH]) }) } }}, diff --git a/base/nfs/tar.go b/base/nfs/tar.go index a560e9ad..c105eb7f 100644 --- a/base/nfs/tar.go +++ b/base/nfs/tar.go @@ -17,7 +17,7 @@ func _tar_list(m *ice.Message, p string, cb func(*tar.Header, io.Reader, int)) { Open(m, p, func(r io.Reader) { for { switch kit.Ext(p) { - case "tgz": + case TGZ: p = kit.Keys(kit.TrimExt(p, kit.Ext(p)), TAR, GZ) case GZ: if f, e := gzip.NewReader(r); m.Warn(e, ice.ErrNotValid, p) { @@ -49,7 +49,9 @@ func _tar_list(m *ice.Message, p string, cb func(*tar.Header, io.Reader, int)) { } const ( - GZ = "gz" + XZ = "xz" + GZ = "gz" + TGZ = "tgz" ) const TAR = "tar" diff --git a/misc/node/node.go b/misc/node/node.go index 85c39ccf..b1eab48f 100644 --- a/misc/node/node.go +++ b/misc/node/node.go @@ -1,30 +1,34 @@ package node import ( + "path" + "shylinux.com/x/ice" "shylinux.com/x/icebergs/base/cli" "shylinux.com/x/icebergs/base/mdb" + "shylinux.com/x/icebergs/base/nfs" + kit "shylinux.com/x/toolkits" ) -const ( - NPM = "npm" - NODE = "node" -) +const NODE = "node" type node struct { ice.Code regexp string `data:"js"` - linux string `data:"https://mirrors.tencent.com/nodejs-release/v16.15.1/node-v16.15.1-linux-x64.tar.xz"` darwin string `data:"https://mirrors.tencent.com/nodejs-release/v16.15.1/node-v16.15.1-darwin-x64.tar.gz"` - list string `name:"list path auto xterm listScript order install" help:"node"` + linux string `data:"https://mirrors.tencent.com/nodejs-release/v16.15.1/node-v16.15.1-linux-x64.tar.xz"` + list string `name:"list path auto listScript xterm order install" help:"node"` } func (s node) Init(m *ice.Message) { - cli.IsAlpine(m.Message, NPM) cli.IsAlpine(m.Message, NODE, "nodejs") } +func (s node) Install(m *ice.Message, arg ...string) { + s.Code.Install(m, arg...) + s.Code.System(m, nfs.USR_INSTALL, nfs.TAR, "xf", path.Base(s.Code.Link(m))) +} func (s node) List(m *ice.Message, arg ...string) { - s.Code.Source(m, "", arg...) + s.Code.Source(m, path.Join(nfs.USR_INSTALL, kit.TrimExt(s.Code.Link(m), "tar.xz")), arg...) } func (s node) Xterm(m *ice.Message, arg ...string) { s.Code.Xterm(m, []string{mdb.TYPE, NODE}, arg...) diff --git a/misc/node/node.shy b/misc/node/node.shy index fa631e4e..47fb0d3a 100644 --- a/misc/node/node.shy +++ b/misc/node/node.shy @@ -1,3 +1,4 @@ +chapter "node" section "node" refer ` 官网 https://nodejs.org/ diff --git a/misc/node/npm.go b/misc/node/npm.go index 00be5689..034d2e13 100644 --- a/misc/node/npm.go +++ b/misc/node/npm.go @@ -2,14 +2,20 @@ package node import ( "shylinux.com/x/ice" + "shylinux.com/x/icebergs/base/cli" "shylinux.com/x/icebergs/base/nfs" ) +const NPM = "npm" + type npm struct { ice.Code - list string `name:"list auto"` + list string `name:"list path auto" help:"npm"` } +func (s npm) Init(m *ice.Message) { + cli.IsAlpine(m.Message, NPM) +} func (s npm) List(m *ice.Message) { m.Cmdy(nfs.DIR, ice.USR_MODULES) } diff --git a/misc/node/npm.shy b/misc/node/npm.shy index 02f7bacf..3eb6a644 100644 --- a/misc/node/npm.shy +++ b/misc/node/npm.shy @@ -2,3 +2,4 @@ section "npm" shell ` ./bin/npm install -g cnpm --registry=https://registry.npm.taobao.org ` +field web.code.node.npm diff --git a/misc/node/vue.go b/misc/node/vue.go index 7485dd53..549ecb4c 100644 --- a/misc/node/vue.go +++ b/misc/node/vue.go @@ -1,14 +1,17 @@ package node -import "shylinux.com/x/ice" +import ( + "shylinux.com/x/ice" + "shylinux.com/x/icebergs/base/nfs" +) type vue struct { ice.Code - list string `name:"list auto" help:"服务框架"` + list string `name:"list path auto" help:"vue"` } func (s vue) List(m *ice.Message) { - + m.Cmdy(nfs.DIR, nfs.USR) } func init() { ice.CodeCtxCmd(vue{}) }