diff --git a/base/web/serve.go b/base/web/serve.go index 79f6955b..73dbadfc 100644 --- a/base/web/serve.go +++ b/base/web/serve.go @@ -205,8 +205,8 @@ const ( BODY = "body" HOME = "home" - OPS_SERVER_START = "ops.server.start" - SERVE_START = "serve.start" + OPS_SERVER_OPEN = "ops.server.open" + SERVE_START = "serve.start" ) const SERVE = "serve" diff --git a/base/web/space.go b/base/web/space.go index 0f66b41b..9f23996b 100644 --- a/base/web/space.go +++ b/base/web/space.go @@ -102,18 +102,12 @@ func _space_fork(m *ice.Message) { case WORKER: defer gdb.EventDeferEvent(m, DREAM_OPEN, args)(DREAM_CLOSE, args) case SERVER: + defer gdb.EventDeferEvent(m, SPACE_OPEN, args)(SPACE_CLOSE, args) m.Go(func() { m.Cmd(SPACE, name, cli.PWD, name, kit.Dict(nfs.MODULE, ice.Info.Make.Module, nfs.VERSION, ice.Info.Make.Versions(), AGENT, "Go-http-client", cli.SYSTEM, runtime.GOOS)) m.Cmd(SPACE).Table(func(value ice.Maps) { if kit.IsIn(value[mdb.TYPE], WORKER, SERVER) { - m.Cmd(SPACE, value[mdb.NAME], gdb.EVENT, gdb.HAPPEN, gdb.EVENT, OPS_SERVER_START, args, kit.Dict(ice.MSG_USERROLE, aaa.TECH)) - } - }) - m.Cmd(DREAM).Table(func(value ice.Maps) { - if value["restart"] == "always" { - value[nfs.BINARY] = UserHost(m) + S(value[mdb.NAME]) - value[mdb.ICON] = strings.TrimPrefix(kit.Split(value[mdb.ICON], "?")[0], "/require/") - m.Cmd(SPACE, name, DREAM, mdb.CREATE, mdb.NAME, value[mdb.NAME], value) + m.Cmd(SPACE, value[mdb.NAME], gdb.EVENT, gdb.HAPPEN, gdb.EVENT, OPS_SERVER_OPEN, args, kit.Dict(ice.MSG_USERROLE, aaa.TECH)) } }) }) @@ -234,6 +228,8 @@ const ( SPACE_LOGIN = "space.login" SPACE_LOGIN_CLOSE = "space.login.close" SPACE_GRANT = "space.grant" + SPACE_OPEN = "space.open" + SPACE_CLOSE = "space.close" ) const SPACE = "space" diff --git a/info.go b/info.go index 6128aa0f..cac045a9 100644 --- a/info.go +++ b/info.go @@ -144,7 +144,7 @@ func MergeActions(arg ...Any) Actions { h.Hand = MergeHand(v.Hand, h.Hand) } else if k == CTX_EXIT { h.Hand = MergeHand(h.Hand, v.Hand) - } else if h.Name, h.Help = kit.Select(v.Name, h.Name), kit.Select(v.Help, h.Help); h.Hand == nil { + } else if h.Name, h.Help, h.Icon = kit.Select(v.Name, h.Name), kit.Select(v.Help, h.Help), kit.Select(v.Icon, h.Icon); h.Hand == nil { h.Hand = v.Hand } } @@ -166,12 +166,12 @@ func MergeActions(arg ...Any) Actions { } else if h.Hand == nil { h.Hand = func(m *Message, arg ...string) { m.Cmdy(from, k, arg) } } + kit.Value(_cmd.Meta, kit.Keys(CTX_ICONS, k), v.Icon) if help := kit.Split(v.Help, " ::"); len(help) > 0 { if kit.Value(_cmd.Meta, kit.Keys(CTX_TRANS, strings.TrimPrefix(k, "_")), help[0]); len(help) > 1 { kit.Value(_cmd.Meta, kit.Keys(CTX_TITLE, k), help[1]) } } - kit.Value(_cmd.Meta, kit.Keys(CTX_ICONS, k), kit.Select(v.Icon, h.Icon)) kit.If(len(v.List) > 0, func() { _cmd.Meta[k] = v.List }) }(k) } diff --git a/misc/git/repos.go b/misc/git/repos.go index 7ff0266c..e6ce502c 100644 --- a/misc/git/repos.go +++ b/misc/git/repos.go @@ -436,6 +436,14 @@ func init() { } }) }}, + INIT: {Name: "init origin*", Help: "初始化", Hand: func(m *ice.Message, arg ...string) { + m.OptionDefault(nfs.PATH, kit.Path("")) + m.Cmd(nfs.DEFS, path.Join(m.Option(nfs.PATH), ".git/config"), kit.Format(nfs.Template(m, CONFIG), m.Option(ORIGIN))) + m.Cmd(nfs.DEFS, path.Join(m.Option(nfs.PATH), _GITIGNORE), nfs.Template(m, IGNORE)) + git.PlainInit(m.Option(nfs.PATH), false) + _repos_insert(m, m.Option(nfs.PATH)) + m.ProcessRefresh() + }}, INSTEADOF: {Name: "insteadof remote", Help: "代理", Icon: "bi bi-clouds", Hand: func(m *ice.Message, arg ...string) { m.Cmd(CONFIGS, func(value ice.Maps) { if strings.HasSuffix(value[mdb.NAME], _INSTEADOF) && strings.HasPrefix(ice.Info.Make.Remote, value[mdb.VALUE]) { @@ -446,14 +454,6 @@ func init() { _git_cmd(m, CONFIG, GLOBAL, "url."+m.Option(REMOTE)+_INSTEADOF, strings.TrimSuffix(ice.Info.Make.Remote, path.Base(ice.Info.Make.Remote))) } }}, - INIT: {Name: "init origin* path", Hand: func(m *ice.Message, arg ...string) { - m.OptionDefault(nfs.PATH, kit.Path("")) - m.Cmd(nfs.DEFS, path.Join(m.Option(nfs.PATH), ".git/config"), kit.Format(nfs.Template(m, CONFIG), m.Option(ORIGIN))) - m.Cmd(nfs.DEFS, path.Join(m.Option(nfs.PATH), _GITIGNORE), nfs.Template(m, IGNORE)) - git.PlainInit(m.Option(nfs.PATH), false) - _repos_insert(m, m.Option(nfs.PATH)) - m.ProcessRefresh() - }}, REMOTE: {Hand: func(m *ice.Message, arg ...string) { repos := _repos_open(m, kit.Select(path.Base(kit.Path("")), kit.Select(m.Option(REPOS), arg, 0))) if _remote, err := repos.Remote(ORIGIN); err == nil { @@ -474,19 +474,28 @@ func init() { } } }}, - REMOTE_URL: {Hand: func(m *ice.Message, arg ...string) { + REMOTE_URL: {Name: "remoteURL", Hand: func(m *ice.Message, arg ...string) { m.Echo(_repos_remote(m, _repos_origin(m, _repos_open(m, path.Base(kit.Path("")))))) }}, mdb.INPUTS: {Hand: func(m *ice.Message, arg ...string) { - switch arg[0] { - case MESSAGE: - ls := kit.Split(m.Option(nfs.FILE), " /") - m.Push(arg[0], kit.Select("", ls, -2)) - m.Push(arg[0], kit.Join(kit.Slice(ls, -1), nfs.PS)) - m.Push(arg[0], kit.Join(kit.Slice(ls, -2), nfs.PS)) - m.Push(arg[0], m.Option(nfs.FILE)) - case VERSION: - m.Push(arg[0], _repos_tag(m, m.Option(TAGS))) + switch m.Option(ctx.ACTION) { + case INIT: + m.Cmd(web.SPIDE, ice.OptionFields(web.CLIENT_ORIGIN), func(value ice.Maps) { m.Push(arg[0], value[web.CLIENT_ORIGIN]+web.X(path.Base(kit.Path("")))) }) + m.Push(arg[0], kit.MergeURL2(web.UserHost(m), web.X(path.Base(kit.Path(""))))) + case INSTEADOF, OAUTH: + m.Cmd(web.SPIDE, ice.OptionFields(web.CLIENT_ORIGIN), func(value ice.Maps) { m.Push(arg[0], value[web.CLIENT_ORIGIN]+web.X()) }) + m.Push(arg[0], kit.MergeURL2(web.UserHost(m), web.X())) + default: + switch arg[0] { + case MESSAGE: + ls := kit.Split(m.Option(nfs.FILE), " /") + m.Push(arg[0], kit.Select("", ls, -2)) + m.Push(arg[0], kit.Join(kit.Slice(ls, -1), nfs.PS)) + m.Push(arg[0], kit.Join(kit.Slice(ls, -2), nfs.PS)) + m.Push(arg[0], m.Option(nfs.FILE)) + case VERSION: + m.Push(arg[0], _repos_tag(m, m.Option(TAGS))) + } } }}, mdb.REMOVE: {Hand: func(m *ice.Message, arg ...string) { @@ -495,9 +504,9 @@ func init() { mdb.HashRemove(m, m.Option(REPOS)) } }}, - CLONE: {Name: "clone origin* branch name path", Help: "克隆", Icon: "bi bi-copy", Hand: func(m *ice.Message, arg ...string) { + CLONE: {Name: "clone origin* name", Help: "克隆", Icon: "bi bi-copy", Hand: func(m *ice.Message, arg ...string) { m.OptionDefault(mdb.NAME, path.Base(m.Option(ORIGIN))) - m.OptionDefault(nfs.PATH, path.Join(nfs.USR, m.Option(mdb.NAME))+nfs.PS) + m.Option(nfs.PATH, path.Join(nfs.USR, m.Option(mdb.NAME))+nfs.PS) defer m.Cmdy(nfs.DIR, m.Option(nfs.PATH)) if nfs.Exists(m, path.Join(m.Option(nfs.PATH), _GIT)) { return @@ -608,6 +617,18 @@ func init() { web.DREAM_TRASH: {Hand: func(m *ice.Message, arg ...string) { m.Cmd("", mdb.REMOVE, kit.Dict(REPOS, m.Option(mdb.NAME))) }}, + web.SPACE_OPEN: {Hand: func(m *ice.Message, arg ...string) { + if m.Option(mdb.TYPE) == web.SERVER { + m.Cmd(web.DREAM).Table(func(value ice.Maps) { + if value[cli.RESTART] == "always" { + value[nfs.BINARY] = web.UserHost(m) + web.S(value[mdb.NAME]) + value[mdb.ICON] = strings.TrimPrefix(kit.Split(value[mdb.ICON], "?")[0], "/require/") + value[nfs.REPOS] = _repos_remote(m, _repos_origin(m, _repos_open(m, path.Join(ice.USR_LOCAL_WORK, value[mdb.NAME])))) + m.Cmd(web.SPACE, m.Option(mdb.NAME), web.DREAM, mdb.CREATE, mdb.NAME, value[mdb.NAME], value) + } + }) + } + }}, web.SERVE_START: {Hand: func(m *ice.Message, arg ...string) { m.Cmd("", CLONE, ORIGIN, "node_modules", mdb.NAME, "", nfs.PATH, "") m.Cmd("", CLONE, ORIGIN, "icons", mdb.NAME, "", nfs.PATH, "") diff --git a/misc/git/status.go b/misc/git/status.go index 515ca64b..6cf036cf 100644 --- a/misc/git/status.go +++ b/misc/git/status.go @@ -33,35 +33,24 @@ func init() { ice.CTX_TRANS, kit.Dict(html.INPUT, kit.Dict("actions", "操作", "message", "信息")), ), Actions: ice.MergeActions(ice.Actions{ mdb.INPUTS: {Hand: func(m *ice.Message, arg ...string) { - switch m.Option(ctx.ACTION) { - case INIT: - m.Cmd(web.SPIDE, ice.OptionFields(web.CLIENT_ORIGIN), func(value ice.Maps) { m.Push(arg[0], value[web.CLIENT_ORIGIN]+web.X(path.Base(kit.Path("")))) }) - m.Push(arg[0], kit.MergeURL2(web.UserHost(m), web.X(path.Base(kit.Path(""))))) - case INSTEADOF, OAUTH: - m.Cmd(web.SPIDE, ice.OptionFields(web.CLIENT_ORIGIN), func(value ice.Maps) { m.Push(arg[0], value[web.CLIENT_ORIGIN]+web.X()) }) - m.Push(arg[0], kit.MergeURL2(web.UserHost(m), web.X())) + switch arg[0] { + case aaa.EMAIL: + m.Push(arg[0], _configs_get(m, USER_EMAIL), ice.Info.Make.Email) + case aaa.USERNAME: + m.Push(arg[0], kit.Select(m.Option(ice.MSG_USERNAME), _configs_get(m, USER_NAME)), ice.Info.Make.Username) default: - switch arg[0] { - case aaa.USERNAME: - m.Push(arg[0], kit.Select(m.Option(ice.MSG_USERNAME), _configs_get(m, USER_NAME)), ice.Info.Make.Username) - case aaa.EMAIL: - m.Push(arg[0], _configs_get(m, USER_EMAIL), ice.Info.Make.Email) - default: - m.Cmdy(REPOS, mdb.INPUTS, arg) - } + m.Cmdy(REPOS, mdb.INPUTS, arg) } }}, - INIT: {Name: "init origin*", Help: "初始化", Hand: func(m *ice.Message, arg ...string) { m.Cmdy(REPOS, INIT) }}, + OAUTH: {Name: "oauth remote", Help: "授权", Icon: "bi bi-person-check", Hand: func(m *ice.Message, arg ...string) { + m.ProcessOpen(kit.MergeURL2(kit.Select(ice.Info.Make.Domain, m.Cmdx(REPOS, REMOTE_URL), m.Option(REMOTE)), web.ChatCmdPath(m, web.TOKEN, "gen"), + mdb.TYPE, web.CODE_GIT_STATUS, tcp.HOST, m.Option(ice.MSG_USERWEB))) + }}, CONFIGS: {Name: "configs email* username*", Help: "配置", Hand: func(m *ice.Message, arg ...string) { m.Cmd(nfs.DEFS, kit.HomePath(_GITCONFIG), kit.Format(nfs.Template(m, "gitconfig"), m.Option(aaa.USERNAME), m.Option(aaa.EMAIL))) mdb.Config(m, aaa.USERNAME, m.Option(aaa.USERNAME)) mdb.Config(m, aaa.EMAIL, m.Option(aaa.EMAIL)) }}, - INSTEADOF: {Name: "insteadof remote", Help: "代理", Icon: "bi bi-clouds", Hand: func(m *ice.Message, arg ...string) { m.Cmdy(REPOS, INSTEADOF, arg) }}, - OAUTH: {Name: "oauth remote", Help: "授权", Icon: "bi bi-person-check", Hand: func(m *ice.Message, arg ...string) { - m.ProcessOpen(kit.MergeURL2(kit.Select(ice.Info.Make.Domain, m.Cmdx(REPOS, REMOTE_URL), m.Option(REMOTE)), web.ChatCmdPath(m, web.TOKEN, "gen"), - mdb.TYPE, web.CODE_GIT_STATUS, tcp.HOST, m.Option(ice.MSG_USERWEB))) - }}, web.DREAM_TABLES: {Hand: func(m *ice.Message, arg ...string) { if !nfs.Exists(m, path.Join(ice.USR_LOCAL_WORK, m.Option(mdb.NAME), _GIT)) { m.Push(mdb.TEXT, "")