Use Different Remote Repos (#58)

This commit is contained in:
6543 2019-10-26 21:29:37 +00:00 committed by lafriks
parent cd1ddb86b5
commit 0515114fa3
3 changed files with 35 additions and 3 deletions

1
.gitignore vendored
View File

@ -1 +1,2 @@
tea tea
.idea/

View File

@ -195,9 +195,31 @@ func curGitRepoPath() (*Login, string, error) {
if err := gitConfig.Unmarshal(bs); err != nil { if err := gitConfig.Unmarshal(bs); err != nil {
return nil, "", err return nil, "", err
} }
remoteConfig, ok := gitConfig.Remotes["origin"]
// if no remote
if len(gitConfig.Remotes) == 0 {
return nil, "", errors.New("No remote repository set on this git repository")
}
// if only one remote exists
if len(gitConfig.Remotes) >= 1 && len(remoteValue) == 0 {
for remote := range gitConfig.Remotes {
remoteValue = remote
}
if len(gitConfig.Remotes) > 1 {
// if master branch is present, use it as the default remote
masterBranch, ok := gitConfig.Branches["master"]
if ok {
if len(masterBranch.Remote) > 0 {
remoteValue = masterBranch.Remote
}
}
}
}
remoteConfig, ok := gitConfig.Remotes[remoteValue]
if !ok || remoteConfig == nil { if !ok || remoteConfig == nil {
return nil, "", errors.New("No remote origin found on this git repository") return nil, "", errors.New("No remote " + remoteValue + " found on this git repository")
} }
for _, l := range config.Logins { for _, l := range config.Logins {

View File

@ -16,6 +16,7 @@ var (
loginValue string loginValue string
repoValue string repoValue string
outputValue string outputValue string
remoteValue string
) )
// LoginFlag provides flag to specify tea login profile // LoginFlag provides flag to specify tea login profile
@ -32,6 +33,13 @@ var RepoFlag = cli.StringFlag{
Destination: &repoValue, Destination: &repoValue,
} }
// RemoteFlag provides flag to specify remote repository
var RemoteFlag = cli.StringFlag{
Name: "remote, R",
Usage: "Set a specific remote repository, is optional if not set use git default one",
Destination: &remoteValue,
}
// OutputFlag provides flag to specify output type // OutputFlag provides flag to specify output type
var OutputFlag = cli.StringFlag{ var OutputFlag = cli.StringFlag{
Name: "output, o", Name: "output, o",
@ -63,6 +71,7 @@ var LoginRepoFlags = []cli.Flag{
// https://github.com/urfave/cli/issues/585 // https://github.com/urfave/cli/issues/585
var AllDefaultFlags = append([]cli.Flag{ var AllDefaultFlags = append([]cli.Flag{
RepoFlag, RepoFlag,
RemoteFlag,
}, LoginOutputFlags...) }, LoginOutputFlags...)
// initCommand returns repository and *Login based on flags // initCommand returns repository and *Login based on flags