Correctly surface errors when parsing pr create --repo override

This avoids a crash when passing invalid input for the
`pr create --repo` flag.
This commit is contained in:
Mislav Marohnić 2020-08-27 14:26:27 +02:00
parent f1ea794bf1
commit b7550fbf15

View file

@ -26,10 +26,22 @@ const maxRemotesForLookup = 5
func ResolveRemotesToRepos(remotes Remotes, client *api.Client, base string) (ResolvedRemotes, error) {
sort.Stable(remotes)
hasBaseOverride := base != ""
baseOverride, _ := ghrepo.FromFullName(base)
foundBaseOverride := false
result := ResolvedRemotes{
Remotes: remotes,
apiClient: client,
}
var baseOverride ghrepo.Interface
if base != "" {
var err error
baseOverride, err = ghrepo.FromFullName(base)
if err != nil {
return result, err
}
result.BaseOverride = baseOverride
}
foundBaseOverride := false
var hostname string
var repos []ghrepo.Interface
for i, r := range remotes {
@ -47,19 +59,12 @@ func ResolveRemotesToRepos(remotes Remotes, client *api.Client, base string) (Re
break
}
}
if hasBaseOverride && !foundBaseOverride {
if baseOverride != nil && !foundBaseOverride {
// additionally, look up the explicitly specified base repo if it's not
// already covered by git remotes
repos = append(repos, baseOverride)
}
result := ResolvedRemotes{
Remotes: remotes,
apiClient: client,
}
if hasBaseOverride {
result.BaseOverride = baseOverride
}
networkResult, err := api.RepoNetwork(client, repos)
if err != nil {
return result, err