Skip to content

Commit

Permalink
Allow specifying additional team memberships when repo gets created.
Browse files Browse the repository at this point in the history
  • Loading branch information
Gerrit91 committed Jan 9, 2024
1 parent 66162ad commit 6cf558e
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 7 deletions.
6 changes: 5 additions & 1 deletion pkg/config/actions.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,11 @@ type WebhookAction struct {
Args map[string]any `json:"args" description:"action configuration"`
}
type RepositoryMaintainersConfig struct {
Suffix *string `mapstructure:"suffix" description:"suffix for maintainers group"`
Suffix *string `mapstructure:"suffix" description:"suffix for maintainers group"`
AdditionalMemberships []struct {
TeamSlug string `mapstructure:"team" description:"the slug of the team"`
Permission string `mapstructure:"permission" description:"the permission for the team, must be one of "`
} `mapstructure:"additional-teams" description:"adds additional teams to this repository"`
}

type DocsPreviewCommentConfig struct {
Expand Down
41 changes: 35 additions & 6 deletions pkg/webhooks/github/actions/repository_maintainers.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,17 @@ import (
)

type repositoryMaintainers struct {
logger *zap.SugaredLogger
client *clients.Github
suffix string
logger *zap.SugaredLogger
client *clients.Github
suffix string
additionalTeams repositoryAdditionalMemberships
}

type repositoryAdditionalMemberships []repositoryAdditionalMembership

type repositoryAdditionalMembership struct {
teamSlug string
permission string
}

type repositoryMaintainersParams struct {
Expand All @@ -38,10 +46,20 @@ func newCreateRepositoryMaintainers(logger *zap.SugaredLogger, client *clients.G
suffix = *typedConfig.Suffix
}

var additionalTeams repositoryAdditionalMemberships
for _, team := range typedConfig.AdditionalMemberships {
team := team
additionalTeams = append(additionalTeams, repositoryAdditionalMembership{
teamSlug: team.TeamSlug,
permission: team.Permission,
})
}

return &repositoryMaintainers{
logger: logger,
client: client,
suffix: suffix,
logger: logger,
client: client,
suffix: suffix,
additionalTeams: additionalTeams,
}, nil
}

Expand All @@ -67,5 +85,16 @@ func (r *repositoryMaintainers) CreateRepositoryMaintainers(ctx context.Context,
r.logger.Infow("created new maintainers team for repository", "repository", p.RepositoryName, "team", name)
}

for _, additionalTeam := range r.additionalTeams {
additionalTeam := additionalTeam

_, err := r.client.GetV3Client().Teams.AddTeamRepoBySlug(ctx, r.client.Organization(), additionalTeam.teamSlug, r.client.Organization(), p.RepositoryName, &v3.TeamAddTeamRepoOptions{
Permission: additionalTeam.permission,
})
if err != nil {
return fmt.Errorf("error adding additional team membership: %w", err)
}
}

return nil
}

0 comments on commit 6cf558e

Please sign in to comment.