diff --git a/logs.go b/logs.go index 5b148ffd..41f9f87c 100644 --- a/logs.go +++ b/logs.go @@ -190,7 +190,7 @@ func (m *Message) FormatsMeta(w io.Writer, arg ...string) (res string) { count++ } echo("{", NL) - defer echo("}", NL) + defer echo(NL, "}", NL) kit.For(kit.Simple(MSG_DETAIL, MSG_OPTION, m.meta[MSG_OPTION], m.meta[MSG_APPEND], MSG_APPEND, MSG_RESULT), push) return } diff --git a/misc/git/repos.go b/misc/git/repos.go index b60f9681..220aab90 100644 --- a/misc/git/repos.go +++ b/misc/git/repos.go @@ -442,7 +442,7 @@ func init() { code.VIMER: {Hand: func(m *ice.Message, arg ...string) { _repos_vimer(m, _repos_path, arg...) }}, }, mdb.HashAction(mdb.SHORT, REPOS, mdb.FIELD, "time,repos,branch,commit,origin"), mdb.ClearOnExitHashAction()), Hand: func(m *ice.Message, arg ...string) { if len(arg) == 0 { - mdb.HashSelect(m, arg...).Sort(REPOS).Action(CLONE, PULL, PUSH) + mdb.HashSelect(m, arg...).Sort(REPOS).Action(CLONE, PULL, PUSH, STATUS) } else if len(arg) == 1 { _repos_branch(m, _repos_open(m, arg[0])) } else if len(arg) == 2 { diff --git a/misc/git/service.go b/misc/git/service.go index a9f56cca..13446236 100644 --- a/misc/git/service.go +++ b/misc/git/service.go @@ -143,7 +143,6 @@ func init() { if len(arg) == 0 { mdb.HashSelect(m, arg...).Sort(REPOS).Action(mdb.CREATE, TOKEN) m.Echo(strings.ReplaceAll(m.Cmdx("web.code.publish", ice.CONTEXTS), "app username", "dev username")) - m.Echo(m.Cmdx(TOKEN, m.Option(ice.MSG_USERNAME))) } else if len(arg) == 1 { repos := _repos_open(m, arg[0]) if branch, err := repos.Branch(arg[1]); !m.Warn(err) { diff --git a/misc/git/status.go b/misc/git/status.go index 714ca6d0..77e31fcd 100644 --- a/misc/git/status.go +++ b/misc/git/status.go @@ -109,9 +109,7 @@ func init() { case nfs.FROM: m.Push(arg[0], kit.MergeURL2(ice.Info.Make.Remote, ice.PS)) case nfs.TO: - m.Cmd(web.BROAD, func(value ice.Maps) { - m.Push(arg[0], kit.Format("http://%s:%s/", value[tcp.HOST], value[tcp.PORT])) - }) + m.Cmd(web.BROAD, func(value ice.Maps) { m.Push(arg[0], kit.Format("http://%s:%s/", value[tcp.HOST], value[tcp.PORT])) }) } return } @@ -140,10 +138,13 @@ func init() { kit.If(m.Option(nfs.TO), func() { _git_cmd(m, CONFIG, "--global", "url."+m.Option(nfs.TO)+".insteadof", m.Option(nfs.FROM)) }) }}, OAUTH: {Help: "授权", Hand: func(m *ice.Message, arg ...string) { - m.ProcessOpen(kit.MergeURL2(kit.Select(ice.Info.Make.Remote, _git_remote(m)), "/chat/cmd/web.code.git.token", aaa.USERNAME, m.Option(ice.MSG_USERNAME), tcp.HOST, web.UserHost(m))) + m.ProcessOpen(kit.MergeURL2(kit.Select(ice.Info.Make.Remote, _git_remote(m)), "/chat/cmd/web.code.git.token/gen/", tcp.HOST, web.UserHost(m))) + }}, + TAG: {Name: "tag version", Hand: func(m *ice.Message, arg ...string) { + m.Cmdy(REPOS, m.ActionKey(), arg) }}, COMMIT: {Name: "commit actions=add,opt,fix comment*=some", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(REPOS, COMMIT, arg) + m.Cmdy(REPOS, m.ActionKey(), arg) }}, web.DREAM_TABLES: {Hand: func(m *ice.Message, arg ...string) { if m.Option(mdb.TYPE) != web.WORKER { @@ -164,9 +165,7 @@ func init() { }, gdb.EventAction(web.DREAM_TABLES), aaa.RoleAction()), Hand: func(m *ice.Message, arg ...string) { if len(arg) > 0 && arg[0] == ctx.ACTION { m.Cmdy(REPOS, arg) - return - } - if _configs_get(m, USER_EMAIL) == "" { + } else if _configs_get(m, USER_EMAIL) == "" { m.Echo("please config user.email").Action(CONFIGS) } else if len(arg) == 0 { files, adds, dels, last := _status_list(m) diff --git a/misc/git/token.go b/misc/git/token.go index 81e714a9..00621962 100644 --- a/misc/git/token.go +++ b/misc/git/token.go @@ -17,26 +17,32 @@ const TOKEN = "token" func init() { const ( - SET = "set" - GET = "get" - SID = "sid" + GEN = "gen" + SET = "set" + GET = "get" + SID = "sid" + FILE = ".git-credentials" + LOCAL = "http://localhost:9020" ) - const LOCAL = "http://localhost:9020" - const FILE = ".git-credentials" + create := func(m *ice.Message) string { + msg := m.Cmd(Prefix(TOKEN), m.Cmdx(Prefix(TOKEN), mdb.CREATE, aaa.USERNAME, m.Option(ice.MSG_USERNAME), TOKEN, kit.Hashs(mdb.UNIQ))) + return strings.Replace(web.UserHost(m), "://", kit.Format("://%s:%s@", m.Option(ice.MSG_USERNAME), msg.Append(TOKEN)), 1) + } Index.MergeCommands(ice.Commands{ TOKEN: {Name: "token username auto prunes", Actions: ice.MergeActions(ice.Actions{ ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { aaa.White(m, kit.Keys(TOKEN, SID)) }}, cli.MAKE: {Hand: func(m *ice.Message, arg ...string) { - msg := m.Cmd("", m.Cmdx("", mdb.CREATE, aaa.USERNAME, m.Option(ice.MSG_USERNAME), TOKEN, kit.Hashs(mdb.UNIQ))) - m.ProcessOpen(kit.MergeURL(LOCAL+m.PrefixPath(SET), TOKEN, msg.Append("url"))) + m.ProcessReplace(kit.MergeURL2(LOCAL, m.PrefixPath(SET), TOKEN, create(m))) + }}, + web.PP(GEN): {Hand: func(m *ice.Message, arg ...string) { + m.ProcessReplace(kit.MergeURL2(m.Option(tcp.HOST), m.PrefixPath(SET), TOKEN, create(m))) }}, web.PP(SET): {Hand: func(m *ice.Message, arg ...string) { defer web.RenderTemplate(m, "close.html") host, list := ice.Map{kit.ParseURL(m.Option(TOKEN)).Host: true}, []string{m.Option(TOKEN)} m.Cmd(nfs.CAT, kit.HomePath(FILE), func(line string) { kit.IfNoKey(host, kit.ParseURL(line).Host, func(p string) { list = append(list, line) }) - }) - m.Cmd(nfs.SAVE, kit.HomePath(FILE), strings.Join(list, ice.NL)+ice.NL) + }).Cmd(nfs.SAVE, kit.HomePath(FILE), strings.Join(list, ice.NL)+ice.NL) }}, web.PP(GET): {Hand: func(m *ice.Message, arg ...string) { web.RenderOrigin(m.W, "*") @@ -54,16 +60,6 @@ func init() { web.RenderCookie(m.Echo(ice.OK), aaa.SessCreate(m, arg[0])) } }}, - }, mdb.HashAction(mdb.EXPIRE, mdb.MONTH, mdb.SHORT, aaa.USERNAME, mdb.FIELD, "time,username,token")), Hand: func(m *ice.Message, arg ...string) { - if mdb.HashSelect(m, arg...); len(arg) > 0 && m.Length() > 0 { - p := strings.Replace(web.UserHost(m), "://", kit.Format("://%s:%s@", m.Option(ice.MSG_USERNAME), m.Append(TOKEN)), 1) - m.OptionDefault(tcp.HOST, LOCAL) - if m.Push("url", p).EchoScript(p).EchoScript(nfs.Template(m, "echo.sh", p)); m.Option(ice.CMD) == m.PrefixKey() { - m.ProcessReplace(kit.MergeURL2(m.Option(tcp.HOST), m.PrefixPath(SET), TOKEN, p)) - } else { - m.EchoAnchor(kit.MergeURL2(m.Option(tcp.HOST), m.PrefixPath(SET), TOKEN, p)) - } - } - }}, + }, mdb.HashAction(mdb.EXPIRE, mdb.MONTH, mdb.SHORT, aaa.USERNAME, mdb.FIELD, "time,username,token"))}, }) } diff --git a/option.go b/option.go index 8a6bf849..6bb48fe0 100644 --- a/option.go +++ b/option.go @@ -57,6 +57,7 @@ func (m *Message) FieldsIsDetail() bool { return len(m.meta[MSG_APPEND]) == 2 && m.meta[MSG_APPEND][0] == KEY && m.meta[MSG_APPEND][1] == VALUE || m.OptionFields() == FIELDS_DETAIL } func (m *Message) Fields(length int, fields ...string) string { + kit.If(length >= len(fields), func() { m.Option(MSG_FIELDS, FIELDS_DETAIL) }) return m.OptionDefault(MSG_FIELDS, kit.Select(FIELDS_DETAIL, fields, length)) } func (m *Message) Action(arg ...Any) *Message {