UNPKG

4.15 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const chalk = require("chalk");
4const fs = require("fs");
5const path_1 = require("path");
6const logSymbols = require("log-symbols");
7const figures = require("figures");
8const elegantSpinner = require("elegant-spinner");
9const latest_version_1 = require("latest-version");
10const { promisify } = require('util');
11const readFileAsync = promisify(fs.readFile);
12const project = require('jovo-cli-core').getProject();
13const pointer = chalk.yellow(figures.pointer);
14function isDefined(x) {
15 return x !== null && x !== undefined;
16}
17exports.isDefined = isDefined;
18function 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}
39exports.getSymbol = getSymbol;
40function 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}
54exports.deleteFolderRecursive = deleteFolderRecursive;
55function addBaseCliOptions(vorpalInstance) {
56 vorpalInstance
57 .option('--debug', 'Displays additional debugging information');
58}
59exports.addBaseCliOptions = addBaseCliOptions;
60async 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}
85exports.getPackages = getPackages;
86async 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}
101exports.getPackageVersionsNpm = getPackageVersionsNpm;
102function 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}
113exports.shouldDisplayUpdateMessage = shouldDisplayUpdateMessage;
114function setUpdateMessageDisplayed() {
115 const jovoConfig = project.loadJovoUserConfig();
116 jovoConfig.timeLastUpdateMessage = new Date().toISOString();
117 project.saveJovoUserConfig(jovoConfig);
118}
119exports.setUpdateMessageDisplayed = setUpdateMessageDisplayed;
120//# sourceMappingURL=Utils.js.map
\No newline at end of file