1"use strict";
2var __importDefault = (this && this.__importDefault) || function (mod) {
3    return (mod && mod.__esModule) ? mod : { "default": mod };
4};
5Object.defineProperty(exports, "__esModule", { value: true });
6exports.PnpmPackageManager = void 0;
7const BasePackageManager_1 = require("./BasePackageManager");
8const env_1 = __importDefault(require("../utils/env"));
9const nodeWorkspaces_1 = require("../utils/nodeWorkspaces");
10class PnpmPackageManager extends BasePackageManager_1.BasePackageManager {
11    constructor() {
12        super(...arguments);
13        this.name = 'pnpm';
14        this.bin = 'pnpm';
15        this.lockFile = nodeWorkspaces_1.PNPM_LOCK_FILE;
16    }
17    workspaceRoot() {
18        const root = (0, nodeWorkspaces_1.findPnpmWorkspaceRoot)(this.ensureCwdDefined('workspaceRoot'));
19        if (root) {
20            return new PnpmPackageManager({
21                ...this.options,
22                silent: this.silent,
23                log: this.log,
24                cwd: root,
25            });
26        }
27        return null;
28    }
29    installAsync(namesOrFlags = []) {
30        if (env_1.default.CI && !namesOrFlags.join(' ').includes('frozen-lockfile')) {
31            namesOrFlags.unshift('--no-frozen-lockfile');
32        }
33        return this.runAsync(['install', ...namesOrFlags]);
34    }
35    addAsync(namesOrFlags = []) {
36        if (!namesOrFlags.length) {
37            return this.installAsync();
38        }
39        return this.runAsync(['add', ...namesOrFlags]);
40    }
41    addDevAsync(namesOrFlags = []) {
42        if (!namesOrFlags.length) {
43            return this.installAsync();
44        }
45        return this.runAsync(['add', '--save-dev', ...namesOrFlags]);
46    }
47    addGlobalAsync(namesOrFlags = []) {
48        if (!namesOrFlags.length) {
49            return this.installAsync();
50        }
51        return this.runAsync(['add', '--global', ...namesOrFlags]);
52    }
53    removeAsync(namesOrFlags) {
54        return this.runAsync(['remove', ...namesOrFlags]);
55    }
56    removeDevAsync(namesOrFlags) {
57        return this.runAsync(['remove', '--save-dev', ...namesOrFlags]);
58    }
59    removeGlobalAsync(namesOrFlags) {
60        return this.runAsync(['remove', '--global', ...namesOrFlags]);
61    }
62}
63exports.PnpmPackageManager = PnpmPackageManager;
64//# sourceMappingURL=PnpmPackageManager.js.map