import { log, note, spinner } from '@clack/prompts'; import { api } from './utils/client'; import { randomString } from './utils/random'; export async function createWorkspaces(number: number = 1) { const created = []; const s = spinner(); s.start(`Creating ${number} workspaces`); for (let i = 0; i < number; i++) { s.message(`Creating workspace ${i + 1} of ${number}`); const workspace = await api.workspaces.create({ title: `Example Workspace ${randomString(10)}`, }); created.push(workspace); } s.stop(`Created ${created.length} workspaces`); note( created.map((w) => `- ${w.title} (${w.id})`).join('\n'), 'Created workspaces', ); } export async function listWorkspaces() { const response = await api.workspaces.list({ parentWorkspaceId: process.env.FABRIC_DEV_WORKSPACE_ID, }); note(JSON.stringify(response, null, 2), 'api.workspaces.list()'); } /** * * @param id if undefined, delete the first workspace */ export async function deleteWorkspace(id?: string) { if (!id) { const toDelete = ( await api.workspaces.list({ parentWorkspaceId: process.env.FABRIC_DEV_WORKSPACE_ID, }) ).data.items?.[0]; if (!toDelete || toDelete.type !== 'delegated') { log.warn('No delegated workspaces found to delete'); return; } id = toDelete.id; } const response = await api.workspaces.remove( { force: 'true', // if force is not set, an email will be sent to the workspace owner to confirm the deletion }, { workspaceId: id, }, ); note( JSON.stringify(response, null, 2), `api.workspaces.remove(${id ?? ''})`, ); }