|
| 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(`Please ensure you have the directory containing \`${packageManagerName}\` executable available in your PATH.`); |
| 22 | + this.$logger.printMarkdown(`You've successfully set \`${packageManagerName}\` as your package manager.`); |
19 | 23 | } |
20 | 24 | } |
21 | 25 |
|
|
0 commit comments