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.InfoAction = void 0;
|
13 | const chalk = require("chalk");
|
14 | const fs_1 = require("fs");
|
15 | const os_1 = require("os");
|
16 | const osName = require("os-name");
|
17 | const path_1 = require("path");
|
18 | const package_managers_1 = require("../lib/package-managers");
|
19 | const ui_1 = require("../lib/ui");
|
20 | const abstract_action_1 = require("./abstract.action");
|
21 | class InfoAction extends abstract_action_1.AbstractAction {
|
22 | handle() {
|
23 | return __awaiter(this, void 0, void 0, function* () {
|
24 | displayBanner();
|
25 | yield displaySystemInformation();
|
26 | yield displayNestInformation();
|
27 | });
|
28 | }
|
29 | }
|
30 | exports.InfoAction = InfoAction;
|
31 | const displayBanner = () => {
|
32 | console.info(chalk.red(ui_1.BANNER));
|
33 | };
|
34 | const displaySystemInformation = () => __awaiter(void 0, void 0, void 0, function* () {
|
35 | console.info(chalk.green('[System Information]'));
|
36 | console.info('OS Version :', chalk.blue(osName(os_1.platform(), os_1.release())));
|
37 | console.info('NodeJS Version :', chalk.blue(process.version));
|
38 | yield displayPackageManagerVersion();
|
39 | });
|
40 | const displayPackageManagerVersion = () => __awaiter(void 0, void 0, void 0, function* () {
|
41 | const manager = yield package_managers_1.PackageManagerFactory.find();
|
42 | try {
|
43 | const version = yield manager.version();
|
44 | console.info(`${manager.name} Version :`, chalk.blue(version), '\n');
|
45 | }
|
46 | catch (_a) {
|
47 | console.error(`${manager.name} Version :`, chalk.red('Unknown'), '\n');
|
48 | }
|
49 | });
|
50 | const displayNestInformation = () => __awaiter(void 0, void 0, void 0, function* () {
|
51 | displayCliVersion();
|
52 | console.info(chalk.green('[Nest Platform Information]'));
|
53 | try {
|
54 | const dependencies = yield readProjectPackageJsonDependencies();
|
55 | displayNestVersions(dependencies);
|
56 | }
|
57 | catch (_b) {
|
58 | console.error(chalk.red(ui_1.MESSAGES.NEST_INFORMATION_PACKAGE_MANAGER_FAILED));
|
59 | }
|
60 | });
|
61 | const displayCliVersion = () => {
|
62 | console.info(chalk.green('[Nest CLI]'));
|
63 | console.info('Nest CLI Version :', chalk.blue(require('../package.json').version), '\n');
|
64 | };
|
65 | const readProjectPackageJsonDependencies = () => __awaiter(void 0, void 0, void 0, function* () {
|
66 | return new Promise((resolve, reject) => {
|
67 | fs_1.readFile(path_1.join(process.cwd(), 'package.json'), (error, buffer) => {
|
68 | if (error !== undefined && error !== null) {
|
69 | reject(error);
|
70 | }
|
71 | else {
|
72 | resolve(JSON.parse(buffer.toString()).dependencies);
|
73 | }
|
74 | });
|
75 | });
|
76 | });
|
77 | const displayNestVersions = (dependencies) => {
|
78 | buildNestVersionsMessage(dependencies).forEach((dependency) => console.info(dependency.name, chalk.blue(dependency.value)));
|
79 | };
|
80 | const buildNestVersionsMessage = (dependencies) => {
|
81 | const nestDependencies = collectNestDependencies(dependencies);
|
82 | return format(nestDependencies);
|
83 | };
|
84 | const collectNestDependencies = (dependencies) => {
|
85 | const nestDependencies = [];
|
86 | Object.keys(dependencies).forEach((key) => {
|
87 | if (key.indexOf('@nestjs') > -1) {
|
88 | nestDependencies.push({
|
89 | name: `${key.replace(/@nestjs\//, '')} version`,
|
90 | value: dependencies[key],
|
91 | });
|
92 | }
|
93 | });
|
94 | return nestDependencies;
|
95 | };
|
96 | const format = (dependencies) => {
|
97 | const sorted = dependencies.sort((dependencyA, dependencyB) => dependencyB.name.length - dependencyA.name.length);
|
98 | const length = sorted[0].name.length;
|
99 | sorted.forEach((dependency) => {
|
100 | if (dependency.name.length < length) {
|
101 | dependency.name = rightPad(dependency.name, length);
|
102 | }
|
103 | dependency.name = dependency.name.concat(' :');
|
104 | dependency.value = dependency.value.replace(/(\^|\~)/, '');
|
105 | });
|
106 | return sorted;
|
107 | };
|
108 | const rightPad = (name, length) => {
|
109 | while (name.length < length) {
|
110 | name = name.concat(' ');
|
111 | }
|
112 | return name;
|
113 | };
|