UNPKG

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