1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.JsPackageManagerFactory = void 0;
|
7 |
|
8 | var _crossSpawn = require("cross-spawn");
|
9 |
|
10 | var _findUp = require("find-up");
|
11 |
|
12 | var _NPMProxy = require("./NPMProxy");
|
13 |
|
14 | var _Yarn2Proxy = require("./Yarn2Proxy");
|
15 |
|
16 | var _Yarn1Proxy = require("./Yarn1Proxy");
|
17 |
|
18 | class JsPackageManagerFactory {
|
19 | static getPackageManager(forceNpmUsage = false) {
|
20 | if (forceNpmUsage) {
|
21 | return new _NPMProxy.NPMProxy();
|
22 | }
|
23 |
|
24 | const yarnVersion = getYarnVersion();
|
25 | const hasYarnLockFile = (0, _findUp.sync)('yarn.lock');
|
26 | const hasNPMCommand = hasNPM();
|
27 |
|
28 | if (yarnVersion && (hasYarnLockFile || !hasNPMCommand)) {
|
29 | return yarnVersion === 1 ? new _Yarn1Proxy.Yarn1Proxy() : new _Yarn2Proxy.Yarn2Proxy();
|
30 | }
|
31 |
|
32 | if (hasNPMCommand) {
|
33 | return new _NPMProxy.NPMProxy();
|
34 | }
|
35 |
|
36 | throw new Error('Unable to find a usable package manager within NPM, Yarn and Yarn 2');
|
37 | }
|
38 |
|
39 | }
|
40 |
|
41 | exports.JsPackageManagerFactory = JsPackageManagerFactory;
|
42 |
|
43 | function hasNPM() {
|
44 | const npmVersionCommand = (0, _crossSpawn.sync)('npm', ['--version']);
|
45 | return npmVersionCommand.status === 0;
|
46 | }
|
47 |
|
48 | function getYarnVersion() {
|
49 | const yarnVersionCommand = (0, _crossSpawn.sync)('yarn', ['--version']);
|
50 |
|
51 | if (yarnVersionCommand.status !== 0) {
|
52 | return undefined;
|
53 | }
|
54 |
|
55 | const yarnVersion = yarnVersionCommand.output.toString().replace(/,/g, '').replace(/"/g, '');
|
56 | return /^1\.+/.test(yarnVersion) ? 1 : 2;
|
57 | } |
\ | No newline at end of file |