1
0
mirror of https://shylinux.com/x/icebergs synced 2025-04-26 01:24:05 +08:00
This commit is contained in:
IT 老营长 @云轩领航-创始人 2023-07-14 16:37:40 +08:00
parent 80edcfd1be
commit cf79f573e7
2 changed files with 58 additions and 19 deletions

View File

@ -372,10 +372,11 @@ const (
COMMIT = "commit"
BRANCH = "branch"
REMOTE = "remote"
ORIGIN = "origin"
MASTER = "master"
INDEX = "index"
REMOTE = "remote"
ORIGIN = "origin"
MASTER = "master"
INDEX = "index"
INSTEADOF = "insteadof"
)
const REPOS = "repos"
@ -436,28 +437,50 @@ func init() {
}
}},
PULL: {Help: "下载", Hand: func(m *ice.Message, arg ...string) {
insteadof := mdb.Config(m, INSTEADOF)
_repos_each(m, "", func(repos *git.Repository, value ice.Maps) error {
if value[ORIGIN] == "" {
return nil
} else if work, err := repos.Worktree(); err != nil {
}
remote, err := repos.Remote("origin")
if err != nil {
return err
}
remoteURL := remote.Config().URLs[0]
if insteadof != "" {
remoteURL = insteadof + path.Base(remoteURL)
}
if work, err := repos.Worktree(); err != nil {
return err
} else {
return work.Pull(&git.PullOptions{})
return work.Pull(&git.PullOptions{RemoteURL: remoteURL})
}
})
}},
INSTEADOF: {Name: "insteadof remote", Help: "代理", Hand: func(m *ice.Message, arg ...string) {
mdb.Config(m, INSTEADOF, m.Option(REMOTE))
}},
PUSH: {Help: "上传", Hand: func(m *ice.Message, arg ...string) {
list := _repos_credentials(m)
insteadof := mdb.Config(m, INSTEADOF)
_repos_each(m, "", func(repos *git.Repository, value ice.Maps) error {
if value[ORIGIN] == "" {
return nil
}
remote, err := repos.Remote("origin")
if err != nil {
return err
}
remoteURL := remote.Config().URLs[0]
if insteadof != "" {
remoteURL = insteadof + path.Base(remoteURL)
}
if u, ok := list[kit.ParseURL(value[ORIGIN]).Host]; !ok {
return errors.New("not found userinfo")
} else if password, ok := u.User.Password(); !ok {
return errors.New("not found password")
} else {
return repos.Push(&git.PushOptions{Auth: &http.BasicAuth{Username: u.User.Username(), Password: password}})
return repos.Push(&git.PushOptions{RemoteURL: remoteURL, Auth: &http.BasicAuth{Username: u.User.Username(), Password: password}})
}
})
}},
@ -518,6 +541,9 @@ func init() {
}
return _repos_status(m, value[REPOS], repos)
})
if insteadof := mdb.Config(m, INSTEADOF); insteadof != "" {
remote = insteadof + path.Base(remote)
}
if u, ok := list[kit.ParseURL(remote).Host]; ok {
password, _ = u.User.Password()
}
@ -596,6 +622,13 @@ func init() {
})
})
}},
"remoteURL": {Hand: func(m *ice.Message, arg ...string) {
remoteURL := _git_remote(m)
if insteadof := mdb.Config(m, INSTEADOF); insteadof != "" {
remoteURL = insteadof + path.Base(remoteURL)
}
m.Echo(remoteURL)
}},
web.DREAM_ACTION: {Hand: func(m *ice.Message, arg ...string) { web.DreamProcess(m, []string{}, arg...) }},
code.INNER: {Hand: func(m *ice.Message, arg ...string) { _repos_inner(m, _repos_path, arg...) }},
}, aaa.RoleAction(REMOTE), mdb.ClearOnExitHashAction(), mdb.HashAction(mdb.SHORT, REPOS, mdb.FIELD, "time,repos,branch,version,comment,origin")), Hand: func(m *ice.Message, arg ...string) {

View File

@ -88,11 +88,10 @@ func _status_list(m *ice.Message) (files, adds, dels int, last string) {
}
const (
INSTEADOF = "insteadof"
OAUTH = "oauth"
DIFF = "diff"
OPT = "opt"
FIX = "fix"
OAUTH = "oauth"
DIFF = "diff"
OPT = "opt"
FIX = "fix"
TAGS = "tags"
VERSION = "version"
@ -111,6 +110,10 @@ func init() {
m.Push(arg[0], kit.MergeURL2(ice.Info.Make.Remote, nfs.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])) })
case REMOTE:
m.Cmd(web.BROAD, func(value ice.Maps) { m.Push(arg[0], kit.Format("http://%s:%s/x/", value[tcp.HOST], value[tcp.PORT])) })
m.Push(arg[0], "http://localhost:9020/x/")
m.Push(arg[0], "https://shylinux.com/x/")
}
return
}
@ -123,12 +126,15 @@ func init() {
m.Cmdy(REPOS, mdb.INPUTS, arg)
}
}},
INSTEADOF: {Name: "insteadof from* to", Help: "代理", Hand: func(m *ice.Message, arg ...string) {
m.Cmd(CONFIGS, func(value ice.Maps) {
kit.If(value[mdb.VALUE] == m.Option(nfs.FROM), func() { _configs_set(m, "--unset", value[mdb.NAME]) })
})
kit.If(m.Option(nfs.TO), func() { _git_cmd(m, CONFIG, "--global", "url."+m.Option(nfs.TO)+".insteadof", m.Option(nfs.FROM)) })
INSTEADOF: {Name: "insteadof remote", Help: "代理", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(REPOS, INSTEADOF, arg)
}},
// INSTEADOF: {Name: "insteadof from* to", Help: "代理", Hand: func(m *ice.Message, arg ...string) {
// m.Cmd(CONFIGS, func(value ice.Maps) {
// kit.If(value[mdb.VALUE] == m.Option(nfs.FROM), func() { _configs_set(m, "--unset", value[mdb.NAME]) })
// })
// kit.If(m.Option(nfs.TO), func() { _git_cmd(m, CONFIG, "--global", "url."+m.Option(nfs.TO)+".insteadof", m.Option(nfs.FROM)) })
// }},
CONFIGS: {Name: "configs email* username* token", Help: "配置", Hand: func(m *ice.Message, arg ...string) {
m.Cmd(nfs.DEFS, kit.HomePath(".gitconfig"), nfs.Template(m, "gitconfig", m.Option(aaa.USERNAME), m.Option(aaa.EMAIL)))
mdb.Config(m, aaa.USERNAME, m.Option(aaa.USERNAME))
@ -136,7 +142,7 @@ func init() {
kit.If(m.Option(TOKEN), func() { m.Cmd(TOKEN, "set") })
}},
OAUTH: {Help: "授权", Hand: func(m *ice.Message, arg ...string) {
m.ProcessOpen(kit.MergeURL2(kit.Select(ice.Info.Make.Domain, _git_remote(m)), web.ChatCmdPath(Prefix(TOKEN), "gen"), tcp.HOST, m.Option(ice.MSG_USERWEB)))
m.ProcessOpen(kit.MergeURL2(kit.Select(ice.Info.Make.Domain, m.Cmdx(REPOS, "remoteURL")), web.ChatCmdPath(Prefix(TOKEN), "gen"), tcp.HOST, m.Option(ice.MSG_USERWEB)))
}},
cli.RESTART: {Hand: func(m *ice.Message, arg ...string) {
m.Go(func() { m.Cmd(ice.EXIT, "1") }).ProcessHold()
@ -168,7 +174,7 @@ func init() {
m.Action(CONFIGS).Echo("please config email and name. ").EchoButton(CONFIGS)
} else if len(arg) == 0 {
kit.If(config != nil, func() { m.Option(aaa.EMAIL, kit.Select(mdb.Config(m, aaa.EMAIL), config.User.Email)) })
m.Cmdy(REPOS, STATUS).Action(PULL, PUSH, "oauth", CONFIGS, cli.RESTART)
m.Cmdy(REPOS, STATUS).Action(PULL, PUSH, "oauth", CONFIGS, INSTEADOF, cli.RESTART)
} else {
m.Cmdy(REPOS, arg[0], MASTER, INDEX, m.Cmdv(REPOS, arg[0], MASTER, INDEX, nfs.FILE))
}