Skip to content

Commit b7550fb

Browse files
committed
Correctly surface errors when parsing pr create --repo override
This avoids a crash when passing invalid input for the `pr create --repo` flag.
1 parent f1ea794 commit b7550fb

File tree

1 file changed

+16
-11
lines changed

1 file changed

+16
-11
lines changed

context/context.go

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,22 @@ const maxRemotesForLookup = 5
2626
func ResolveRemotesToRepos(remotes Remotes, client *api.Client, base string) (ResolvedRemotes, error) {
2727
sort.Stable(remotes)
2828

29-
hasBaseOverride := base != ""
30-
baseOverride, _ := ghrepo.FromFullName(base)
31-
foundBaseOverride := false
29+
result := ResolvedRemotes{
30+
Remotes: remotes,
31+
apiClient: client,
32+
}
33+
34+
var baseOverride ghrepo.Interface
35+
if base != "" {
36+
var err error
37+
baseOverride, err = ghrepo.FromFullName(base)
38+
if err != nil {
39+
return result, err
40+
}
41+
result.BaseOverride = baseOverride
42+
}
3243

44+
foundBaseOverride := false
3345
var hostname string
3446
var repos []ghrepo.Interface
3547
for i, r := range remotes {
@@ -47,19 +59,12 @@ func ResolveRemotesToRepos(remotes Remotes, client *api.Client, base string) (Re
4759
break
4860
}
4961
}
50-
if hasBaseOverride && !foundBaseOverride {
62+
if baseOverride != nil && !foundBaseOverride {
5163
// additionally, look up the explicitly specified base repo if it's not
5264
// already covered by git remotes
5365
repos = append(repos, baseOverride)
5466
}
5567

56-
result := ResolvedRemotes{
57-
Remotes: remotes,
58-
apiClient: client,
59-
}
60-
if hasBaseOverride {
61-
result.BaseOverride = baseOverride
62-
}
6368
networkResult, err := api.RepoNetwork(client, repos)
6469
if err != nil {
6570
return result, err

0 commit comments

Comments
 (0)