| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- /**
- * @license
- * Copyright Google Inc. All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
- const core_1 = require("@angular-devkit/core");
- const child_process_1 = require("child_process");
- const path = require("path");
- const rxjs_1 = require("rxjs");
- const packageManagers = {
- 'npm': {
- quietArgument: '--quiet',
- commands: {
- installAll: 'install',
- installPackage: 'install',
- },
- },
- 'cnpm': {
- commands: {
- installAll: 'install',
- installPackage: 'install',
- },
- },
- 'yarn': {
- quietArgument: '--silent',
- commands: {
- installPackage: 'add',
- },
- },
- 'pnpm': {
- quietArgument: '--silent',
- commands: {
- installAll: 'install',
- installPackage: 'install',
- },
- },
- };
- class UnknownPackageManagerException extends core_1.BaseException {
- constructor(name) {
- super(`Unknown package manager "${name}".`);
- }
- }
- exports.UnknownPackageManagerException = UnknownPackageManagerException;
- function default_1(factoryOptions = {}) {
- const packageManagerName = factoryOptions.packageManager || 'npm';
- const packageManagerProfile = packageManagers[packageManagerName];
- if (!packageManagerProfile) {
- throw new UnknownPackageManagerException(packageManagerName);
- }
- const rootDirectory = factoryOptions.rootDirectory || process.cwd();
- return (options) => {
- let taskPackageManagerProfile = packageManagerProfile;
- let taskPackageManagerName = packageManagerName;
- if (factoryOptions.allowPackageManagerOverride && options.packageManager) {
- taskPackageManagerProfile = packageManagers[options.packageManager];
- if (!taskPackageManagerProfile) {
- throw new UnknownPackageManagerException(options.packageManager);
- }
- taskPackageManagerName = options.packageManager;
- }
- const outputStream = process.stdout;
- const errorStream = process.stderr;
- const spawnOptions = {
- stdio: [process.stdin, outputStream, errorStream],
- shell: true,
- cwd: path.join(rootDirectory, options.workingDirectory || ''),
- };
- const args = [];
- if (options.packageName) {
- if (options.command === 'install') {
- args.push(taskPackageManagerProfile.commands.installPackage);
- }
- args.push(options.packageName);
- }
- else if (options.command === 'install' && taskPackageManagerProfile.commands.installAll) {
- args.push(taskPackageManagerProfile.commands.installAll);
- }
- if (options.quiet && taskPackageManagerProfile.quietArgument) {
- args.push(taskPackageManagerProfile.quietArgument);
- }
- return new rxjs_1.Observable(obs => {
- child_process_1.spawn(taskPackageManagerName, args, spawnOptions)
- .on('close', (code) => {
- if (code === 0) {
- obs.next();
- obs.complete();
- }
- else {
- const message = 'Package install failed, see above.';
- obs.error(new Error(message));
- }
- });
- });
- };
- }
- exports.default = default_1;
|