Skip to content

Commit 407f0ed

Browse files
committed
Consolidate getTeamSlugContext and resolveTeamIDs to use shared logic with getTeam
Signed-off-by: Timo Sand <timo.sand@f-secure.com>
1 parent 62f6ed3 commit 407f0ed

File tree

2 files changed

+29
-43
lines changed

2 files changed

+29
-43
lines changed

github/resource_github_team_settings.go

Lines changed: 7 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@ package github
22

33
import (
44
"context"
5-
"errors"
6-
"strconv"
75

86
"github.com/hashicorp/terraform-plugin-log/tflog"
97
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
@@ -97,7 +95,7 @@ func resourceGithubTeamSettingsCreate(ctx context.Context, d *schema.ResourceDat
9795
})
9896
// Given a string that is either a team id or team slug, return the
9997
// get the basic details of the team including node_id and slug
100-
nodeId, slug, err := resolveTeamIDs(teamIDString, meta, ctx)
98+
nodeId, slug, err := resolveTeamIDs(ctx, meta, teamIDString)
10199
if err != nil {
102100
return diag.FromErr(err)
103101
}
@@ -291,7 +289,7 @@ func resourceGithubTeamSettingsDelete(ctx context.Context, d *schema.ResourceDat
291289
}
292290

293291
func resourceGithubTeamSettingsImport(ctx context.Context, d *schema.ResourceData, meta any) ([]*schema.ResourceData, error) {
294-
nodeId, slug, err := resolveTeamIDs(d.Id(), meta.(*Owner), ctx)
292+
nodeId, slug, err := resolveTeamIDs(ctx, meta.(*Owner), d.Id())
295293
if err != nil {
296294
return nil, err
297295
}
@@ -308,34 +306,12 @@ func resourceGithubTeamSettingsImport(ctx context.Context, d *schema.ResourceDat
308306
return []*schema.ResourceData{d}, nil
309307
}
310308

311-
func resolveTeamIDs(idOrSlug string, meta *Owner, ctx context.Context) (nodeId, slug string, err error) {
312-
client := meta.v3client
313-
orgName := meta.name
314-
orgId := meta.id
315-
316-
teamId, parseIntErr := strconv.ParseInt(idOrSlug, 10, 64)
317-
if parseIntErr != nil {
318-
// The given id not an integer, assume it is a team slug
319-
team, _, slugErr := client.Teams.GetTeamBySlug(ctx, orgName, idOrSlug)
320-
if slugErr != nil {
321-
return "", "", errors.New(parseIntErr.Error() + slugErr.Error())
322-
}
323-
return team.GetNodeID(), team.GetSlug(), nil
324-
} else {
325-
// The given id is an integer, assume it is a team id
326-
team, _, teamIdErr := client.Teams.GetTeamByID(ctx, orgId, teamId)
327-
if teamIdErr != nil {
328-
// There isn't a team with the given ID, assume it is a teamslug
329-
team, _, slugErr := client.Teams.GetTeamBySlug(ctx, orgName, idOrSlug)
330-
if slugErr != nil {
331-
return "", "", errors.New(teamIdErr.Error() + slugErr.Error())
332-
}
333-
334-
return team.GetNodeID(), team.GetSlug(), nil
335-
}
336-
337-
return team.GetNodeID(), team.GetSlug(), nil
309+
func resolveTeamIDs(ctx context.Context, meta *Owner, idOrSlug string) (nodeId, slug string, err error) {
310+
team, err := getTeam(ctx, meta, idOrSlug)
311+
if err != nil {
312+
return "", "", err
338313
}
314+
return team.GetNodeID(), team.GetSlug(), nil
339315
}
340316

341317
// resolveNotify returns the notify value from the top-level attribute or the

github/util.go

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -240,34 +240,44 @@ func getTeamSlug(teamIDString string, meta any) (string, error) {
240240
return getTeamSlugContext(ctx, teamIDString, meta)
241241
}
242242

243-
func getTeamSlugContext(ctx context.Context, teamIDString string, meta any) (string, error) {
243+
func getTeamSlugContext(ctx context.Context, teamIDString string, m any) (string, error) {
244244
// Given a string that is either a team id or team slug, return the
245245
// team slug it is referring to.
246-
client := meta.(*Owner).v3client
247-
orgName := meta.(*Owner).name
248-
orgId := meta.(*Owner).id
246+
meta := m.(*Owner)
249247

250-
teamId, parseIntErr := strconv.ParseInt(teamIDString, 10, 64)
248+
team, err := getTeam(ctx, meta, teamIDString)
249+
if err != nil {
250+
return "", err
251+
}
252+
return team.GetSlug(), nil
253+
}
254+
255+
func getTeam(ctx context.Context, meta *Owner, idOrSlug string) (*github.Team, error) {
256+
client := meta.v3client
257+
orgName := meta.name
258+
orgId := meta.id
259+
260+
teamId, parseIntErr := strconv.ParseInt(idOrSlug, 10, 64)
251261
if parseIntErr != nil {
252262
// The given id not an integer, assume it is a team slug
253-
team, _, slugErr := client.Teams.GetTeamBySlug(ctx, orgName, teamIDString)
263+
team, _, slugErr := client.Teams.GetTeamBySlug(ctx, orgName, idOrSlug)
254264
if slugErr != nil {
255-
return "", errors.New(parseIntErr.Error() + slugErr.Error())
265+
return nil, errors.New(parseIntErr.Error() + slugErr.Error())
256266
}
257-
return team.GetSlug(), nil
267+
return team, nil
258268
}
259269

260270
// The given id is an integer, assume it is a team id
261271
team, _, teamIdErr := client.Teams.GetTeamByID(ctx, orgId, teamId)
262272
if teamIdErr != nil {
263273
// There isn't a team with the given ID, assume it is a teamslug
264-
team, _, slugErr := client.Teams.GetTeamBySlug(ctx, orgName, teamIDString)
274+
team, _, slugErr := client.Teams.GetTeamBySlug(ctx, orgName, idOrSlug)
265275
if slugErr != nil {
266-
return "", errors.New(teamIdErr.Error() + slugErr.Error())
276+
return nil, errors.New(teamIdErr.Error() + slugErr.Error())
267277
}
268-
return team.GetSlug(), nil
278+
return team, nil
269279
}
270-
return team.GetSlug(), nil
280+
return team, nil
271281
}
272282

273283
// https://docs.github.com/en/actions/reference/encrypted-secrets#naming-your-secrets

0 commit comments

Comments
 (0)