UNPKG

4.67 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.InfoAction = void 0;
13const chalk = require("chalk");
14const fs_1 = require("fs");
15const os_1 = require("os");
16const osName = require("os-name");
17const path_1 = require("path");
18const package_managers_1 = require("../lib/package-managers");
19const ui_1 = require("../lib/ui");
20const abstract_action_1 = require("./abstract.action");
21class 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}
30exports.InfoAction = InfoAction;
31const displayBanner = () => {
32 console.info(chalk.red(ui_1.BANNER));
33};
34const 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});
40const 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});
50const 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});
61const displayCliVersion = () => {
62 console.info(chalk.green('[Nest CLI]'));
63 console.info('Nest CLI Version :', chalk.blue(require('../package.json').version), '\n');
64};
65const 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});
77const displayNestVersions = (dependencies) => {
78 buildNestVersionsMessage(dependencies).forEach((dependency) => console.info(dependency.name, chalk.blue(dependency.value)));
79};
80const buildNestVersionsMessage = (dependencies) => {
81 const nestDependencies = collectNestDependencies(dependencies);
82 return format(nestDependencies);
83};
84const 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};
96const 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};
108const rightPad = (name, length) => {
109 while (name.length < length) {
110 name = name.concat(' ');
111 }
112 return name;
113};