@sap-ux/environment-check 0.16.86 → 0.17.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/archive/index.js +48 -61
- package/dist/archive/index.js.map +1 -1
- package/dist/checks/destination.js +64 -78
- package/dist/checks/destination.js.map +1 -1
- package/dist/checks/endpoint.js +40 -50
- package/dist/checks/endpoint.js.map +1 -1
- package/dist/checks/environment.js +132 -149
- package/dist/checks/environment.js.map +1 -1
- package/dist/checks/get-installed.js +116 -142
- package/dist/checks/get-installed.js.map +1 -1
- package/dist/checks/service-checks.js +120 -142
- package/dist/checks/service-checks.js.map +1 -1
- package/dist/checks/stored-system.js +60 -73
- package/dist/checks/stored-system.js.map +1 -1
- package/dist/checks/workspace.js +53 -69
- package/dist/checks/workspace.js.map +1 -1
- package/dist/cli/index.js +74 -91
- package/dist/cli/index.js.map +1 -1
- package/dist/i18n.js +11 -22
- package/dist/i18n.js.map +1 -1
- package/dist/output/markdown.js +9 -10
- package/dist/output/markdown.js.map +1 -1
- package/dist/output/string.js +4 -4
- package/dist/output/string.js.map +1 -1
- package/dist/output/zip.js +1 -2
- package/dist/output/zip.js.map +1 -1
- package/package.json +8 -8
|
@@ -1,13 +1,4 @@
|
|
|
1
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
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.getProcessVersions = exports.getFioriGenVersion = exports.getCFCliToolVersion = exports.getInstalledExtensions = void 0;
|
|
13
4
|
const fs_1 = require("fs");
|
|
@@ -36,62 +27,55 @@ function isExtensionRequired(vsixFile) {
|
|
|
36
27
|
*
|
|
37
28
|
* @returns list of extension ids and versions
|
|
38
29
|
*/
|
|
39
|
-
function getExtensionsBAS() {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
return versions;
|
|
54
|
-
});
|
|
30
|
+
async function getExtensionsBAS() {
|
|
31
|
+
const files = (0, fs_1.readdirSync)(pluginsDirBAS);
|
|
32
|
+
const versions = files
|
|
33
|
+
.filter((vsixFile) => isExtensionRequired(vsixFile))
|
|
34
|
+
.reduce((returnObject, current) => {
|
|
35
|
+
const idVersion = current.split('.vsix')[0];
|
|
36
|
+
const firstNumeric = idVersion.search(/-\d/);
|
|
37
|
+
const [id, version] = [idVersion.slice(0, firstNumeric), idVersion.slice(firstNumeric + 1)];
|
|
38
|
+
returnObject[id] = {
|
|
39
|
+
version
|
|
40
|
+
};
|
|
41
|
+
return returnObject;
|
|
42
|
+
}, {});
|
|
43
|
+
return versions;
|
|
55
44
|
}
|
|
56
45
|
/**
|
|
57
46
|
* Internal function to check if the module is being ran in VSCode Insiders.
|
|
58
47
|
*
|
|
59
48
|
* @returns boolean - if ran in insiders
|
|
60
49
|
*/
|
|
61
|
-
function checkIsInsiders() {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
}
|
|
69
|
-
return isInsiders;
|
|
70
|
-
});
|
|
50
|
+
async function checkIsInsiders() {
|
|
51
|
+
let isInsiders = false;
|
|
52
|
+
const processEnvProp = process.env['VSCODE_IPC_HOOK'] ?? process.env['TERM_PROGRAM_VERSION'];
|
|
53
|
+
if (processEnvProp?.includes('insider')) {
|
|
54
|
+
isInsiders = true;
|
|
55
|
+
}
|
|
56
|
+
return isInsiders;
|
|
71
57
|
}
|
|
72
58
|
/**
|
|
73
59
|
* Reads the list of extensions installed in vscode.
|
|
74
60
|
*
|
|
75
61
|
* @returns list of extension ids and versions
|
|
76
62
|
*/
|
|
77
|
-
function getExtensionsVSCode() {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
return versions;
|
|
94
|
-
});
|
|
63
|
+
async function getExtensionsVSCode() {
|
|
64
|
+
const isInsiders = await checkIsInsiders();
|
|
65
|
+
const output = await (0, command_1.spawnCommand)(isInsiders ? 'code-insiders' : 'code', ['--list-extensions', '--show-versions']);
|
|
66
|
+
const versions = output
|
|
67
|
+
.split('\n')
|
|
68
|
+
.filter((ext) => ext.startsWith('SAP'))
|
|
69
|
+
.reduce((returnObject, current) => {
|
|
70
|
+
const index = current.indexOf('.');
|
|
71
|
+
const idVersion = current.slice(index + 1);
|
|
72
|
+
const [id, version] = idVersion.split('@');
|
|
73
|
+
returnObject[id] = {
|
|
74
|
+
version
|
|
75
|
+
};
|
|
76
|
+
return returnObject;
|
|
77
|
+
}, {});
|
|
78
|
+
return versions;
|
|
95
79
|
}
|
|
96
80
|
/**
|
|
97
81
|
* Reads the list of extensions installed and returns the id and version.
|
|
@@ -100,33 +84,31 @@ function getExtensionsVSCode() {
|
|
|
100
84
|
* @param logger - logger to report errors
|
|
101
85
|
* @returns list of extension ids and versions
|
|
102
86
|
*/
|
|
103
|
-
function getInstalledExtensions(extensions, logger) {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
versions = yield getExtensionsBAS();
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
versions = yield getExtensionsVSCode();
|
|
123
|
-
}
|
|
87
|
+
async function getInstalledExtensions(extensions, logger) {
|
|
88
|
+
let versions;
|
|
89
|
+
try {
|
|
90
|
+
if (extensions) {
|
|
91
|
+
versions = extensions
|
|
92
|
+
.filter((ext) => isExtensionRequired(ext.packageJSON.name))
|
|
93
|
+
.reduce((returnObject, current) => {
|
|
94
|
+
const version = current.packageJSON.version;
|
|
95
|
+
returnObject[current.packageJSON.name] = {
|
|
96
|
+
version
|
|
97
|
+
};
|
|
98
|
+
return returnObject;
|
|
99
|
+
}, {});
|
|
100
|
+
}
|
|
101
|
+
else if ((0, btp_utils_1.isAppStudio)()) {
|
|
102
|
+
versions = await getExtensionsBAS();
|
|
124
103
|
}
|
|
125
|
-
|
|
126
|
-
|
|
104
|
+
else {
|
|
105
|
+
versions = await getExtensionsVSCode();
|
|
127
106
|
}
|
|
128
|
-
|
|
129
|
-
|
|
107
|
+
}
|
|
108
|
+
catch (e) {
|
|
109
|
+
logger?.error((0, i18n_1.t)('error.retrievingExtensions', { error: e.message }));
|
|
110
|
+
}
|
|
111
|
+
return versions;
|
|
130
112
|
}
|
|
131
113
|
exports.getInstalledExtensions = getInstalledExtensions;
|
|
132
114
|
/**
|
|
@@ -134,18 +116,16 @@ exports.getInstalledExtensions = getInstalledExtensions;
|
|
|
134
116
|
*
|
|
135
117
|
* @returns version
|
|
136
118
|
*/
|
|
137
|
-
function getCFCliToolVersion() {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
return cfVersion;
|
|
148
|
-
});
|
|
119
|
+
async function getCFCliToolVersion() {
|
|
120
|
+
let cfVersion;
|
|
121
|
+
try {
|
|
122
|
+
const version = await (0, command_1.spawnCommand)(types_1.NpmModules.CloudCliTools, ['-v']);
|
|
123
|
+
cfVersion = version.replace(/\s/g, '').split('version')[1].slice(0, 5);
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
return (0, i18n_1.t)('info.notInstalledOrNotFound');
|
|
127
|
+
}
|
|
128
|
+
return cfVersion;
|
|
149
129
|
}
|
|
150
130
|
exports.getCFCliToolVersion = getCFCliToolVersion;
|
|
151
131
|
/**
|
|
@@ -153,56 +133,52 @@ exports.getCFCliToolVersion = getCFCliToolVersion;
|
|
|
153
133
|
*
|
|
154
134
|
* @returns version
|
|
155
135
|
*/
|
|
156
|
-
function getFioriGenGlobalPath() {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
return fioriGenPath;
|
|
170
|
-
});
|
|
136
|
+
async function getFioriGenGlobalPath() {
|
|
137
|
+
let fioriGenPath;
|
|
138
|
+
let globalNpmPath = await (0, command_1.spawnCommand)(command_1.npmCommand, ['root', '-g']);
|
|
139
|
+
// default version of npm on BAS (8.11.0) has a bug https://github.com/npm/cli/issues/5228
|
|
140
|
+
// can be removed when default npm version is upgraded
|
|
141
|
+
if (globalNpmPath.includes('WARN') && globalNpmPath.includes('--location=global')) {
|
|
142
|
+
globalNpmPath = await (0, command_1.spawnCommand)(command_1.npmCommand, ['root', '--location=global']);
|
|
143
|
+
}
|
|
144
|
+
globalNpmPath = globalNpmPath.trim();
|
|
145
|
+
if (globalNpmPath) {
|
|
146
|
+
fioriGenPath = (0, path_1.join)(globalNpmPath, types_1.NpmModules.FioriGenerator);
|
|
147
|
+
}
|
|
148
|
+
return fioriGenPath;
|
|
171
149
|
}
|
|
172
150
|
/**
|
|
173
151
|
* Read the version of the fiori generator.
|
|
174
152
|
*
|
|
175
153
|
* @returns version
|
|
176
154
|
*/
|
|
177
|
-
function getFioriGenVersion() {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
break;
|
|
197
|
-
}
|
|
155
|
+
async function getFioriGenVersion() {
|
|
156
|
+
let fioriGenVersion = (0, i18n_1.t)('info.notInstalledOrNotFound');
|
|
157
|
+
const genSearchPaths = [];
|
|
158
|
+
try {
|
|
159
|
+
const fioriGenPath = await getFioriGenGlobalPath();
|
|
160
|
+
genSearchPaths.push(fioriGenPath);
|
|
161
|
+
// BAS recommend using NODE_PATH as the paths therein are used to locate all generators regardless of installation method
|
|
162
|
+
if ((0, btp_utils_1.isAppStudio)() && process.env.NODE_PATH) {
|
|
163
|
+
genSearchPaths.push(...process.env.NODE_PATH.split(':')
|
|
164
|
+
.filter((path) => path.endsWith('node_modules'))
|
|
165
|
+
.map((path) => (0, path_1.join)(path, types_1.NpmModules.FioriGenerator)));
|
|
166
|
+
}
|
|
167
|
+
for (const genPath of genSearchPaths) {
|
|
168
|
+
const fioriGenPkgJson = (0, path_1.join)(genPath, 'package.json');
|
|
169
|
+
if ((0, fs_1.existsSync)(fioriGenPkgJson)) {
|
|
170
|
+
const version = JSON.parse(await fs_1.promises.readFile(fioriGenPkgJson, 'utf-8')).version;
|
|
171
|
+
if (version) {
|
|
172
|
+
fioriGenVersion = version;
|
|
173
|
+
break;
|
|
198
174
|
}
|
|
199
175
|
}
|
|
200
176
|
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
177
|
+
}
|
|
178
|
+
catch {
|
|
179
|
+
return (0, i18n_1.t)('info.notInstalledOrNotFound');
|
|
180
|
+
}
|
|
181
|
+
return fioriGenVersion;
|
|
206
182
|
}
|
|
207
183
|
exports.getFioriGenVersion = getFioriGenVersion;
|
|
208
184
|
/**
|
|
@@ -211,17 +187,15 @@ exports.getFioriGenVersion = getFioriGenVersion;
|
|
|
211
187
|
* @param logger - logger to report errors
|
|
212
188
|
* @returns modules and versions
|
|
213
189
|
*/
|
|
214
|
-
function getProcessVersions(logger) {
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
}
|
|
224
|
-
});
|
|
190
|
+
async function getProcessVersions(logger) {
|
|
191
|
+
try {
|
|
192
|
+
const output = await (0, command_1.spawnCommand)('node', ['-p', 'JSON.stringify(process.versions)']);
|
|
193
|
+
return JSON.parse(output);
|
|
194
|
+
}
|
|
195
|
+
catch (e) {
|
|
196
|
+
logger?.error((0, i18n_1.t)('error.retrievingProcessVersions', { error: e.message }));
|
|
197
|
+
return {};
|
|
198
|
+
}
|
|
225
199
|
}
|
|
226
200
|
exports.getProcessVersions = getProcessVersions;
|
|
227
201
|
//# sourceMappingURL=get-installed.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-installed.js","sourceRoot":"","sources":["../../src/checks/get-installed.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"get-installed.js","sourceRoot":"","sources":["../../src/checks/get-installed.ts"],"names":[],"mappings":"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"}
|