1
0
forked from x/icebergs
This commit is contained in:
IT 老营长 @云轩领航-创始人 2023-07-13 15:01:40 +08:00
parent 63fb21f3ca
commit b131e6c61a
8 changed files with 35 additions and 19 deletions

View File

@ -5,6 +5,7 @@ import (
"path" "path"
"regexp" "regexp"
"strings" "strings"
"time"
ice "shylinux.com/x/icebergs" ice "shylinux.com/x/icebergs"
"shylinux.com/x/icebergs/base/aaa" "shylinux.com/x/icebergs/base/aaa"
@ -22,7 +23,7 @@ func _dir_hash(m *ice.Message, p string) (h string) {
kit.If(len(list) > 0, func() { h = kit.Hashs(list) }) kit.If(len(list) > 0, func() { h = kit.Hashs(list) })
return "" return ""
} }
func _dir_list(m *ice.Message, root string, dir string, level int, deep bool, dir_type string, dir_reg *regexp.Regexp, fields []string) *ice.Message { func _dir_list(m *ice.Message, root string, dir string, level int, deep bool, dir_type string, dir_reg *regexp.Regexp, fields []string) (total int64, last time.Time) {
ls, _ := ReadDir(m, path.Join(root, dir)) ls, _ := ReadDir(m, path.Join(root, dir))
if len(ls) == 0 { if len(ls) == 0 {
if s, e := StatFile(m, path.Join(root, dir)); e == nil && !s.IsDir() { if s, e := StatFile(m, path.Join(root, dir)); e == nil && !s.IsDir() {
@ -49,6 +50,9 @@ func _dir_list(m *ice.Message, root string, dir string, level int, deep bool, di
default: default:
m.ErrorNotImplement(cb) m.ErrorNotImplement(cb)
} }
if s.ModTime().After(last) {
last = s.ModTime()
}
for _, field := range fields { for _, field := range fields {
switch field { switch field {
case mdb.TIME: case mdb.TIME:
@ -74,6 +78,7 @@ func _dir_list(m *ice.Message, root string, dir string, level int, deep bool, di
m.Push(field, _dir_size(m, p)) m.Push(field, _dir_size(m, p))
} else { } else {
m.Push(field, kit.FmtSize(s.Size())) m.Push(field, kit.FmtSize(s.Size()))
total += s.Size()
} }
case LINE: case LINE:
if isDir { if isDir {
@ -121,10 +126,13 @@ func _dir_list(m *ice.Message, root string, dir string, level int, deep bool, di
case "pluged": case "pluged":
continue continue
} }
_dir_list(m, root, pp, level+1, deep, dir_type, dir_reg, fields) _total, _last := _dir_list(m, root, pp, level+1, deep, dir_type, dir_reg, fields)
if total += _total; _last.After(last) {
last = _last
} }
} }
return m }
return
} }
const ( const (
@ -171,7 +179,9 @@ func init() {
}}, mdb.UPLOAD: {}, }}, mdb.UPLOAD: {},
"finder": {Help: "本机", Hand: func(m *ice.Message, arg ...string) { m.Cmd("cli.system", "opens", "Finder.app") }}, "finder": {Help: "本机", Hand: func(m *ice.Message, arg ...string) { m.Cmd("cli.system", "opens", "Finder.app") }},
TRASH: {Hand: func(m *ice.Message, arg ...string) { m.Cmd(TRASH, mdb.CREATE, m.Option(PATH)) }}, TRASH: {Hand: func(m *ice.Message, arg ...string) { m.Cmd(TRASH, mdb.CREATE, m.Option(PATH)) }},
mdb.SHOW: {Hand: func(m *ice.Message, arg ...string) { Show(m.ProcessInner(), m.Option(PATH)) }}, mdb.SHOW: {Hand: func(m *ice.Message, arg ...string) {
Show(m.ProcessInner(), path.Join(m.Option(DIR_ROOT), m.Option(PATH)))
}},
}, Hand: func(m *ice.Message, arg ...string) { }, Hand: func(m *ice.Message, arg ...string) {
root, dir := kit.Select(PWD, m.Option(DIR_ROOT)), kit.Select(PWD, arg, 0) root, dir := kit.Select(PWD, m.Option(DIR_ROOT)), kit.Select(PWD, arg, 0)
kit.If(strings.HasPrefix(dir, PS), func() { root = "" }) kit.If(strings.HasPrefix(dir, PS), func() { root = "" })
@ -180,7 +190,8 @@ func init() {
} }
m.Logs(FIND, DIR_ROOT, root, PATH, dir, DIR_TYPE, m.Option(DIR_TYPE)) m.Logs(FIND, DIR_ROOT, root, PATH, dir, DIR_TYPE, m.Option(DIR_TYPE))
fields := kit.Split(kit.Select(kit.Select(DIR_DEF_FIELDS, m.OptionFields()), kit.Join(kit.Slice(arg, 1)))) fields := kit.Split(kit.Select(kit.Select(DIR_DEF_FIELDS, m.OptionFields()), kit.Join(kit.Slice(arg, 1))))
_dir_list(m, root, dir, 0, m.Option(DIR_DEEP) == ice.TRUE, kit.Select(TYPE_BOTH, m.Option(DIR_TYPE)), regexp.MustCompile(m.Option(DIR_REG)), fields).StatusTimeCount() size, last := _dir_list(m, root, dir, 0, m.Option(DIR_DEEP) == ice.TRUE, kit.Select(TYPE_BOTH, m.Option(DIR_TYPE)), regexp.MustCompile(m.Option(DIR_REG)), fields)
m.Status(mdb.TIME, last, mdb.COUNT, kit.Split(m.FormatSize())[0], SIZE, kit.FmtSize(size), kit.MDB_COST, m.FormatCost())
}}, }},
}) })
} }

View File

@ -30,14 +30,15 @@ func (l Listener) Close() error {
func _server_listen(m *ice.Message, arg ...string) { func _server_listen(m *ice.Message, arg ...string) {
l, e := net.Listen(TCP, m.Option(HOST)+nfs.DF+m.Option(PORT)) l, e := net.Listen(TCP, m.Option(HOST)+nfs.DF+m.Option(PORT))
if m.Warn(e) {
return
}
l = &Listener{Listener: l, m: m, h: mdb.HashCreate(m, arg, kit.Dict(mdb.TARGET, l), STATUS, kit.Select(ERROR, OPEN, e == nil), ERROR, kit.Format(e)), s: &Stat{}} l = &Listener{Listener: l, m: m, h: mdb.HashCreate(m, arg, kit.Dict(mdb.TARGET, l), STATUS, kit.Select(ERROR, OPEN, e == nil), ERROR, kit.Format(e)), s: &Stat{}}
defer kit.If(e == nil, func() { l.Close() }) defer kit.If(e == nil, func() { l.Close() })
switch cb := m.OptionCB("").(type) { switch cb := m.OptionCB("").(type) {
case func(net.Listener): case func(net.Listener):
m.Assert(e)
cb(l) cb(l)
case func(net.Conn): case func(net.Conn):
m.Assert(e)
for { for {
if c, e := l.Accept(); !m.Warn(e) { if c, e := l.Accept(); !m.Warn(e) {
cb(c) cb(c)

View File

@ -1,6 +1,7 @@
package web package web
import ( import (
"fmt"
"net" "net"
"net/http" "net/http"
"path" "path"
@ -57,11 +58,16 @@ func (f *Frame) Start(m *ice.Message, arg ...string) {
case func(http.Handler): case func(http.Handler):
cb(f) cb(f)
default: default:
m.Cmd(tcp.SERVER, tcp.LISTEN, mdb.TYPE, HTTP, mdb.NAME, logs.FileLine(1), m.OptionSimple(tcp.HOST, tcp.PORT), func(l net.Listener) { m.Cmdy(tcp.SERVER, tcp.LISTEN, mdb.TYPE, HTTP, mdb.NAME, logs.FileLine(1), m.OptionSimple(tcp.HOST, tcp.PORT), func(l net.Listener) {
defer mdb.HashCreateDeferRemove(m, m.OptionSimple(mdb.NAME, tcp.PROTO), arg, cli.STATUS, tcp.START)() defer mdb.HashCreateDeferRemove(m, m.OptionSimple(mdb.NAME, tcp.PROTO), arg, cli.STATUS, tcp.START)()
gdb.Event(m, SERVE_START, arg) gdb.Event(m, SERVE_START, arg)
m.Warn(f.Server.Serve(l)) m.Warn(f.Server.Serve(l))
}) })
if m.IsErr() {
fmt.Println()
fmt.Println(m.Result())
m.Cmd(ice.QUIT)
}
} }
} }
func (f *Frame) Close(m *ice.Message, arg ...string) {} func (f *Frame) Close(m *ice.Message, arg ...string) {}

View File

@ -118,6 +118,7 @@ const ( // DIR
USR_VOLCANOS = "usr/volcanos/" USR_VOLCANOS = "usr/volcanos/"
USR_LEARNING = "usr/learning/" USR_LEARNING = "usr/learning/"
USR_PORTAL = "usr/portal/" USR_PORTAL = "usr/portal/"
USR_ICONS = "usr/icons/"
USR_LOCAL = "usr/local/" USR_LOCAL = "usr/local/"
USR_LOCAL_GO = "usr/local/go/" USR_LOCAL_GO = "usr/local/go/"

View File

@ -75,7 +75,7 @@ func _binpack_all(m *ice.Message) {
} }
for _, k := range kit.SortedKey(list) { for _, k := range kit.SortedKey(list) {
v := kit.Select(k, list[k]) v := kit.Select(k, list[k])
m.Cmd(nfs.DIR, nfs.PWD, nfs.PATH, kit.Dict(nfs.DIR_ROOT, v, nfs.DIR_REG, kit.ExtReg(SH, SHY, PY, JS, CSS, HTML))).Table(func(value ice.Maps) { m.Cmd(nfs.DIR, nfs.PWD, nfs.PATH, kit.Dict(nfs.DIR_ROOT, v, nfs.DIR_REG, kit.ExtReg(kit.Split(mdb.Config(m, "extreg"))...))).Table(func(value ice.Maps) {
if ice.Info.Make.Remote != "https://shylinux.com/x/contexts" && kit.HasPrefix(k, ice.USR_ICEBERGS) { if ice.Info.Make.Remote != "https://shylinux.com/x/contexts" && kit.HasPrefix(k, ice.USR_ICEBERGS) {
return return
} }
@ -90,7 +90,7 @@ func _binpack_all(m *ice.Message) {
} }
}) })
m.Option(nfs.DIR_REG, kit.ExtReg(nfs.SHY)) m.Option(nfs.DIR_REG, kit.ExtReg(nfs.SHY))
if ice.Info.Make.Remote == "shylinux.com/x/contexts" { if ice.Info.Make.Remote == "https://shylinux.com/x/contexts" {
_binpack_dir(m, w, "usr/release/") _binpack_dir(m, w, "usr/release/")
} }
} }
@ -103,7 +103,7 @@ func init() {
BINPACK: {Name: "binpack path auto create insert", Help: "打包", Actions: ice.MergeActions(ice.Actions{ BINPACK: {Name: "binpack path auto create insert", Help: "打包", Actions: ice.MergeActions(ice.Actions{
mdb.CREATE: {Hand: func(m *ice.Message, arg ...string) { _binpack_all(m) }}, mdb.CREATE: {Hand: func(m *ice.Message, arg ...string) { _binpack_all(m) }},
mdb.INSERT: {Name: "insert path*", Hand: func(m *ice.Message, arg ...string) { mdb.HashCreate(m, m.OptionSimple(nfs.PATH)) }}, mdb.INSERT: {Name: "insert path*", Hand: func(m *ice.Message, arg ...string) { mdb.HashCreate(m, m.OptionSimple(nfs.PATH)) }},
}, mdb.HashAction(mdb.SHORT, nfs.PATH, mdb.FIELD, "time,path"))}, }, mdb.HashAction(mdb.SHORT, nfs.PATH, mdb.FIELD, "time,path", "extreg", "sh,shy,py,js,css,html,png,jpg"))},
}) })
} }
func GoCache(m *ice.Message) string { func GoCache(m *ice.Message) string {

View File

@ -484,7 +484,7 @@ func init() {
} }
}}, }},
STASH: {Hand: func(m *ice.Message, arg ...string) { _repos_cmd(m, kit.Select(m.Option(REPOS), arg, 0), STASH) }}, STASH: {Hand: func(m *ice.Message, arg ...string) { _repos_cmd(m, kit.Select(m.Option(REPOS), arg, 0), STASH) }},
COMMIT: {Name: "commit actions=add,opt,fix comment*=some", Help: "提交", Hand: func(m *ice.Message, arg ...string) { COMMIT: {Name: "commit actions=add,fix,opt message*=some", Help: "提交", Hand: func(m *ice.Message, arg ...string) {
if work, err := _repos_open(m, m.Option(REPOS)).Worktree(); !m.Warn(err) { if work, err := _repos_open(m, m.Option(REPOS)).Worktree(); !m.Warn(err) {
opt := &git.CommitOptions{All: true} opt := &git.CommitOptions{All: true}
if cfg, err := config.LoadConfig(config.GlobalScope); err == nil { if cfg, err := config.LoadConfig(config.GlobalScope); err == nil {
@ -496,7 +496,7 @@ func init() {
} }
} }
} }
_, err := work.Commit(m.Option("actions")+lex.SP+m.Option("comment"), opt) _, err := work.Commit(m.Option("actions")+lex.SP+m.Option("message"), opt)
m.Warn(err) m.Warn(err)
} }
}}, }},

View File

@ -38,7 +38,7 @@ func init() {
}) })
}) })
}}, }},
}, ctx.ConfAction("skip", kit.DictList("go-git", "go-qrcode", "websocket"))), Hand: func(m *ice.Message, arg ...string) { }, ctx.ConfAction("skip", kit.DictList("go-git", "go-qrcode", "websocket", "webview", "word-dict"))), Hand: func(m *ice.Message, arg ...string) {
if len(arg) > 0 { if len(arg) > 0 {
ReposList(m).Table(func(value ice.Maps) { ReposList(m).Table(func(value ice.Maps) {
kit.If(value[REPOS] == arg[0], func() { m.Cmdy("_sum", value[nfs.PATH], arg[1:]) }) kit.If(value[REPOS] == arg[0], func() { m.Cmdy("_sum", value[nfs.PATH], arg[1:]) })

View File

@ -220,12 +220,9 @@ func (m *Message) resource(file string) string {
return file return file
} }
p := strings.TrimPrefix(kit.FileLines(3), Info.Make.Path) p := strings.TrimPrefix(kit.FileLines(3), Info.Make.Path)
p = strings.TrimPrefix(p, kit.Path("")+PS) if p = strings.TrimPrefix(p, kit.Path("")+PS); strings.Contains(p, "/pkg/mod/") {
if strings.Contains(p, "/pkg/mod/") {
p = strings.Split(p, "/pkg/mod/")[1] p = strings.Split(p, "/pkg/mod/")[1]
} }
if file != "" { kit.If(file != "", func() { p = path.Join(path.Dir(p), file) })
p = path.Join(path.Dir(p), file)
}
return "/require/" + p return "/require/" + p
} }