UNPKG

@keyshade/cli

Version:
69 lines (59 loc) 1.69 kB
import BaseCommand from '@/commands/base.command' import { type CommandActionData, type CommandArgument, type CommandOption } from '@/types/command/command.types' import { Logger } from '@/util/logger' import ControllerInstance from '@/util/controller-instance' import { PAGINATION_OPTION } from '@/util/pagination-options' export default class GetAllMembersOfWorkspaceCommand extends BaseCommand { getName(): string { return 'list' } getDescription(): string { return 'List all members of a workspace' } getArguments(): CommandArgument[] { return [ { name: '<Workspace Slug>', description: 'Slug of the workspace whose roles you want.' } ] } getOptions(): CommandOption[] { return PAGINATION_OPTION } canMakeHttpRequests(): boolean { return true } async action({ args, options }: CommandActionData): Promise<void> { Logger.info("Fetching workspace's members...") const [workspaceSlug] = args const { data, error, success } = await ControllerInstance.getInstance().workspaceMembershipController.getMembers( { workspaceSlug, ...options }, this.headers ) if (success) { Logger.info('Workspace Members fetched successfully:') const members = data.items if (members.length > 0) { Logger.info('Email\tRole') members.forEach((member) => { Logger.info( `- ${member.user.email} (${member.roles.map((role) => role.role.name).join(', ')})` ) }) } else { Logger.info('No members found') } } else { this.logError(error) } } }