eitri-cli 1.7.0-beta.4 → 1.7.0-beta.5
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/config/dev.js +11 -0
- package/config/k8s-eitri.js +11 -0
- package/config/loc-eitri.js +11 -0
- package/config/prod-eitri.js +11 -0
- package/index.js +11 -0
- package/package.json +1 -1
- package/src/cmd/eitriLibs.js +38 -0
- package/src/service/LibsService.js +154 -0
- package/src/service/Workspace.js +3 -0
- package/test/_fixtures/woodcoffee/miniapp.conf.js +2 -2
- package/test/e2e/cli.test.js +37 -0
package/config/dev.js
CHANGED
|
@@ -100,6 +100,17 @@ const config = {
|
|
|
100
100
|
eitriManager: {
|
|
101
101
|
url: `https://${HOST}/eitri-manager-api`,
|
|
102
102
|
},
|
|
103
|
+
cdn: {
|
|
104
|
+
library: {
|
|
105
|
+
url: "https://cdn.83io.com.br/library",
|
|
106
|
+
bifrost: {
|
|
107
|
+
versions: "/eitri-bifrost/versions/index.json"
|
|
108
|
+
},
|
|
109
|
+
luminusUi: {
|
|
110
|
+
versions: "/luminus-ui/versions/index.json"
|
|
111
|
+
},
|
|
112
|
+
}
|
|
113
|
+
}
|
|
103
114
|
};
|
|
104
115
|
|
|
105
116
|
module.exports = config;
|
package/config/k8s-eitri.js
CHANGED
|
@@ -84,6 +84,17 @@ const config = {
|
|
|
84
84
|
},
|
|
85
85
|
managerFront: {
|
|
86
86
|
url: `https://admin.k8s.eitri.calindra.com.br`
|
|
87
|
+
},
|
|
88
|
+
cdn: {
|
|
89
|
+
library: {
|
|
90
|
+
url: "https://cdn.83io.com.br/library",
|
|
91
|
+
bifrost: {
|
|
92
|
+
versions: "/eitri-bifrost/versions/index.json"
|
|
93
|
+
},
|
|
94
|
+
luminusUi: {
|
|
95
|
+
versions: "/luminus-ui/versions/index.json"
|
|
96
|
+
},
|
|
97
|
+
}
|
|
87
98
|
}
|
|
88
99
|
}
|
|
89
100
|
|
package/config/loc-eitri.js
CHANGED
|
@@ -102,6 +102,17 @@ const config = {
|
|
|
102
102
|
my: "/workspace/my",
|
|
103
103
|
check: "/workspace/check",
|
|
104
104
|
},
|
|
105
|
+
cdn: {
|
|
106
|
+
library: {
|
|
107
|
+
url: "https://cdn.83io.com.br/library",
|
|
108
|
+
bifrost: {
|
|
109
|
+
versions: "/eitri-bifrost/versions/index.json"
|
|
110
|
+
},
|
|
111
|
+
luminusUi: {
|
|
112
|
+
versions: "/luminus-ui/versions/index.json"
|
|
113
|
+
},
|
|
114
|
+
}
|
|
115
|
+
}
|
|
105
116
|
};
|
|
106
117
|
|
|
107
118
|
module.exports = config;
|
package/config/prod-eitri.js
CHANGED
|
@@ -103,6 +103,17 @@ const config = {
|
|
|
103
103
|
my: "/workspace/my",
|
|
104
104
|
check: "/workspace/check",
|
|
105
105
|
},
|
|
106
|
+
cdn: {
|
|
107
|
+
library: {
|
|
108
|
+
url: "https://cdn.83io.com.br/library",
|
|
109
|
+
bifrost: {
|
|
110
|
+
versions: "/eitri-bifrost/versions/index.json"
|
|
111
|
+
},
|
|
112
|
+
luminusUi: {
|
|
113
|
+
versions: "/luminus-ui/versions/index.json"
|
|
114
|
+
},
|
|
115
|
+
}
|
|
116
|
+
}
|
|
106
117
|
};
|
|
107
118
|
|
|
108
119
|
module.exports = config;
|
package/index.js
CHANGED
|
@@ -114,6 +114,17 @@ const run = async () => {
|
|
|
114
114
|
);
|
|
115
115
|
});
|
|
116
116
|
|
|
117
|
+
program
|
|
118
|
+
.command("libs")
|
|
119
|
+
.description("Bibliotecas do Eitri")
|
|
120
|
+
.option(
|
|
121
|
+
"-l, --list",
|
|
122
|
+
"Lista as bibliotecas do Eitri com suas versões"
|
|
123
|
+
)
|
|
124
|
+
.action((cmdObj) => {
|
|
125
|
+
require("./src/cmd/eitriLibs")(cmdObj);
|
|
126
|
+
});
|
|
127
|
+
|
|
117
128
|
program.addCommand(VegvisirCommand());
|
|
118
129
|
|
|
119
130
|
if (
|
package/package.json
CHANGED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
const {workspace} = require('../service/Workspace')
|
|
2
|
+
const TrackingService = require('../service/TrackingService')
|
|
3
|
+
const TrackingEitriAnalytics = require('../service/TrackingEitriAnalytics')
|
|
4
|
+
const LibsService = require('../service/LibsService')
|
|
5
|
+
|
|
6
|
+
const blindGuardian = workspace.blindGuardian
|
|
7
|
+
const trackingService = new TrackingService(blindGuardian)
|
|
8
|
+
|
|
9
|
+
module.exports = async function eitriLibs(cmdObj) {
|
|
10
|
+
if(cmdObj.list){
|
|
11
|
+
await listLibs()
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
async function listLibs() {
|
|
16
|
+
try {
|
|
17
|
+
const libsVersions = await LibsService.simultaneousRequestAndHandleData()
|
|
18
|
+
console.log("libsVersions", libsVersions)
|
|
19
|
+
TrackingEitriAnalytics.sendEvent({
|
|
20
|
+
eventName: "eitriLibs.listLibs",
|
|
21
|
+
userId: workspace?.userEmail,
|
|
22
|
+
data: libsVersions
|
|
23
|
+
})
|
|
24
|
+
process.exit(0)
|
|
25
|
+
} catch (e) {
|
|
26
|
+
TrackingEitriAnalytics.sendEvent({
|
|
27
|
+
eventName: "clean.error",
|
|
28
|
+
userId: workspace?.userEmail,
|
|
29
|
+
data: {
|
|
30
|
+
errorMessage: e?.message || ""
|
|
31
|
+
}
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
await trackingService.sendError(e)
|
|
36
|
+
process.exit(1)
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
const axios = require('axios')
|
|
2
|
+
const configService = require('./ConfigService')
|
|
3
|
+
const CDN_83io_LIBRARY = configService.get('cdn')?.library
|
|
4
|
+
const TrackingEitriAnalytics = require('./TrackingEitriAnalytics')
|
|
5
|
+
|
|
6
|
+
class LibsService {
|
|
7
|
+
|
|
8
|
+
static async validateLibsVersions({libs = [], eitriAppConf = {}}) {
|
|
9
|
+
const {luminusUiVersion, bifrostVersion} = this.getEitriConfLibsVersions(libs)
|
|
10
|
+
if (!luminusUiVersion) {
|
|
11
|
+
throw new Error("Nenhuma versão do [luminus-ui/eitri-app-components] encontrada em seu eitri-app.conf");
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
if (!bifrostVersion) {
|
|
15
|
+
throw new Error("Nenhuma versão do [bifrost/eitri-app-client] encontrada em seu eitri-app.conf");
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const {luminusUiVersions, bifrostVersions} = await this.simultaneousRequestAndHandleData();
|
|
19
|
+
const allBifrostVersions = bifrostVersions?.versions?.concat(bifrostVersions?.betaVersions, bifrostVersions?.alphaVersions);
|
|
20
|
+
|
|
21
|
+
const existsLuminus = luminusUiVersions?.versions?.some(version => version === luminusUiVersion);
|
|
22
|
+
if (!existsLuminus) {
|
|
23
|
+
this.throwNonExistentLibError({
|
|
24
|
+
libName: "luminus-ui/eitri-app-components",
|
|
25
|
+
eitriConfLibVersion: luminusUiVersion,
|
|
26
|
+
availableVersions: luminusUiVersions,
|
|
27
|
+
eitriAppConf,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const existsBifrost = allBifrostVersions.some(version => version === bifrostVersion);
|
|
32
|
+
if (!existsBifrost) {
|
|
33
|
+
this.throwNonExistentLibError({
|
|
34
|
+
libName: "bifrost/eitri-app-client",
|
|
35
|
+
eitriConfLibVersion: bifrostVersion,
|
|
36
|
+
availableVersions: allBifrostVersions,
|
|
37
|
+
eitriAppConf,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
static getEitriConfLibsVersions(libs = []) {
|
|
44
|
+
const luminusUiNames = ["eitri-app-components", "eitri-luminus"];
|
|
45
|
+
const biFrostNames = ["eitri-app-client", "eitri-bifrost"];
|
|
46
|
+
const bifrostVersion = libs.find(lib => biFrostNames?.includes(lib.name))?.version;
|
|
47
|
+
const luminusUiVersion = libs.find(lib => luminusUiNames?.includes(lib.name))?.version;
|
|
48
|
+
|
|
49
|
+
return {
|
|
50
|
+
luminusUiVersion,
|
|
51
|
+
bifrostVersion
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
static async simultaneousRequestAndHandleData() {
|
|
56
|
+
const promises = await Promise.allSettled([
|
|
57
|
+
this.getBifrostVersions(), this.getLuminusUiVersions()
|
|
58
|
+
]).then(res => res).catch(err => err)
|
|
59
|
+
|
|
60
|
+
const [bifrost, luminus] = promises;
|
|
61
|
+
|
|
62
|
+
let allBifrostVersions = {};
|
|
63
|
+
if (bifrost?.status === "fulfilled") {
|
|
64
|
+
allBifrostVersions = bifrost.value
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
let allLuminusVersions = {};
|
|
68
|
+
if (luminus?.status === "fulfilled") {
|
|
69
|
+
allLuminusVersions = luminus.value
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return {
|
|
73
|
+
luminusUiVersions: allLuminusVersions,
|
|
74
|
+
bifrostVersions: allBifrostVersions
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
static handleRawDatas(promises = []) {
|
|
79
|
+
|
|
80
|
+
const [bifrost, luminus] = promises;
|
|
81
|
+
|
|
82
|
+
const allBifrostVersions = [];
|
|
83
|
+
if (bifrost?.status === "fulfilled") {
|
|
84
|
+
const versions = bifrost?.value?.versions?.concat(bifrost?.value?.betaVersions, bifrost?.value?.alphaVersions);
|
|
85
|
+
allBifrostVersions.push(...versions)
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const allLuminusVersions = [];
|
|
89
|
+
if (luminus?.status === "fulfilled") {
|
|
90
|
+
allLuminusVersions.push(...luminus.value.versions)
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
return {
|
|
94
|
+
luminusUiVersions: allLuminusVersions,
|
|
95
|
+
bifrostVersions: allBifrostVersions,
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
static async getBifrostVersions() {
|
|
101
|
+
const fullUrl = `${CDN_83io_LIBRARY.url}${CDN_83io_LIBRARY.bifrost.versions}`;
|
|
102
|
+
try {
|
|
103
|
+
const response = await axios.get(fullUrl)
|
|
104
|
+
return response.data
|
|
105
|
+
} catch (error) {
|
|
106
|
+
const errorMessage = error?.message || "Erro na obtenção de versões do Bifrost"
|
|
107
|
+
this.sendErrorToAnalytics("getBifrostVersions", errorMessage)
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
static async getLuminusUiVersions() {
|
|
112
|
+
const fullUrl = `${CDN_83io_LIBRARY.url}${CDN_83io_LIBRARY.luminusUi.versions}`;
|
|
113
|
+
try {
|
|
114
|
+
const response = await axios.get(fullUrl)
|
|
115
|
+
return response.data
|
|
116
|
+
} catch (error) {
|
|
117
|
+
const errorMessage = error?.message || "Erro na obtenção de versões do LuminusUI"
|
|
118
|
+
this.sendErrorToAnalytics("getLuminusUiVersions", errorMessage)
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
static sendErrorToAnalytics(method = "", errorMessage = "") {
|
|
123
|
+
TrackingEitriAnalytics.sendEvent({
|
|
124
|
+
eventName: `${method}.error`,
|
|
125
|
+
userId: "",
|
|
126
|
+
data: {errorMessage}
|
|
127
|
+
})
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
static throwNonExistentLibError(input = {libName: "", eitriConfLibVersion: "", availableVersions: [], eitriAppConf: {}}) {
|
|
131
|
+
const {libName, eitriConfLibVersion, availableVersions, eitriAppConf} = input
|
|
132
|
+
|
|
133
|
+
const friendlyErrorMessage = `Versão da biblioteca [${libName}] não encontrada`;
|
|
134
|
+
console.log(`\n\x1b[1m\x1b[31m${friendlyErrorMessage}\x1b[0m\n`);
|
|
135
|
+
console.log("Veja as versões disponíveis abaixo e atualize o arquivo eitri-app.conf\n");
|
|
136
|
+
console.log(availableVersions)
|
|
137
|
+
|
|
138
|
+
TrackingEitriAnalytics.sendEvent({
|
|
139
|
+
eventName: "version.eitri-libs.not.found",
|
|
140
|
+
userId: "",
|
|
141
|
+
data: {
|
|
142
|
+
errorMessage: `Versão da biblioteca ${libName} não encontrada`,
|
|
143
|
+
eitriConfLibVersion,
|
|
144
|
+
availableVersions,
|
|
145
|
+
eitriAppConf,
|
|
146
|
+
}
|
|
147
|
+
})
|
|
148
|
+
|
|
149
|
+
process.exit(1)
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
module.exports = LibsService
|
package/src/service/Workspace.js
CHANGED
|
@@ -29,6 +29,7 @@ const VegvisirService = require("../modules/vegvisir/VegvisirService");
|
|
|
29
29
|
const HuginService = require("./HuginService");
|
|
30
30
|
const EitriAppType = require("../model/EitriAppType");
|
|
31
31
|
const chalk = require("chalk");
|
|
32
|
+
const LibsService = require("./LibsService");
|
|
32
33
|
const vegvisirService = new VegvisirService()
|
|
33
34
|
const huginService = new HuginService()
|
|
34
35
|
|
|
@@ -207,6 +208,8 @@ class Workspace {
|
|
|
207
208
|
await this.eitriAppService.writeEitriConf(remoteEitriConf, miniConf, this.folder2watch);
|
|
208
209
|
}
|
|
209
210
|
|
|
211
|
+
await LibsService.validateLibsVersions({libs: state.libs, eitriAppConf: miniConf});
|
|
212
|
+
|
|
210
213
|
this.printLibsVersion(state);
|
|
211
214
|
|
|
212
215
|
await this.loadTarget(remoteTarget);
|
package/test/e2e/cli.test.js
CHANGED
|
@@ -212,6 +212,43 @@ describe("eitri-cli", () => {
|
|
|
212
212
|
2 * minutes
|
|
213
213
|
);
|
|
214
214
|
|
|
215
|
+
it(
|
|
216
|
+
"should list eitri libs versions",
|
|
217
|
+
async () => {
|
|
218
|
+
try {
|
|
219
|
+
await execAsync(
|
|
220
|
+
`cd ${EITRI_WORK_DIR} && rm -rf ./eitri-test-*`,
|
|
221
|
+
{ env: process.env }
|
|
222
|
+
);
|
|
223
|
+
|
|
224
|
+
const executor = new Executor({env: devEnv});
|
|
225
|
+
await executor
|
|
226
|
+
.exec("eitri libs -l")
|
|
227
|
+
.waitFor(/libsVersions/);
|
|
228
|
+
await executor
|
|
229
|
+
.exec("eitri libs -l")
|
|
230
|
+
.waitFor(/luminusUiVersions/);
|
|
231
|
+
await executor
|
|
232
|
+
.exec("eitri libs -l")
|
|
233
|
+
.waitFor(/versions/);
|
|
234
|
+
await executor
|
|
235
|
+
.exec("eitri libs -l")
|
|
236
|
+
.waitFor(/bifrostVersions/);
|
|
237
|
+
await executor
|
|
238
|
+
.exec("eitri libs -l")
|
|
239
|
+
.waitFor(/betaVersions/);
|
|
240
|
+
await executor
|
|
241
|
+
.exec("eitri libs -l")
|
|
242
|
+
.waitFor(/alphaVersions/);
|
|
243
|
+
|
|
244
|
+
} catch (e) {
|
|
245
|
+
console.error(e);
|
|
246
|
+
throw e;
|
|
247
|
+
}
|
|
248
|
+
},
|
|
249
|
+
2 * minutes
|
|
250
|
+
);
|
|
251
|
+
|
|
215
252
|
const getPublishedVersion = async (version, eitriAppId) => {
|
|
216
253
|
const blindGuardian = new BlindGuardian();
|
|
217
254
|
const http = new Http(blindGuardian);
|