UNPKG

@teambit/workspace

Version:
34 lines (30 loc) 1.38 kB
import type { Command } from '@teambit/cli'; import chalk from 'chalk'; import type { Workspace } from '../workspace'; import { installAfterEnvChangesMsg } from './envs-set.cmd'; export class EnvsReplaceCmd implements Command { name = 'replace <current-env> <new-env>'; description = 'replace an existing env with another env for all components using the old env'; options = []; group = 'component-config'; arguments = [ { name: 'current-env', description: 'the component id of the env to be replaced' }, { name: 'new-env', description: 'the component id of the new env' }, ]; examples = [ { cmd: 'replace teambit.harmony/aspect teambit.harmony/node', description: "components configured to use the 'aspect' env will be configured to use the 'node' env, instead", }, ]; constructor(private workspace: Workspace) {} async report([oldEnv, env]: [string, string]) { const envId = await this.workspace.resolveComponentId(env); const components = await this.workspace.getComponentsUsingEnv(oldEnv, true, true); const componentIds = components.map((comp) => comp.id); await this.workspace.setEnvToComponents(envId, componentIds); return `added ${chalk.bold(envId.toString())} env to the following component(s): ${componentIds.map((compId) => compId.toString()).join('\n')}\n ${installAfterEnvChangesMsg}`; } }