-
-
Notifications
You must be signed in to change notification settings - Fork 197
/
Copy pathpackage-manager-set.ts
41 lines (35 loc) · 1.33 KB
/
package-manager-set.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import { PackageManagers } from "../../constants";
import { ICommand, ICommandParameter } from "../definitions/commands";
import { IUserSettingsService, IErrors } from "../declarations";
import { injector } from "../yok";
export class PackageManagerCommand implements ICommand {
constructor(
private $userSettingsService: IUserSettingsService,
private $errors: IErrors,
private $logger: ILogger,
private $stringParameter: ICommandParameter
) {}
public allowedParameters: ICommandParameter[] = [this.$stringParameter];
public async execute(args: string[]): Promise<void> {
const packageManagerName = args[0];
const supportedPackageManagers = Object.keys(PackageManagers);
if (supportedPackageManagers.indexOf(packageManagerName) === -1) {
this.$errors.fail(
`${packageManagerName} is not a valid package manager. Supported values are: ${supportedPackageManagers.join(
", "
)}.`
);
}
await this.$userSettingsService.saveSetting(
"packageManager",
packageManagerName
);
this.$logger.printMarkdown(
`Please ensure you have the directory containing \`${packageManagerName}\` executable available in your PATH.`
);
this.$logger.printMarkdown(
`You've successfully set \`${packageManagerName}\` as your package manager.`
);
}
}
injector.registerCommand("package-manager|set", PackageManagerCommand);