Skip to content

Commit

Permalink
feat: migrate team member role too (#15)
Browse files Browse the repository at this point in the history
  • Loading branch information
amenocal authored May 13, 2024
1 parent f89b6e3 commit a674e43
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 8 deletions.
17 changes: 10 additions & 7 deletions internal/api/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,7 @@ func GetTeamMemberships(team string) []map[string]string {
Login string
Email string
}
Role string
}
} `graphql:"members(first: $first, after: $after)"`
} `graphql:"team(slug: $slug)"`
Expand All @@ -146,7 +147,7 @@ func GetTeamMemberships(team string) []map[string]string {
}

for _, member := range query.Organization.Team.Members.Edges {
members = append(members, map[string]string{"Login": member.Node.Login, "Email": member.Node.Email})
members = append(members, map[string]string{"Login": member.Node.Login, "Email": member.Node.Email, "Role": member.Role})
}

if !query.Organization.Team.Members.PageInfo.HasNextPage {
Expand Down Expand Up @@ -312,8 +313,9 @@ func CreateTeam(name string, description string, privacy string, parentTeamName
parentTeamID, err := GetTeamId(parentTeamName)
if err != nil {
fmt.Println(err)
} else {
t.ParentTeamID = &parentTeamID
}
t.ParentTeamID = &parentTeamID
}

_, _, err := client.Teams.CreateTeam(context.Background(), viper.Get("TARGET_ORGANIZATION").(string), t)
Expand Down Expand Up @@ -345,21 +347,22 @@ func AddTeamRepository(slug string, repo string, permission string) {
}
}

func AddTeamMember(slug string, member string) {
func AddTeamMember(slug string, member string, role string) {
client := newGHRestClient(viper.GetString("TARGET_TOKEN"))

fmt.Println("Adding member to team: ", slug, member)
_, _, err := client.Teams.AddTeamMembershipBySlug(context.Background(), viper.Get("TARGET_ORGANIZATION").(string), slug, member, &github.TeamAddTeamMembershipOptions{Role: "member"})
role = strings.ToLower(role) // lowercase to match github api
fmt.Println("Adding member to team: ", slug, member, role)
_, _, err := client.Teams.AddTeamMembershipBySlug(context.Background(), viper.Get("TARGET_ORGANIZATION").(string), slug, member, &github.TeamAddTeamMembershipOptions{Role: role})
if err != nil {
fmt.Println("Error adding member to team: ", slug, member)
fmt.Println("Error adding member to team: ", slug, member, err)
}
}

func GetTeamId(TeamName string) (int64, error) {
client := newGHRestClient(viper.GetString("TARGET_TOKEN"))
team, _, err := client.Teams.GetTeamBySlug(context.Background(), viper.Get("TARGET_ORGANIZATION").(string), TeamName)
if err != nil {
fmt.Println("Error getting team ID: ", TeamName)
fmt.Println("Error getting parent team ID: ", TeamName)
return 0, err
}
return *team.ID, nil
Expand Down
4 changes: 3 additions & 1 deletion internal/team/team.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ type Team struct {
type Member struct {
Login string
Email string
Role string
}

type Repository struct {
Expand Down Expand Up @@ -67,6 +68,7 @@ func getTeamMemberships(team string) []Member {
members = append(members, Member{
Login: member["Login"],
Email: member["Email"],
Role: member["Role"],
})
}

Expand Down Expand Up @@ -113,7 +115,7 @@ func (t Team) CreateTeam() {

if userSync != "disable" {
for _, member := range t.Members {
api.AddTeamMember(t.Slug, member.Login)
api.AddTeamMember(t.Slug, member.Login, member.Role)
}
}
}
Expand Down

0 comments on commit a674e43

Please sign in to comment.