1
0
forked from x/icebergs

opt repos

This commit is contained in:
IT 老营长 @云轩领航-创始人 2023-12-20 23:59:46 +08:00
parent eed06ba25c
commit 68dc8bc671
11 changed files with 90 additions and 65 deletions

View File

@ -62,9 +62,9 @@ func SessAuth(m *ice.Message, value ice.Any, arg ...string) *ice.Message {
kit.If(language == "", func() { language = ice.Info.Lang }) kit.If(language == "", func() { language = ice.Info.Lang })
language = strings.ReplaceAll(strings.ToLower(kit.Select("", kit.Split(language, " ."), 0)), "_", "-") language = strings.ReplaceAll(strings.ToLower(kit.Select("", kit.Split(language, " ."), 0)), "_", "-")
return m.Auth( return m.Auth(
USERNICK, m.Option(ice.MSG_USERNICK, kit.Format(kit.Value(value, USERNICK))),
USERNAME, m.Option(ice.MSG_USERNAME, kit.Format(kit.Value(value, USERNAME))),
USERROLE, m.Option(ice.MSG_USERROLE, kit.Format(kit.Value(value, USERROLE))), USERROLE, m.Option(ice.MSG_USERROLE, kit.Format(kit.Value(value, USERROLE))),
USERNAME, m.Option(ice.MSG_USERNAME, kit.Format(kit.Value(value, USERNAME))),
USERNICK, m.Option(ice.MSG_USERNICK, kit.Format(kit.Value(value, USERNICK))),
LANGUAGE, m.Option(ice.MSG_LANGUAGE, language), arg, LANGUAGE, m.Option(ice.MSG_LANGUAGE, language), arg,
logs.FileLineMeta(kit.Select(logs.FileLine(-1), m.Option("aaa.checker"))), logs.FileLineMeta(kit.Select(logs.FileLine(-1), m.Option("aaa.checker"))),
) )

View File

@ -42,14 +42,7 @@ func _config_only(v ice.Any, arg ...string) bool {
for k, v := range v { for k, v := range v {
if v, ok := v.(ice.Map); ok && len(v) == 0 { if v, ok := v.(ice.Map); ok && len(v) == 0 {
continue continue
} else { } else if kit.IndexOf(arg, k) == -1 {
for k := range v {
if kit.IsIn(k, mdb.IMPORTANT) && len(v) > 1 {
return false
}
}
}
if kit.IndexOf(arg, k) == -1 {
return false return false
} }
} }
@ -60,7 +53,7 @@ func _config_only(v ice.Any, arg ...string) bool {
func _config_save(m *ice.Message, name string, arg ...string) { func _config_save(m *ice.Message, name string, arg ...string) {
data, msg := ice.Map{}, m.Spawn(m.Source()) data, msg := ice.Map{}, m.Spawn(m.Source())
for _, k := range arg { for _, k := range arg {
if v := mdb.Confv(msg, k); _config_only(v, mdb.META) { if v := mdb.Confv(msg, k); _config_only(v, mdb.META) && _config_only(kit.Value(v, mdb.META), mdb.IMPORTANT, mdb.SHORT, mdb.FIELD, mdb.FIELDS, mdb.ACTION, mdb.SORT, mdb.TOOLS) {
continue continue
} else { } else {
data[k] = v data[k] = v

View File

@ -12,6 +12,12 @@ import (
kit "shylinux.com/x/toolkits" kit "shylinux.com/x/toolkits"
) )
func _host_publish(m *ice.Message) string {
if p := mdb.Config(m, DOMAIN); p != "" {
return p
}
return m.Cmdv(HOST, mdb.Config(m, ice.MAIN), aaa.IP)
}
func _host_list(m *ice.Message, name string) { func _host_list(m *ice.Message, name string) {
if ifs, e := net.Interfaces(); m.Assert(e) { if ifs, e := net.Interfaces(); m.Assert(e) {
for _, v := range ifs { for _, v := range ifs {
@ -33,6 +39,7 @@ func _host_list(m *ice.Message, name string) {
m.Push(mdb.INDEX, -1).Push(mdb.NAME, LOCALHOST).Push(aaa.IP, "127.0.0.1").Push("mask", "255.0.0.0").Push("hard", "") m.Push(mdb.INDEX, -1).Push(mdb.NAME, LOCALHOST).Push(aaa.IP, "127.0.0.1").Push("mask", "255.0.0.0").Push("hard", "")
} }
m.SortInt(mdb.INDEX) m.SortInt(mdb.INDEX)
m.StatusTimeCount(mdb.ConfigSimple(m, ice.MAIN, DOMAIN))
} }
const ( const (
@ -41,12 +48,13 @@ const (
ISLOCAL = "islocal" ISLOCAL = "islocal"
PUBLISH = "publish" PUBLISH = "publish"
GATEWAY = "gateway" GATEWAY = "gateway"
DOMAIN = "domain"
) )
const HOST = "host" const HOST = "host"
func init() { func init() {
Index.MergeCommands(ice.Commands{ Index.MergeCommands(ice.Commands{
HOST: {Name: "host name auto", Help: "主机", Actions: ice.MergeActions(ice.Actions{ HOST: {Name: "host name auto domain", Help: "主机", Actions: ice.MergeActions(ice.Actions{
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) {
m.Cmd("", func(value ice.Maps) { m.Cmd("", aaa.WHITE, LOCALHOST, value[aaa.IP]) }) m.Cmd("", func(value ice.Maps) { m.Cmd("", aaa.WHITE, LOCALHOST, value[aaa.IP]) })
}}, }},
@ -71,15 +79,19 @@ func init() {
}}, }},
PUBLISH: {Hand: func(m *ice.Message, arg ...string) { PUBLISH: {Hand: func(m *ice.Message, arg ...string) {
if strings.Contains(arg[0], LOCALHOST) { if strings.Contains(arg[0], LOCALHOST) {
arg[0] = strings.Replace(arg[0], LOCALHOST, m.Cmdv(HOST, mdb.Config(m, "publish"), aaa.IP), 1) arg[0] = strings.Replace(arg[0], LOCALHOST, _host_publish(m), 1)
} else if strings.Contains(arg[0], "127.0.0.1") { } else if strings.Contains(arg[0], "127.0.0.1") {
arg[0] = strings.Replace(arg[0], "127.0.0.1", m.Cmdv(HOST, mdb.Config(m, "publish"), aaa.IP), 1) arg[0] = strings.Replace(arg[0], "127.0.0.1", _host_publish(m), 1)
} }
m.Echo(arg[0]) m.Echo(arg[0])
}}, }},
GATEWAY: {Hand: func(m *ice.Message, arg ...string) { GATEWAY: {Hand: func(m *ice.Message, arg ...string) {
m.Push(aaa.IP, kit.Keys(kit.Slice(strings.Split(m.Cmdv(HOST, aaa.IP), nfs.PT), 0, 3), "1")) m.Push(aaa.IP, kit.Keys(kit.Slice(strings.Split(m.Cmdv(HOST, aaa.IP), nfs.PT), 0, 3), "1"))
}}, }},
DOMAIN: {Name: "domain ip", Hand: func(m *ice.Message, arg ...string) {
kit.If(m.Option(aaa.IP), func(p string) { mdb.Config(m, DOMAIN, p) })
m.Echo(mdb.Config(m, DOMAIN))
}},
}, mdb.HashAction(mdb.SHORT, mdb.TEXT), mdb.ClearOnExitHashAction()), Hand: func(m *ice.Message, arg ...string) { }, mdb.HashAction(mdb.SHORT, mdb.TEXT), mdb.ClearOnExitHashAction()), Hand: func(m *ice.Message, arg ...string) {
_host_list(m, kit.Select("", arg, 0)) _host_list(m, kit.Select("", arg, 0))
}}, }},

View File

@ -29,8 +29,7 @@ func _space_qrcode(m *ice.Message, dev string) {
func _space_dial(m *ice.Message, dev, name string, arg ...string) { func _space_dial(m *ice.Message, dev, name string, arg ...string) {
u := kit.ParseURL(kit.MergeURL2(strings.Replace(m.Cmdv(SPIDE, dev, CLIENT_ORIGIN), HTTP, "ws", 1), PP(SPACE), mdb.TYPE, ice.Info.NodeType, mdb.NAME, name, u := kit.ParseURL(kit.MergeURL2(strings.Replace(m.Cmdv(SPIDE, dev, CLIENT_ORIGIN), HTTP, "ws", 1), PP(SPACE), mdb.TYPE, ice.Info.NodeType, mdb.NAME, name,
nfs.MODULE, ice.Info.Make.Module, nfs.VERSION, ice.Info.Make.Versions(), arg)) nfs.MODULE, ice.Info.Make.Module, nfs.VERSION, ice.Info.Make.Versions(), arg))
args := kit.SimpleKV("type,name,host,port", u.Scheme, dev, u.Hostname(), args := kit.SimpleKV("type,name,host,port", u.Scheme, dev, u.Hostname(), kit.Select(kit.Select("443", "80", u.Scheme == "ws"), u.Port()))
kit.Select(kit.Select("443", "80", u.Scheme == "ws"), u.Port()))
gdb.Go(m, func() { gdb.Go(m, func() {
once := sync.Once{} once := sync.Once{}
redial := kit.Dict(mdb.Configv(m, REDIAL)) redial := kit.Dict(mdb.Configv(m, REDIAL))
@ -294,6 +293,11 @@ func init() {
nfs.PS: {Hand: func(m *ice.Message, arg ...string) { _space_fork(m) }}, nfs.PS: {Hand: func(m *ice.Message, arg ...string) { _space_fork(m) }},
}, mdb.HashAction(mdb.LIMIT, 1000, mdb.LEAST, 500, mdb.SHORT, mdb.NAME, mdb.FIELD, "time,type,name,text,module,version,ip,usernick,username,userrole", ctx.ACTION, OPEN, REDIAL, kit.Dict("a", 3000, "b", 1000, "c", 1000)), mdb.ClearOnExitHashAction()), Hand: func(m *ice.Message, arg ...string) { }, mdb.HashAction(mdb.LIMIT, 1000, mdb.LEAST, 500, mdb.SHORT, mdb.NAME, mdb.FIELD, "time,type,name,text,module,version,ip,usernick,username,userrole", ctx.ACTION, OPEN, REDIAL, kit.Dict("a", 3000, "b", 1000, "c", 1000)), mdb.ClearOnExitHashAction()), Hand: func(m *ice.Message, arg ...string) {
if len(arg) < 2 { if len(arg) < 2 {
if len(arg) == 1 && strings.Contains(arg[0], nfs.PT) {
ls := kit.Split(arg[0], nfs.PT)
m.Cmdy(SPACE, ls[0], SPACE, kit.Keys(ls[1:]))
return
}
defer m.StatusTimeCount(kit.Dict(ice.MAIN, mdb.Config(m, ice.MAIN))) defer m.StatusTimeCount(kit.Dict(ice.MAIN, mdb.Config(m, ice.MAIN)))
m.Option(ice.MSG_USERWEB, tcp.PublishLocalhost(m, m.Option(ice.MSG_USERWEB))) m.Option(ice.MSG_USERWEB, tcp.PublishLocalhost(m, m.Option(ice.MSG_USERWEB)))
kit.If(len(arg) > 0 && arg[0] != "", func() { m.OptionFields(ice.MSG_DETAIL) }) kit.If(len(arg) > 0 && arg[0] != "", func() { m.OptionFields(ice.MSG_DETAIL) })
@ -311,7 +315,7 @@ func init() {
} }
m.PushButton(kit.Select(OPEN, LOGIN, value[mdb.TYPE] == LOGIN), mdb.REMOVE) m.PushButton(kit.Select(OPEN, LOGIN, value[mdb.TYPE] == LOGIN), mdb.REMOVE)
}) })
m.Sort("type,name,text", kit.Simple(WEIXIN, PORTAL, WORKER, SERVER)) m.Sort("", kit.Simple(WEIXIN, PORTAL, WORKER, SERVER))
} else { } else {
_space_send(m, arg[0], kit.Simple(kit.Split(arg[1]), arg[2:])...) _space_send(m, arg[0], kit.Simple(kit.Split(arg[1]), arg[2:])...)
} }

View File

@ -301,6 +301,7 @@ const ( // CTX
CTX_CLOSE = "close" CTX_CLOSE = "close"
CTX_INIT = "_init" CTX_INIT = "_init"
CTX_OPEN = "_open"
CTX_EXIT = "_exit" CTX_EXIT = "_exit"
CTX_ICONS = "_icons" CTX_ICONS = "_icons"
CTX_TRANS = "_trans" CTX_TRANS = "_trans"

View File

@ -7,6 +7,7 @@ import (
"shylinux.com/x/icebergs/base/aaa" "shylinux.com/x/icebergs/base/aaa"
"shylinux.com/x/icebergs/base/cli" "shylinux.com/x/icebergs/base/cli"
"shylinux.com/x/icebergs/base/gdb" "shylinux.com/x/icebergs/base/gdb"
"shylinux.com/x/icebergs/base/log"
"shylinux.com/x/icebergs/base/mdb" "shylinux.com/x/icebergs/base/mdb"
"shylinux.com/x/icebergs/base/nfs" "shylinux.com/x/icebergs/base/nfs"
"shylinux.com/x/icebergs/base/tcp" "shylinux.com/x/icebergs/base/tcp"
@ -21,7 +22,8 @@ func init() {
GRANT: {Name: "grant space auto", Help: "授权", Actions: ice.MergeActions(ice.Actions{ GRANT: {Name: "grant space auto", Help: "授权", Actions: ice.MergeActions(ice.Actions{
web.SPACE_LOGIN: {Hand: func(m *ice.Message, arg ...string) { web.SPACE_LOGIN: {Hand: func(m *ice.Message, arg ...string) {
m.GoSleep30ms(func() { m.GoSleep30ms(func() {
link := tcp.PublishLocalhost(m, m.MergePodCmd("", "", web.SPACE, m.Option(mdb.NAME))) p := m.Cmdx(web.SPACE, web.DOMAIN)
link := tcp.PublishLocalhost(m, m.Options(ice.MSG_USERWEB, p).MergePodCmd("", "", web.SPACE, kit.Keys(web.ParseLink(m, p)[ice.POD], m.Option(mdb.NAME)), log.DEBUG, m.Option(ice.MSG_DEBUG)))
m.Cmd(web.SPACE, m.Option(mdb.NAME), cli.PWD, m.Option(mdb.NAME), link, m.Cmdx(cli.QRCODE, link)) m.Cmd(web.SPACE, m.Option(mdb.NAME), cli.PWD, m.Option(mdb.NAME), link, m.Cmdx(cli.QRCODE, link))
}) })
}}, }},
@ -41,9 +43,16 @@ func init() {
} else { } else {
kit.If(m.Option(ice.MSG_SESSID) == "", func() { web.RenderCookie(m, aaa.SessCreate(m, m.Option(ice.MSG_USERNAME))) }) kit.If(m.Option(ice.MSG_SESSID) == "", func() { web.RenderCookie(m, aaa.SessCreate(m, m.Option(ice.MSG_USERNAME))) })
m.Option(ice.MSG_USERUA, msg.Append(ice.MSG_USERUA)) m.Option(ice.MSG_USERUA, msg.Append(ice.MSG_USERUA))
m.Cmd(web.SPACE, m.Option(web.SPACE), ice.MSG_SESSID, aaa.SessCreate(m, m.Option(ice.MSG_USERNAME))) if ls := kit.Split(m.Option(web.SPACE), nfs.PT); len(ls) > 1 {
space := kit.Keys(kit.Slice(ls, 0, -1))
m.Option(ice.MSG_SESSID, m.Cmdx(web.SPACE, space, aaa.SESS, mdb.CREATE, m.Option(ice.MSG_USERNAME)))
m.ProcessLocation(web.MergeURL2(m, msg.Append(mdb.TEXT), ice.POD, space))
} else {
aaa.SessCreate(m, m.Option(ice.MSG_USERNAME))
m.ProcessLocation(web.MergeURL2(m, msg.Append(mdb.TEXT))) m.ProcessLocation(web.MergeURL2(m, msg.Append(mdb.TEXT)))
} }
m.Cmd(web.SPACE, m.Option(web.SPACE), ice.MSG_SESSID, m.Option(ice.MSG_SESSID))
}
gdb.Event(m, web.SPACE_GRANT, m.OptionSimple(web.SPACE)) gdb.Event(m, web.SPACE_GRANT, m.OptionSimple(web.SPACE))
} }
}}, }},

View File

@ -2,10 +2,8 @@ package macos
import ( import (
"path" "path"
"strings"
ice "shylinux.com/x/icebergs" ice "shylinux.com/x/icebergs"
"shylinux.com/x/icebergs/base/cli"
"shylinux.com/x/icebergs/base/ctx" "shylinux.com/x/icebergs/base/ctx"
"shylinux.com/x/icebergs/base/mdb" "shylinux.com/x/icebergs/base/mdb"
"shylinux.com/x/icebergs/base/nfs" "shylinux.com/x/icebergs/base/nfs"
@ -19,21 +17,7 @@ const APPLICATIONS = "applications"
func init() { func init() {
Index.MergeCommands(ice.Commands{ Index.MergeCommands(ice.Commands{
APPLICATIONS: {Help: "应用", Actions: ice.MergeActions(ice.Actions{ APPLICATIONS: {Help: "应用", Actions: ice.MergeActions(ice.Actions{
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { FinderAppend(m, APPLICATIONS, m.PrefixKey()) }},
FinderAppend(m, APPLICATIONS, m.PrefixKey())
defer Notify(m, "Infomation.png", cli.RUNTIME, "系统启动成功", ctx.INDEX, cli.RUNTIME)
m.Travel(func(p *ice.Context, c *ice.Context, key string, cmd *ice.Command) {
kit.If(cmd.Icon, func() {
if !kit.HasPrefix(cmd.Icon, nfs.PS, web.HTTP) {
nfs.Exists(m, ice.USR_ICONS+cmd.Icon, func(p string) { cmd.Icon = p })
nfs.Exists(m, path.Join(path.Dir(strings.TrimPrefix(ctx.GetCmdFile(m, m.PrefixKey()), kit.Path(""))), cmd.Icon), func(p string) {
cmd.Icon = p
})
}
AppInstall(m, cmd.Icon, m.PrefixKey())
})
})
}},
code.INSTALL: {Hand: func(m *ice.Message, arg ...string) { AppInstall(m, arg[0], arg[1]) }}, code.INSTALL: {Hand: func(m *ice.Message, arg ...string) { AppInstall(m, arg[0], arg[1]) }},
mdb.CREATE: {Name: "create space index args name icon"}, mdb.CREATE: {Name: "create space index args name icon"},
}, PodCmdAction(), CmdHashAction("space,index,args"), mdb.ClearOnExitHashAction())}, }, PodCmdAction(), CmdHashAction("space,index,args"), mdb.ClearOnExitHashAction())},
@ -43,7 +27,7 @@ func install(m *ice.Message, cmd, icon, index string, arg ...string) {
if icon == "" { if icon == "" {
return return
} }
nfs.Exists(m, ice.USR_ICONS+icon, func(p string) { icon = p }) kit.If(!kit.HasPrefix(icon, nfs.PS, web.HTTP) && !nfs.Exists(m, icon), func() { icon = ice.USR_ICONS + icon })
name := kit.TrimExt(path.Base(icon), nfs.PNG, nfs.JPG, nfs.JPEG) name := kit.TrimExt(path.Base(icon), nfs.PNG, nfs.JPG, nfs.JPEG)
m.Cmd(Prefix(cmd), mdb.CREATE, mdb.NAME, name, mdb.ICON, icon, ctx.INDEX, index, arg) m.Cmd(Prefix(cmd), mdb.CREATE, mdb.NAME, name, mdb.ICON, icon, ctx.INDEX, index, arg)
} }

View File

@ -1,9 +1,15 @@
package macos package macos
import ( import (
"path"
"strings"
ice "shylinux.com/x/icebergs" ice "shylinux.com/x/icebergs"
"shylinux.com/x/icebergs/base/aaa" "shylinux.com/x/icebergs/base/aaa"
"shylinux.com/x/icebergs/base/cli"
"shylinux.com/x/icebergs/base/ctx"
"shylinux.com/x/icebergs/base/mdb" "shylinux.com/x/icebergs/base/mdb"
"shylinux.com/x/icebergs/base/nfs"
"shylinux.com/x/icebergs/base/web" "shylinux.com/x/icebergs/base/web"
kit "shylinux.com/x/toolkits" kit "shylinux.com/x/toolkits"
) )
@ -12,15 +18,32 @@ const DESKTOP = "desktop"
func init() { func init() {
Index.MergeCommands(ice.Commands{ Index.MergeCommands(ice.Commands{
DESKTOP: {Help: "应用桌面", Actions: ice.MergeActions(ice.Actions{ ice.CTX_OPEN: {Hand: func(m *ice.Message, arg ...string) {
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) {
if m.Cmd(DESKTOP).Length() == 0 { if m.Cmd(DESKTOP).Length() == 0 {
DeskAppend(m, "Books.png", web.WIKI_WORD) DeskAppend(m, "Books.png", web.WIKI_WORD)
DeskAppend(m, "Photos.png", web.WIKI_FEEL) DeskAppend(m, "Photos.png", web.WIKI_FEEL)
DeskAppend(m, "Grapher.png", web.WIKI_DRAW) DeskAppend(m, "Grapher.png", web.WIKI_DRAW)
DeskAppend(m, "Calendar.png", web.TEAM_PLAN) DeskAppend(m, "Calendar.png", web.TEAM_PLAN)
} }
if m.Cmd(DOCK).Length() == 0 {
DockAppend(m, "Finder.png", Prefix(FINDER))
DockAppend(m, "Safari.png", web.CHAT_IFRAME)
DockAppend(m, "Terminal.png", web.CODE_XTERM)
DockAppend(m, "go.png", web.CODE_COMPILE)
DockAppend(m, "git.png", web.CODE_GIT_STATUS)
DockAppend(m, "vimer.png", web.CODE_VIMER)
}
m.Travel(func(p *ice.Context, c *ice.Context, key string, cmd *ice.Command) {
kit.If(cmd.Icon, func() {
if !kit.HasPrefix(cmd.Icon, nfs.PS, web.HTTP) {
nfs.Exists(m, path.Join(path.Dir(strings.TrimPrefix(ctx.GetCmdFile(m, m.PrefixKey()), kit.Path(""))), cmd.Icon), func(p string) { cmd.Icon = p })
}
AppInstall(m, cmd.Icon, m.PrefixKey())
})
})
Notify(m, "Infomation.png", cli.RUNTIME, "系统启动成功", ctx.INDEX, cli.RUNTIME)
}}, }},
DESKTOP: {Help: "应用桌面", Actions: ice.MergeActions(ice.Actions{
web.DREAM_TABLES: {Hand: func(m *ice.Message, arg ...string) { web.DREAM_TABLES: {Hand: func(m *ice.Message, arg ...string) {
kit.Switch(m.Option(mdb.TYPE), kit.Simple(web.WORKER, web.SERVER), func() { m.PushButton(kit.Dict(m.CommandKey(), "桌面")) }) kit.Switch(m.Option(mdb.TYPE), kit.Simple(web.WORKER, web.SERVER), func() { m.PushButton(kit.Dict(m.CommandKey(), "桌面")) })
}}, }},

View File

@ -4,25 +4,13 @@ import (
ice "shylinux.com/x/icebergs" ice "shylinux.com/x/icebergs"
"shylinux.com/x/icebergs/base/aaa" "shylinux.com/x/icebergs/base/aaa"
"shylinux.com/x/icebergs/base/mdb" "shylinux.com/x/icebergs/base/mdb"
"shylinux.com/x/icebergs/base/web"
) )
const DOCK = "dock" const DOCK = "dock"
func init() { func init() {
Index.MergeCommands(ice.Commands{ Index.MergeCommands(ice.Commands{
DOCK: {Help: "工具栏", Actions: ice.MergeActions(ice.Actions{ DOCK: {Help: "工具栏", Actions: ice.MergeActions(ice.Actions{}, aaa.RoleAction(), CmdHashAction(), mdb.ExportHashAction())},
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) {
if m.Cmd(DOCK).Length() == 0 {
DockAppend(m, "Finder.png", Prefix(FINDER))
DockAppend(m, "Safari.png", web.CHAT_IFRAME)
DockAppend(m, "Terminal.png", web.CODE_XTERM)
DockAppend(m, "go.png", web.CODE_COMPILE)
DockAppend(m, "git.png", web.CODE_GIT_STATUS)
DockAppend(m, "vimer.png", web.CODE_VIMER)
}
}},
}, aaa.RoleAction(), CmdHashAction(), mdb.ExportHashAction())},
}) })
} }

View File

@ -52,11 +52,17 @@ var Index = &Context{Name: ICE, Help: "冰山模块", Commands: Commands{
kit.If(p != nil, func() { c._command(m.Spawn(c), c.Commands[CTX_INIT], CTX_INIT, arg...) }) kit.If(p != nil, func() { c._command(m.Spawn(c), c.Commands[CTX_INIT], CTX_INIT, arg...) })
}) })
}}, }},
CTX_OPEN: {Hand: func(m *Message, arg ...string) {
m.Travel(func(p *Context, c *Context) {
kit.If(p != nil, func() { c._command(m.Spawn(c), c.Commands[CTX_OPEN], CTX_OPEN, arg...) })
})
}},
INIT: {Hand: func(m *Message, arg ...string) { INIT: {Hand: func(m *Message, arg ...string) {
m.Cmd(kit.Keys(MDB, CTX_INIT)) m.Cmd(kit.Keys(MDB, CTX_INIT))
m.Cmd(CTX_INIT) m.Cmd(CTX_INIT)
m.Cmd(SOURCE, ETC_INIT_SHY) m.Cmd(SOURCE, ETC_INIT_SHY)
loadImportant(m) loadImportant(m)
m.Cmd(CTX_OPEN)
}}, }},
QUIT: {Hand: func(m *Message, arg ...string) { QUIT: {Hand: func(m *Message, arg ...string) {
m.GoSleep300ms(func() { os.Exit(kit.Int(kit.Select("0", arg, 0))) }) m.GoSleep300ms(func() { os.Exit(kit.Int(kit.Select("0", arg, 0))) })

View File

@ -481,8 +481,8 @@ func init() {
switch arg[0] { switch arg[0] {
case ORIGIN: case ORIGIN:
m.Push(arg[0], "https://shylinux.com/x/icons") m.Push(arg[0], "https://shylinux.com/x/icons")
m.Push(arg[0], "https://shylinux.com/x/volcanos") m.Push(arg[0], "https://shylinux.com/x/geoarea")
m.Push(arg[0], "https://shylinux.com/x/icebergs") m.Push(arg[0], "https://shylinux.com/x/node_modules")
} }
} }
switch arg[0] { switch arg[0] {
@ -504,14 +504,20 @@ func init() {
}}, }},
CLONE: {Name: "clone origin* branch name path", Help: "克隆", Hand: func(m *ice.Message, arg ...string) { CLONE: {Name: "clone origin* branch name path", Help: "克隆", Hand: func(m *ice.Message, arg ...string) {
m.OptionDefault(mdb.NAME, path.Base(m.Option(ORIGIN))) m.OptionDefault(mdb.NAME, path.Base(m.Option(ORIGIN)))
m.OptionDefault(nfs.PATH, path.Join(nfs.USR, m.Option(mdb.NAME))) m.OptionDefault(nfs.PATH, path.Join(nfs.USR, m.Option(mdb.NAME))+nfs.PS)
defer m.Cmdy(nfs.DIR, m.Option(nfs.PATH)) defer m.Cmdy(nfs.DIR, m.Option(nfs.PATH))
if nfs.Exists(m, path.Join(m.Option(nfs.PATH), ".git")) { if nfs.Exists(m, path.Join(m.Option(nfs.PATH), ".git")) {
return return
} }
defer web.ToastProcess(m)() defer web.ToastProcess(m)()
if _, err := git.PlainClone(m.Option(nfs.PATH), false, &git.CloneOptions{URL: m.Option(ORIGIN), Auth: _repos_auth(m, m.Option(ORIGIN))}); m.Warn(err) { for _, dev := range []string{ice.DEV, ice.SHY} {
p := m.Option(ORIGIN)
kit.If(!kit.HasPrefix(p, nfs.PS, web.HTTP), func() { p = m.Cmdv("web.spide", dev, web.CLIENT_ORIGIN) + "/x/" + p })
m.Info("clone %s", p)
if _, err := git.PlainClone(m.Option(nfs.PATH), false, &git.CloneOptions{URL: p, Auth: _repos_auth(m, p)}); !m.Warn(err) {
_repos_insert(m, m.Option(nfs.PATH)) _repos_insert(m, m.Option(nfs.PATH))
return
}
} }
}}, }},
PULL: {Help: "下载", Hand: func(m *ice.Message, arg ...string) { PULL: {Help: "下载", Hand: func(m *ice.Message, arg ...string) {
@ -541,7 +547,6 @@ func init() {
kit.If(_last > last, func() { last = _last }) kit.If(_last > last, func() { last = _last })
} }
} }
m.Info("%s: %s", m.ActionKey(), value[REPOS])
return _repos_status(m, value[REPOS], repos) return _repos_status(m, value[REPOS], repos)
}) })
remote := ice.Info.Make.Remote remote := ice.Info.Make.Remote