From a674e432e5d992b40d02dc17880e95c4af920511 Mon Sep 17 00:00:00 2001 From: Alejandro Menocal Date: Mon, 13 May 2024 16:59:19 -0500 Subject: [PATCH] feat: migrate team member role too (#15) --- internal/api/api.go | 17 ++++++++++------- internal/team/team.go | 4 +++- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/internal/api/api.go b/internal/api/api.go index aceabbd..1ef2650 100644 --- a/internal/api/api.go +++ b/internal/api/api.go @@ -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)"` @@ -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 { @@ -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) @@ -345,13 +347,14 @@ 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) } } @@ -359,7 +362,7 @@ 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 diff --git a/internal/team/team.go b/internal/team/team.go index 307e486..f9557ef 100644 --- a/internal/team/team.go +++ b/internal/team/team.go @@ -25,6 +25,7 @@ type Team struct { type Member struct { Login string Email string + Role string } type Repository struct { @@ -67,6 +68,7 @@ func getTeamMemberships(team string) []Member { members = append(members, Member{ Login: member["Login"], Email: member["Email"], + Role: member["Role"], }) } @@ -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) } } }