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