UNPKG

8.15 kBJavaScriptView Raw
1"use strict";
2var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4 return new (P || (P = Promise))(function (resolve, reject) {
5 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8 step((generator = generator.apply(thisArg, _arguments || [])).next());
9 });
10};
11Object.defineProperty(exports, "__esModule", { value: true });
12exports.AbstractPackageManager = void 0;
13const chalk = require("chalk");
14const fs_1 = require("fs");
15const ora = require("ora");
16const path_1 = require("path");
17const ui_1 = require("../ui");
18const formatting_1 = require("../utils/formatting");
19class AbstractPackageManager {
20 constructor(runner) {
21 this.runner = runner;
22 }
23 install(directory, packageManager) {
24 return __awaiter(this, void 0, void 0, function* () {
25 const spinner = ora({
26 spinner: {
27 interval: 120,
28 frames: ['▹▹▹▹▹', '▸▹▹▹▹', '▹▸▹▹▹', '▹▹▸▹▹', '▹▹▹▸▹', '▹▹▹▹▸'],
29 },
30 text: ui_1.MESSAGES.PACKAGE_MANAGER_INSTALLATION_IN_PROGRESS,
31 });
32 spinner.start();
33 try {
34 const commandArgs = `${this.cli.install} ${this.cli.silentFlag}`;
35 const collect = true;
36 const normalizedDirectory = (0, formatting_1.normalizeToKebabOrSnakeCase)(directory);
37 yield this.runner.run(commandArgs, collect, (0, path_1.join)(process.cwd(), normalizedDirectory));
38 spinner.succeed();
39 console.info();
40 console.info(ui_1.MESSAGES.PACKAGE_MANAGER_INSTALLATION_SUCCEED(directory));
41 console.info(ui_1.MESSAGES.GET_STARTED_INFORMATION);
42 console.info();
43 console.info(chalk.gray(ui_1.MESSAGES.CHANGE_DIR_COMMAND(directory)));
44 console.info(chalk.gray(ui_1.MESSAGES.START_COMMAND(packageManager)));
45 console.info();
46 }
47 catch (_a) {
48 spinner.fail();
49 const commandArgs = this.cli.install;
50 const commandToRun = this.runner.rawFullCommand(commandArgs);
51 console.error(chalk.red(ui_1.MESSAGES.PACKAGE_MANAGER_INSTALLATION_FAILED(chalk.bold(commandToRun))));
52 }
53 });
54 }
55 version() {
56 return __awaiter(this, void 0, void 0, function* () {
57 const commandArguments = '--version';
58 const collect = true;
59 return this.runner.run(commandArguments, collect);
60 });
61 }
62 addProduction(dependencies, tag) {
63 return __awaiter(this, void 0, void 0, function* () {
64 const command = [this.cli.add, this.cli.saveFlag]
65 .filter((i) => i)
66 .join(' ');
67 const args = dependencies
68 .map((dependency) => `${dependency}@${tag}`)
69 .join(' ');
70 const spinner = ora({
71 spinner: {
72 interval: 120,
73 frames: ['▹▹▹▹▹', '▸▹▹▹▹', '▹▸▹▹▹', '▹▹▸▹▹', '▹▹▹▸▹', '▹▹▹▹▸'],
74 },
75 text: ui_1.MESSAGES.PACKAGE_MANAGER_PRODUCTION_INSTALLATION_IN_PROGRESS,
76 });
77 spinner.start();
78 try {
79 yield this.add(`${command} ${args}`);
80 spinner.succeed();
81 return true;
82 }
83 catch (_a) {
84 spinner.fail();
85 return false;
86 }
87 });
88 }
89 addDevelopment(dependencies, tag) {
90 return __awaiter(this, void 0, void 0, function* () {
91 const command = `${this.cli.add} ${this.cli.saveDevFlag}`;
92 const args = dependencies
93 .map((dependency) => `${dependency}@${tag}`)
94 .join(' ');
95 yield this.add(`${command} ${args}`);
96 });
97 }
98 add(commandArguments) {
99 return __awaiter(this, void 0, void 0, function* () {
100 const collect = true;
101 yield this.runner.run(commandArguments, collect);
102 });
103 }
104 getProduction() {
105 return __awaiter(this, void 0, void 0, function* () {
106 const packageJsonContent = yield this.readPackageJson();
107 const packageJsonDependencies = packageJsonContent.dependencies;
108 const dependencies = [];
109 for (const [name, version] of Object.entries(packageJsonDependencies)) {
110 dependencies.push({ name, version });
111 }
112 return dependencies;
113 });
114 }
115 getDevelopment() {
116 return __awaiter(this, void 0, void 0, function* () {
117 const packageJsonContent = yield this.readPackageJson();
118 const packageJsonDevDependencies = packageJsonContent.devDependencies;
119 const dependencies = [];
120 for (const [name, version] of Object.entries(packageJsonDevDependencies)) {
121 dependencies.push({ name, version });
122 }
123 return dependencies;
124 });
125 }
126 readPackageJson() {
127 return __awaiter(this, void 0, void 0, function* () {
128 return new Promise((resolve, reject) => {
129 (0, fs_1.readFile)((0, path_1.join)(process.cwd(), 'package.json'), (error, buffer) => {
130 if (error !== undefined && error !== null) {
131 reject(error);
132 }
133 else {
134 resolve(JSON.parse(buffer.toString()));
135 }
136 });
137 });
138 });
139 }
140 updateProduction(dependencies) {
141 return __awaiter(this, void 0, void 0, function* () {
142 const commandArguments = `${this.cli.update} ${dependencies.join(' ')}`;
143 yield this.update(commandArguments);
144 });
145 }
146 updateDevelopment(dependencies) {
147 return __awaiter(this, void 0, void 0, function* () {
148 const commandArguments = `${this.cli.update} ${dependencies.join(' ')}`;
149 yield this.update(commandArguments);
150 });
151 }
152 update(commandArguments) {
153 return __awaiter(this, void 0, void 0, function* () {
154 const collect = true;
155 yield this.runner.run(commandArguments, collect);
156 });
157 }
158 upgradeProduction(dependencies, tag) {
159 return __awaiter(this, void 0, void 0, function* () {
160 yield this.deleteProduction(dependencies);
161 yield this.addProduction(dependencies, tag);
162 });
163 }
164 upgradeDevelopment(dependencies, tag) {
165 return __awaiter(this, void 0, void 0, function* () {
166 yield this.deleteDevelopment(dependencies);
167 yield this.addDevelopment(dependencies, tag);
168 });
169 }
170 deleteProduction(dependencies) {
171 return __awaiter(this, void 0, void 0, function* () {
172 const command = [this.cli.remove, this.cli.saveFlag]
173 .filter((i) => i)
174 .join(' ');
175 const args = dependencies.join(' ');
176 yield this.delete(`${command} ${args}`);
177 });
178 }
179 deleteDevelopment(dependencies) {
180 return __awaiter(this, void 0, void 0, function* () {
181 const commandArguments = `${this.cli.remove} ${this.cli.saveDevFlag} ${dependencies.join(' ')}`;
182 yield this.delete(commandArguments);
183 });
184 }
185 delete(commandArguments) {
186 return __awaiter(this, void 0, void 0, function* () {
187 const collect = true;
188 yield this.runner.run(commandArguments, collect);
189 });
190 }
191}
192exports.AbstractPackageManager = AbstractPackageManager;