1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const chalk = require("chalk");
|
4 | const fs = require("fs");
|
5 | const path_1 = require("path");
|
6 | const logSymbols = require("log-symbols");
|
7 | const figures = require("figures");
|
8 | const elegantSpinner = require("elegant-spinner");
|
9 | const latest_version_1 = require("latest-version");
|
10 | const { promisify } = require('util');
|
11 | const readFileAsync = promisify(fs.readFile);
|
12 | const project = require('jovo-cli-core').getProject();
|
13 | const pointer = chalk.yellow(figures.pointer);
|
14 | function isDefined(x) {
|
15 | return x !== null && x !== undefined;
|
16 | }
|
17 | exports.isDefined = isDefined;
|
18 | function getSymbol(task, options) {
|
19 | if (!task.spinner) {
|
20 | task.spinner = elegantSpinner();
|
21 | }
|
22 | if (task.isPending()) {
|
23 | return options.showSubtasks !== false && task.subtasks.length > 0 ?
|
24 | pointer
|
25 | :
|
26 | chalk.yellow(task.spinner());
|
27 | }
|
28 | if (task.isCompleted()) {
|
29 | return logSymbols.success;
|
30 | }
|
31 | if (task.hasFailed()) {
|
32 | return task.subtasks.length > 0 ? pointer : logSymbols.error;
|
33 | }
|
34 | if (task.isSkipped()) {
|
35 | return logSymbols.success;
|
36 | }
|
37 | return ' ';
|
38 | }
|
39 | exports.getSymbol = getSymbol;
|
40 | function deleteFolderRecursive(filepath) {
|
41 | if (fs.existsSync(filepath)) {
|
42 | fs.readdirSync(filepath).forEach((file, index) => {
|
43 | const curPath = path_1.join(filepath, file);
|
44 | if (fs.lstatSync(curPath).isDirectory()) {
|
45 | exports.deleteFolderRecursive(curPath);
|
46 | }
|
47 | else {
|
48 | fs.unlinkSync(curPath);
|
49 | }
|
50 | });
|
51 | fs.rmdirSync(filepath);
|
52 | }
|
53 | }
|
54 | exports.deleteFolderRecursive = deleteFolderRecursive;
|
55 | function addBaseCliOptions(vorpalInstance) {
|
56 | vorpalInstance
|
57 | .option('--debug', 'Displays additional debugging information');
|
58 | }
|
59 | exports.addBaseCliOptions = addBaseCliOptions;
|
60 | async function getPackages(packageRegex) {
|
61 | const projectPath = project.getProjectPath();
|
62 | const packagePath = path_1.join(projectPath, 'package-lock.json');
|
63 | let content;
|
64 | try {
|
65 | content = await readFileAsync(packagePath);
|
66 | }
|
67 | catch (e) {
|
68 | return {};
|
69 | }
|
70 | const packageFile = JSON.parse(content);
|
71 | const packages = {};
|
72 | const versionNumberRegex = /^\d{1,2}\.\d{1,2}\.\d{1,2}$/;
|
73 | Object.keys(packageFile.dependencies).forEach((packageName) => {
|
74 | const packageObj = packageFile.dependencies[packageName];
|
75 | if (packageRegex && !packageName.match(packageRegex)) {
|
76 | return;
|
77 | }
|
78 | if (!packageObj.version.match(versionNumberRegex)) {
|
79 | return;
|
80 | }
|
81 | packages[packageName] = packageFile.dependencies[packageName].version;
|
82 | });
|
83 | return packages;
|
84 | }
|
85 | exports.getPackages = getPackages;
|
86 | async function getPackageVersionsNpm(packageRegex) {
|
87 | const packages = await getPackages(packageRegex);
|
88 | const queryPromises = {};
|
89 | for (const packageName of Object.keys(packages)) {
|
90 | queryPromises[packageName] = latest_version_1.default(packageName);
|
91 | }
|
92 | const returnPackages = {};
|
93 | for (const packageName of Object.keys(packages)) {
|
94 | returnPackages[packageName] = {
|
95 | local: packages[packageName],
|
96 | npm: await queryPromises[packageName],
|
97 | };
|
98 | }
|
99 | return returnPackages;
|
100 | }
|
101 | exports.getPackageVersionsNpm = getPackageVersionsNpm;
|
102 | function shouldDisplayUpdateMessage(hours) {
|
103 | const jovoConfig = project.loadJovoUserConfig();
|
104 | if (!jovoConfig.hasOwnProperty('timeLastUpdateMessage')) {
|
105 | return true;
|
106 | }
|
107 | const nextDisplayTime = new Date(jovoConfig.timeLastUpdateMessage).getTime() + (1000 * 60 * 60 * hours);
|
108 | if (new Date().getTime() < nextDisplayTime) {
|
109 | return false;
|
110 | }
|
111 | return true;
|
112 | }
|
113 | exports.shouldDisplayUpdateMessage = shouldDisplayUpdateMessage;
|
114 | function setUpdateMessageDisplayed() {
|
115 | const jovoConfig = project.loadJovoUserConfig();
|
116 | jovoConfig.timeLastUpdateMessage = new Date().toISOString();
|
117 | project.saveJovoUserConfig(jovoConfig);
|
118 | }
|
119 | exports.setUpdateMessageDisplayed = setUpdateMessageDisplayed;
|
120 |
|
\ | No newline at end of file |