|
| 1 | +import { PackageManagers } from "../../constants"; |
1 | 2 |
|
2 | 3 | export class PackageManagerCommand implements ICommand {
|
3 | 4 |
|
4 | 5 | constructor(private $userSettingsService: IUserSettingsService,
|
5 | 6 | private $errors: IErrors,
|
| 7 | + private $logger: ILogger, |
6 | 8 | private $stringParameter: ICommandParameter) { }
|
7 | 9 |
|
8 | 10 | public allowedParameters: ICommandParameter[] = [this.$stringParameter];
|
9 | 11 |
|
10 |
| - public execute(args: string[]): Promise<void> { |
11 |
| - if (args[0] === 'yarn') { |
12 |
| - return this.$userSettingsService.saveSetting("packageManager", "yarn"); |
13 |
| - } else if (args[0] === 'pnpm') { |
14 |
| - return this.$userSettingsService.saveSetting("packageManager", "pnpm"); |
15 |
| - } else if (args[0] === 'npm') { |
16 |
| - return this.$userSettingsService.saveSetting("packageManager", "npm"); |
| 12 | + public async execute(args: string[]): Promise<void> { |
| 13 | + const packageManagerName = args[0]; |
| 14 | + const supportedPackageManagers = Object.keys(PackageManagers); |
| 15 | + if (supportedPackageManagers.indexOf(packageManagerName) === -1) { |
| 16 | + this.$errors.fail(`${packageManagerName} is not a valid package manager. Supported values are: ${supportedPackageManagers.join(", ")}.`); |
17 | 17 | }
|
18 |
| - return this.$errors.fail(`${args[0]} is not a valid package manager. Only yarn or npm are supported.`); |
| 18 | + |
| 19 | + await this.$userSettingsService.saveSetting("packageManager", packageManagerName); |
| 20 | + |
| 21 | + this.$logger.printMarkdown(`You've successfully set \`${packageManagerName}\` as your package manager.`); |
19 | 22 | }
|
20 | 23 | }
|
21 | 24 |
|
|
0 commit comments