diff --git a/pkg/members/members.go b/pkg/members/members.go index 0993b6fddfe34cf7f257e6b70433893485a60dba..4e153058c5004bdb13dd5a0b548abdf311ac49c8 100644 --- a/pkg/members/members.go +++ b/pkg/members/members.go @@ -24,12 +24,32 @@ func (r Role) IsPrivileged() bool { } func (r Role) Format(s fmt.State, verb rune) { + s.Write([]byte(r.String())) +} + +func (r Role) String() string { switch r { + case NotMember: + return "not member" + case RoleMember: + return "member" case RoleOwner: - fmt.Fprint(s, "owner") + return "owner" case RoleAdmin: - fmt.Fprint(s, "admin") - case RoleMember: - fmt.Fprint(s, "member") + return "admin" + } + return fmt.Sprintf("%d", r) +} + +func RoleFromString(r string) Role { + switch r { + case RoleMember.String(): + return RoleMember + case RoleOwner.String(): + return RoleOwner + case RoleAdmin.String(): + return RoleAdmin + default: + return NotMember } }