(orgContext *OrganizationContext)
| 95 | } |
| 96 | |
| 97 | func (r *RootCmd) assignOrganizationRoles(orgContext *OrganizationContext) *serpent.Command { |
| 98 | cmd := &serpent.Command{ |
| 99 | Use: "edit-roles <username | user_id> [roles...]", |
| 100 | Aliases: []string{"edit-role"}, |
| 101 | Short: "Edit organization member's roles", |
| 102 | Handler: func(inv *serpent.Invocation) error { |
| 103 | client, err := r.InitClient(inv) |
| 104 | if err != nil { |
| 105 | return err |
| 106 | } |
| 107 | ctx := inv.Context() |
| 108 | organization, err := orgContext.Selected(inv, client) |
| 109 | if err != nil { |
| 110 | return err |
| 111 | } |
| 112 | |
| 113 | if len(inv.Args) < 1 { |
| 114 | return xerrors.Errorf("user_id or username is required as the first argument") |
| 115 | } |
| 116 | userIdentifier := inv.Args[0] |
| 117 | roles := inv.Args[1:] |
| 118 | |
| 119 | member, err := client.UpdateOrganizationMemberRoles(ctx, organization.ID, userIdentifier, codersdk.UpdateRoles{ |
| 120 | Roles: roles, |
| 121 | }) |
| 122 | if err != nil { |
| 123 | return xerrors.Errorf("update member roles: %w", err) |
| 124 | } |
| 125 | |
| 126 | updatedTo := make([]string, 0) |
| 127 | for _, role := range member.Roles { |
| 128 | updatedTo = append(updatedTo, role.String()) |
| 129 | } |
| 130 | |
| 131 | _, _ = fmt.Fprintf(inv.Stdout, "Member roles updated to [%s]\n", strings.Join(updatedTo, ", ")) |
| 132 | return nil |
| 133 | }, |
| 134 | } |
| 135 | |
| 136 | return cmd |
| 137 | } |
| 138 | |
| 139 | func (r *RootCmd) listOrganizationMembers(orgContext *OrganizationContext) *serpent.Command { |
| 140 | formatter := cliui.NewOutputFormatter( |
no test coverage detected