1 | "use strict";
|
2 | var __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 | };
|
11 | Object.defineProperty(exports, "__esModule", { value: true });
|
12 | exports.AbstractPackageManager = void 0;
|
13 | const chalk = require("chalk");
|
14 | const fs_1 = require("fs");
|
15 | const ora = require("ora");
|
16 | const path_1 = require("path");
|
17 | const ui_1 = require("../ui");
|
18 | const formatting_1 = require("../utils/formatting");
|
19 | class 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 | }
|
192 | exports.AbstractPackageManager = AbstractPackageManager;
|