Skip to content

Commit 4aac08d

Browse files
committed
chore: improve stringToWorkspaceRole function
1 parent 9e476f2 commit 4aac08d

File tree

1 file changed

+15
-16
lines changed

1 file changed

+15
-16
lines changed

cli/sharing.go

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,11 @@ func (r *RootCmd) sharing() *serpent.Command {
3838
func (r *RootCmd) shareWorkspace(orgContext *OrganizationContext) *serpent.Command {
3939
var (
4040
// Username regex taken from codersdk/name.go
41-
userAndGroupRegex = regexp.MustCompile(`(^[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*)+(?::([A-Za-z0-9-]+))?`)
42-
client = new(codersdk.Client)
43-
users []string
44-
groups []string
45-
formatter = cliui.NewOutputFormatter(
41+
nameRoleRegex = regexp.MustCompile(`(^[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*)+(?::([A-Za-z0-9-]+))?`)
42+
client = new(codersdk.Client)
43+
users []string
44+
groups []string
45+
formatter = cliui.NewOutputFormatter(
4646
cliui.TableFormat(
4747
[]workspaceShareRow{}, []string{"User", "Group", "Role"}),
4848
cliui.JSONFormat(),
@@ -92,7 +92,7 @@ func (r *RootCmd) shareWorkspace(orgContext *OrganizationContext) *serpent.Comma
9292
}
9393

9494
for _, user := range users {
95-
userAndRole := userAndGroupRegex.FindStringSubmatch(user)
95+
userAndRole := nameRoleRegex.FindStringSubmatch(user)
9696
username := userAndRole[1]
9797
role := userAndRole[2]
9898

@@ -126,7 +126,7 @@ func (r *RootCmd) shareWorkspace(orgContext *OrganizationContext) *serpent.Comma
126126
}
127127

128128
for _, group := range groups {
129-
groupAndRole := userAndGroupRegex.FindStringSubmatch(group)
129+
groupAndRole := nameRoleRegex.FindStringSubmatch(group)
130130
groupName := groupAndRole[1]
131131
role := groupAndRole[2]
132132

@@ -203,14 +203,13 @@ func (r *RootCmd) shareWorkspace(orgContext *OrganizationContext) *serpent.Comma
203203
}
204204

205205
func stringToWorkspaceRole(role string) (codersdk.WorkspaceRole, error) {
206-
if role != "" && role != string(codersdk.WorkspaceRoleAdmin) && role != string(codersdk.WorkspaceRoleUse) {
207-
return "", xerrors.Errorf("invalid role %s. Expected %s, or %s", role, codersdk.WorkspaceRoleAdmin, codersdk.WorkspaceRoleUse)
206+
switch role {
207+
case "", string(codersdk.WorkspaceRoleUse):
208+
return codersdk.WorkspaceRoleUse, nil
209+
case string(codersdk.WorkspaceRoleAdmin):
210+
return codersdk.WorkspaceRoleAdmin, nil
211+
default:
212+
return "", xerrors.Errorf("invalid role %q: expected %q or %q",
213+
role, codersdk.WorkspaceRoleAdmin, codersdk.WorkspaceRoleUse)
208214
}
209-
210-
workspaceRole := codersdk.WorkspaceRoleUse
211-
if role == string(codersdk.WorkspaceRoleAdmin) {
212-
workspaceRole = codersdk.WorkspaceRoleAdmin
213-
}
214-
215-
return workspaceRole, nil
216215
}

0 commit comments

Comments
 (0)