eitri-cli 1.1.7-alpha.3 → 1.2.0-beta.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/.husky/commit-msg +4 -0
- package/.releaserc.json +0 -4
- package/.vscode/settings.json +3 -1
- package/README.md +8 -9
- package/bitbucket-pipelines.yml +16 -4
- package/commitlint.config.js +6 -0
- package/config/dev.js +4 -4
- package/config/k8s-eitri.js +2 -2
- package/config/loc-eitri.js +2 -2
- package/config/prod-eitri.js +13 -11
- package/developer-folder/README.md +1 -0
- package/index-eitri.js +3 -0
- package/index.js +14 -63
- package/install-dev.sh +1 -1
- package/package.json +9 -6
- package/src/cmd/clean.js +18 -7
- package/src/cmd/create.js +41 -24
- package/src/cmd/credentials.js +1 -1
- package/src/cmd/invite.js +4 -4
- package/src/cmd/login.js +9 -8
- package/src/cmd/manage-env.js +4 -4
- package/src/cmd/push-version.js +29 -18
- package/src/cmd/signup.js +8 -6
- package/src/cmd/start.js +20 -32
- package/src/cmd/tail-logs.js +3 -3
- package/src/model/Payload.js +1 -1
- package/src/modules/vegvisir/VegvisirService.js +4 -4
- package/src/modules/vegvisir/cmd/list.js +2 -1
- package/src/modules/vegvisir/cmd/use.js +1 -1
- package/src/service/AuthConfig.js +9 -12
- package/src/service/BlindGuardian.js +16 -19
- package/src/service/CliLogin.js +7 -5
- package/src/service/ConfigService.js +0 -7
- package/src/service/CredentialsService.js +2 -2
- package/src/service/EitriAppManager.js +2 -2
- package/src/service/Http.js +3 -3
- package/src/service/InviteService.js +2 -2
- package/src/service/MiniLog.js +1 -1
- package/src/service/QRCodeFactory.js +2 -2
- package/src/service/Server.js +9 -9
- package/src/service/TargetService.js +2 -2
- package/src/service/TrackingEitriAnalytics.js +11 -21
- package/src/service/Workspace.js +10 -6
- package/src/service/WorkspaceManager.js +4 -4
- package/src/service/factories/DoubtsStarterFactory.js +2 -2
- package/src/util/AboutTemplate.jsx +1 -1
- package/src/util/UserLocalCredential.js +10 -4
- package/src/util/error-messages/invite/invite-error-messages.js +1 -1
- package/src/util/template-utils.js +2 -2
- package/test/Executor.js +46 -0
- package/test/Helper.js +13 -0
- package/test/_fixtures/factory.js +1 -1
- package/test/_fixtures/src/views/AboutTemplate.jsx +1 -1
- package/test/cmd/clean.test.js +3 -3
- package/test/cmd/create.test.js +8 -8
- package/test/e2e/cli.test.js +68 -0
- package/test/service/Workspace.test.js +17 -17
- package/CHANGELOG.md +0 -57
- package/publisher.js +0 -59
- package/targetMobileStickyness.md +0 -47
- package/targetWebStickyness.md +0 -40
- package/test/cmd/credentials.test.js +0 -159
- package/test/cmd/signup.test.js +0 -20
- package/test/cmd/start.test.js +0 -5
- package/thinQrCode.md +0 -58
- package/v1.5.0.md +0 -3
package/src/cmd/create.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const Watcher = require("../service/Watcher");
|
|
2
2
|
const inquirer = require("inquirer");
|
|
3
3
|
const slugify = require("slugify");
|
|
4
|
-
const
|
|
4
|
+
const configService = require("../service/ConfigService");
|
|
5
5
|
const { Workspace } = require("../service/Workspace");
|
|
6
6
|
const BlindGuardian = require("../service/BlindGuardian");
|
|
7
7
|
const HashFolder = require("../service/HashFolder");
|
|
@@ -16,6 +16,7 @@ const Target = require("../model/Target");
|
|
|
16
16
|
const EitriAppManager = require("../service/EitriAppManager");
|
|
17
17
|
const WoodCoffee = require("../service/factories/WoodCoffeeFactory");
|
|
18
18
|
const TrackingEitriAnalytics = require("../service/TrackingEitriAnalytics");
|
|
19
|
+
const UserLocalCredential = require("../util/UserLocalCredential");
|
|
19
20
|
|
|
20
21
|
const blindGuardian = new BlindGuardian();
|
|
21
22
|
const hashFolder = new HashFolder();
|
|
@@ -27,14 +28,6 @@ const watcher = new Watcher(workspace, hashFolder, trackingService);
|
|
|
27
28
|
const ITEM_DOUBT = "DOUBTS";
|
|
28
29
|
const eitriAppManager = new EitriAppManager(blindGuardian);
|
|
29
30
|
|
|
30
|
-
const notBlank = (inpt) => {
|
|
31
|
-
if (!inpt || !inpt.trim()) {
|
|
32
|
-
return "Não pode ficar em branco";
|
|
33
|
-
} else {
|
|
34
|
-
return true;
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
|
|
38
31
|
const nameOrTitle = (inpt) => {
|
|
39
32
|
if (!NAME_TITLE_REGEX.test(inpt)) {
|
|
40
33
|
return "Não use caracteres especiais";
|
|
@@ -51,14 +44,23 @@ const slug = (inpt) => {
|
|
|
51
44
|
|
|
52
45
|
// eslint-disable-next-line no-unused-vars
|
|
53
46
|
module.exports = async function create(projectName, cmdObj) {
|
|
47
|
+
|
|
48
|
+
try {
|
|
49
|
+
UserLocalCredential.checkForCredentials()
|
|
50
|
+
} catch (error) {
|
|
51
|
+
const errorMessage = cmdObj?.verbose ? error : error?.message
|
|
52
|
+
console.error("\n", errorMessage, "\n")
|
|
53
|
+
return
|
|
54
|
+
}
|
|
55
|
+
|
|
54
56
|
console.log(
|
|
55
|
-
"\x1b[34mVamos criar o seu
|
|
57
|
+
"\x1b[34mVamos criar o seu Eitri-App. Para isso basta responder algumas perguntas:\x1b[0m"
|
|
56
58
|
);
|
|
57
59
|
|
|
58
60
|
try {
|
|
59
|
-
const url =
|
|
61
|
+
const url = configService.get("workspace").url;
|
|
60
62
|
workspace.setServerUrl(url);
|
|
61
|
-
const clientApplication = await askClientApplication();
|
|
63
|
+
const clientApplication = await askClientApplication(cmdObj.application);
|
|
62
64
|
if (clientApplication.name === ITEM_DOUBT) {
|
|
63
65
|
handleStartServer(
|
|
64
66
|
cmdObj,
|
|
@@ -69,18 +71,25 @@ module.exports = async function create(projectName, cmdObj) {
|
|
|
69
71
|
);
|
|
70
72
|
return;
|
|
71
73
|
}
|
|
72
|
-
|
|
74
|
+
const responseAskProjMetadata = await askProjMetadata(clientApplication, cmdObj, projectName);
|
|
75
|
+
TrackingEitriAnalytics.sendEvent({
|
|
76
|
+
eventName: "create",
|
|
77
|
+
userId: workspace?.userEmail,
|
|
78
|
+
});
|
|
79
|
+
return responseAskProjMetadata
|
|
73
80
|
} catch (e) {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
81
|
+
TrackingEitriAnalytics.sendEvent({
|
|
82
|
+
eventName: "create.error",
|
|
83
|
+
userId: workspace?.userEmail,
|
|
84
|
+
data: {
|
|
85
|
+
errorMessage: e?.message,
|
|
86
|
+
}
|
|
78
87
|
});
|
|
79
88
|
console.error(e?.message);
|
|
80
89
|
}
|
|
81
90
|
};
|
|
82
91
|
|
|
83
|
-
async function askClientApplication() {
|
|
92
|
+
async function askClientApplication(applicationName) {
|
|
84
93
|
const availableApplications = await eitriAppManager.findAllApplications();
|
|
85
94
|
if (availableApplications.length <= 0) {
|
|
86
95
|
console.log(
|
|
@@ -88,6 +97,14 @@ async function askClientApplication() {
|
|
|
88
97
|
);
|
|
89
98
|
process.exit(0);
|
|
90
99
|
}
|
|
100
|
+
if (applicationName) {
|
|
101
|
+
const clientApplication = availableApplications.find(application => application.name === applicationName)
|
|
102
|
+
if (clientApplication) {
|
|
103
|
+
return clientApplication
|
|
104
|
+
} else {
|
|
105
|
+
throw new Error(`Application not found by name ${applicationName}`)
|
|
106
|
+
}
|
|
107
|
+
}
|
|
91
108
|
const cliOptions = [
|
|
92
109
|
...availableApplications,
|
|
93
110
|
{ name: ITEM_DOUBT, label: "Dúvidas? Veja documentação no browser" },
|
|
@@ -102,7 +119,7 @@ async function askClientApplication() {
|
|
|
102
119
|
name: "accepted",
|
|
103
120
|
type: "rawlist",
|
|
104
121
|
message:
|
|
105
|
-
"Selecione a aplicação para qual destina-se seu
|
|
122
|
+
"Selecione a aplicação para qual destina-se seu Eitri-App:",
|
|
106
123
|
choices: cliOptions.map(createLabel),
|
|
107
124
|
},
|
|
108
125
|
]);
|
|
@@ -186,7 +203,7 @@ async function askProjMetadata(clientApplication, cmdObj, projectName) {
|
|
|
186
203
|
} catch (err) {
|
|
187
204
|
if (cmdObj.verbose) {
|
|
188
205
|
console.error(
|
|
189
|
-
"Houve uma falha durante a criação do
|
|
206
|
+
"Houve uma falha durante a criação do Eitri-App",
|
|
190
207
|
err
|
|
191
208
|
);
|
|
192
209
|
}
|
|
@@ -220,7 +237,7 @@ function createQuestions(projectName) {
|
|
|
220
237
|
{
|
|
221
238
|
type: "input",
|
|
222
239
|
name: "name",
|
|
223
|
-
message: "Digite um nome legível para seu
|
|
240
|
+
message: "Digite um nome legível para seu Eitri-App",
|
|
224
241
|
validate: nameOrTitle,
|
|
225
242
|
default: () => {
|
|
226
243
|
return projectName;
|
|
@@ -239,7 +256,7 @@ function createQuestions(projectName) {
|
|
|
239
256
|
type: "input",
|
|
240
257
|
name: "slug",
|
|
241
258
|
message:
|
|
242
|
-
"Digite um nome único para seu
|
|
259
|
+
"Digite um nome único para seu Eitri-App. Não pode conter espaços",
|
|
243
260
|
default: (currentAnswers) => {
|
|
244
261
|
return slugify(currentAnswers.name).toLowerCase();
|
|
245
262
|
},
|
|
@@ -253,7 +270,7 @@ async function askSlug(projectName) {
|
|
|
253
270
|
{
|
|
254
271
|
type: "input",
|
|
255
272
|
name: "slug",
|
|
256
|
-
message: "Outro nome único para o
|
|
273
|
+
message: "Outro nome único para o Eitri-App:",
|
|
257
274
|
validate: slug,
|
|
258
275
|
default: () => {
|
|
259
276
|
return slugify(projectName).toLowerCase();
|
|
@@ -268,7 +285,7 @@ async function askName(projectName) {
|
|
|
268
285
|
{
|
|
269
286
|
type: "input",
|
|
270
287
|
name: "name",
|
|
271
|
-
message: "Outro nome para o
|
|
288
|
+
message: "Outro nome para o Eitri-App:",
|
|
272
289
|
validate: nameOrTitle,
|
|
273
290
|
default: () => {
|
|
274
291
|
return projectName;
|
package/src/cmd/credentials.js
CHANGED
|
@@ -11,7 +11,7 @@ const workspace = new Workspace(blindGuardian, new HashFolder())
|
|
|
11
11
|
const credentialService = new CredentialsService(workspace)
|
|
12
12
|
const trackingService = new TrackingService(blindGuardian, { ignoreCredentialError: true })
|
|
13
13
|
|
|
14
|
-
const config = require('
|
|
14
|
+
const config = require('../service/ConfigService')
|
|
15
15
|
|
|
16
16
|
const credentialStrategies = {
|
|
17
17
|
[credentialService.upsert.name]: credentialService.upsert,
|
package/src/cmd/invite.js
CHANGED
|
@@ -18,11 +18,11 @@ module.exports = async function invite(email, cmdObj) {
|
|
|
18
18
|
let invites = await inviteService.findAllBySlug(slug)
|
|
19
19
|
let invite = invites.find(i => i.email === email)
|
|
20
20
|
if (!invite) {
|
|
21
|
-
console.log(`Convite inexistente para ${email} do
|
|
21
|
+
console.log(`Convite inexistente para ${email} do Eitri-App ${slug}.`)
|
|
22
22
|
process.exit(1)
|
|
23
23
|
}
|
|
24
24
|
await inviteService.remove(invite)
|
|
25
|
-
console.log(`${email} removido com sucesso do
|
|
25
|
+
console.log(`${email} removido com sucesso do Eitri-App ${slug}.`)
|
|
26
26
|
} else if (cmdObj.list) {
|
|
27
27
|
let slug = workspace.getMiniConf().slug
|
|
28
28
|
let invites = await inviteService.findAllBySlug(slug)
|
|
@@ -37,7 +37,7 @@ module.exports = async function invite(email, cmdObj) {
|
|
|
37
37
|
}
|
|
38
38
|
console.log(`${invites.length} convites`)
|
|
39
39
|
const createLabel = (inv) => {
|
|
40
|
-
return `aceitar convite do
|
|
40
|
+
return `aceitar convite do Eitri-App "${inv.slug}" enviado por ${inv.inviterEmail || 'desconhecido'}`
|
|
41
41
|
}
|
|
42
42
|
let res = await inquirer.prompt([
|
|
43
43
|
{
|
|
@@ -49,7 +49,7 @@ module.exports = async function invite(email, cmdObj) {
|
|
|
49
49
|
])
|
|
50
50
|
let inviteToAccept = invites.find(inv => createLabel(inv) === res.accepted)
|
|
51
51
|
if (inviteToAccept) {
|
|
52
|
-
console.log(`Aceitando participar do
|
|
52
|
+
console.log(`Aceitando participar do Eitri-App ${inviteToAccept.slug}...`)
|
|
53
53
|
await inviteService.accept(inviteToAccept)
|
|
54
54
|
console.log(`Convite aceito! ${emoji.lib.clinking_glasses.char}`)
|
|
55
55
|
}
|
package/src/cmd/login.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const inquirer = require('inquirer')
|
|
2
|
-
const
|
|
2
|
+
const configService = require('../service/ConfigService')
|
|
3
3
|
const open = require('open')
|
|
4
4
|
const TrackingEitriAnalytics = require('../service/TrackingEitriAnalytics')
|
|
5
5
|
const Server = require('../service/Server')
|
|
@@ -18,7 +18,7 @@ module.exports = async function login(args) {
|
|
|
18
18
|
|
|
19
19
|
const res = Server.startCliLogin()
|
|
20
20
|
|
|
21
|
-
const urlAdminManagerCredential = `${
|
|
21
|
+
const urlAdminManagerCredential = `${configService.get("managerFront").url}`
|
|
22
22
|
const urlAdminManagerCredentialWithParams = `${urlAdminManagerCredential}?loginType=EITRI_CLI&port=${res?.port}`
|
|
23
23
|
|
|
24
24
|
let portalOpenMessage = ""
|
|
@@ -29,19 +29,20 @@ module.exports = async function login(args) {
|
|
|
29
29
|
open(urlAdminManagerCredentialWithParams)
|
|
30
30
|
portalOpenMessage = "Aberto em seu navegador padrão"
|
|
31
31
|
} catch (error) {
|
|
32
|
-
portalOpenMessage = "Não foi possível abrir automaticamente. Copie o link e cole em seu navegador para fazer o login na Eitri
|
|
32
|
+
portalOpenMessage = "Não foi possível abrir automaticamente. Copie o link e cole em seu navegador para fazer o login na Eitri-CLI. " + urlAdminManagerCredentialWithParams
|
|
33
33
|
}
|
|
34
34
|
} else {
|
|
35
|
-
portalOpenMessage = "Copie o link e cole em seu navegador para fazer o login na Eitri
|
|
35
|
+
portalOpenMessage = "Copie o link e cole em seu navegador para fazer o login na Eitri-CLI. " + urlAdminManagerCredentialWithParams
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
console.log("\n", portalOpenMessage)
|
|
39
39
|
console.log("\n\n Aguardando autenticação...")
|
|
40
40
|
} catch (error) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
41
|
+
TrackingEitriAnalytics.sendEvent({
|
|
42
|
+
eventName: "login.error",
|
|
43
|
+
data: {
|
|
44
|
+
errorMessage: error?.message ?? ""
|
|
45
|
+
}
|
|
45
46
|
})
|
|
46
47
|
|
|
47
48
|
console.log('Erro inesperado, tente novamente mais tarde.', error?.message)
|
package/src/cmd/manage-env.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const path = require('path')
|
|
2
|
-
const
|
|
2
|
+
const configService = require('../service/ConfigService')
|
|
3
3
|
|
|
4
4
|
const { workspace } = require('../service/Workspace')
|
|
5
5
|
const MiniLog = require('../service/MiniLog')
|
|
@@ -15,7 +15,7 @@ const ManageEnvService = require('../service/ManageEnvService')
|
|
|
15
15
|
const manageEnvService = new ManageEnvService()
|
|
16
16
|
|
|
17
17
|
const blindGuardian = workspace.blindGuardian
|
|
18
|
-
const CONFIG_WORKSPACE =
|
|
18
|
+
const CONFIG_WORKSPACE = configService.get('workspace')
|
|
19
19
|
|
|
20
20
|
module.exports = async function manageEnv(envList, cmd) {
|
|
21
21
|
try {
|
|
@@ -31,7 +31,7 @@ module.exports = async function manageEnv(envList, cmd) {
|
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
const getEnv = async (cmd) => {
|
|
34
|
-
const miniLog = new MiniLog(
|
|
34
|
+
const miniLog = new MiniLog(configService.get('miniLog'))
|
|
35
35
|
const folder2watch = path.join(process.cwd(), 'src')
|
|
36
36
|
|
|
37
37
|
workspace.setFolder2Watch(folder2watch)
|
|
@@ -72,7 +72,7 @@ const setEnv = async (envList, cmd) => {
|
|
|
72
72
|
try {
|
|
73
73
|
panicCheckEnvList(envList)
|
|
74
74
|
const environmentVariables = environmentVariable(envList)
|
|
75
|
-
const miniLog = new MiniLog(
|
|
75
|
+
const miniLog = new MiniLog(configService.get('miniLog'))
|
|
76
76
|
const folder2watch = path.join(process.cwd(), 'src')
|
|
77
77
|
|
|
78
78
|
workspace.setFolder2Watch(folder2watch)
|
package/src/cmd/push-version.js
CHANGED
|
@@ -10,6 +10,7 @@ const inquirer = require('inquirer')
|
|
|
10
10
|
const TrackingEitriAnalytics = require('../service/TrackingEitriAnalytics')
|
|
11
11
|
const VegvisirService = require('../modules/vegvisir/VegvisirService')
|
|
12
12
|
const getWorkspace = require('../util/getWorkspace')
|
|
13
|
+
const UserLocalCredential = require('../util/UserLocalCredential')
|
|
13
14
|
|
|
14
15
|
const blindGuardian = workspace.blindGuardian
|
|
15
16
|
const trackingService = new TrackingService(blindGuardian)
|
|
@@ -17,6 +18,14 @@ const targetService = new TargetService(workspace)
|
|
|
17
18
|
const vegvisirService = new VegvisirService()
|
|
18
19
|
|
|
19
20
|
module.exports = async function pushVersion(cmdObj) {
|
|
21
|
+
try {
|
|
22
|
+
UserLocalCredential.checkForCredentials()
|
|
23
|
+
} catch (error) {
|
|
24
|
+
const errorMessage = cmdObj?.verbose ? error : error?.message
|
|
25
|
+
console.error("\n", errorMessage, "\n")
|
|
26
|
+
return
|
|
27
|
+
}
|
|
28
|
+
|
|
20
29
|
try {
|
|
21
30
|
await validator.assertPushVersionMessage(cmdObj.message)
|
|
22
31
|
await validator.assertCommandNotRunning('push-version')
|
|
@@ -45,19 +54,19 @@ module.exports = {
|
|
|
45
54
|
"name": "Minha Empresa"
|
|
46
55
|
},
|
|
47
56
|
|
|
48
|
-
// Nome do seu
|
|
49
|
-
"name": "Meu
|
|
57
|
+
// Nome do seu Eitri-App
|
|
58
|
+
"name": "Meu Eitri-App",
|
|
50
59
|
|
|
51
|
-
// Titulo do
|
|
52
|
-
"title": "Meu super
|
|
60
|
+
// Titulo do Eitri-App
|
|
61
|
+
"title": "Meu super Eitri-App",
|
|
53
62
|
|
|
54
63
|
// Chave para gerar a ordem/qrcode de pagamento (opcional)
|
|
55
64
|
"public-key": "",
|
|
56
65
|
|
|
57
|
-
// Identificador
|
|
66
|
+
// Identificador amigável para colocar em uma url
|
|
58
67
|
"slug": "com.eitri.loja",
|
|
59
68
|
|
|
60
|
-
//
|
|
69
|
+
// Versão do Eitri-App
|
|
61
70
|
"version": "1.0.0",
|
|
62
71
|
|
|
63
72
|
${await targetService.getAppConfExampleSnippet()}
|
|
@@ -85,14 +94,14 @@ ${await targetService.getAppConfExampleSnippet()}
|
|
|
85
94
|
// await logPermissionsAndOpenPrompt(addedPermissions, removedPermissions, cmdObj)
|
|
86
95
|
// console.log(separator)
|
|
87
96
|
|
|
88
|
-
console.log('Preparando os arquivos do seu
|
|
97
|
+
console.log('Preparando os arquivos do seu Eitri-App')
|
|
89
98
|
|
|
90
99
|
await workspace.uploadAll()
|
|
91
100
|
const webhooks = workspace.getWebhooks()
|
|
92
101
|
printAvailableWebhooks(webhooks)
|
|
93
102
|
console.log('')
|
|
94
103
|
console.log(separator)
|
|
95
|
-
console.log('Gerando
|
|
104
|
+
console.log('Gerando Eitri-App')
|
|
96
105
|
|
|
97
106
|
const start = Date.now()
|
|
98
107
|
let pushVersionPromise = miniLog.awaitForPushVersion()
|
|
@@ -100,17 +109,17 @@ ${await targetService.getAppConfExampleSnippet()}
|
|
|
100
109
|
await pushVersionPromise
|
|
101
110
|
console.log(separator)
|
|
102
111
|
console.log('\x1b[1m\x1b[32mSucesso!!\x1b[0m');
|
|
103
|
-
console.log(`\x1b[1mA versão [${miniConf.version}] do seu
|
|
104
|
-
console.log('\x1b[1mdisponível no Eitri Console
|
|
112
|
+
console.log(`\x1b[1mA versão [${miniConf.version}] do seu Eitri-App foi enviada e está\x1b[0m`);
|
|
113
|
+
console.log('\x1b[1mdisponível no Eitri Console\x1b[0m');
|
|
105
114
|
console.log(separator)
|
|
106
115
|
|
|
107
116
|
const organization = miniConf?.organization ? Object.keys(miniConf?.organization).length !== 0 ? miniConf?.organization : "-" : {
|
|
108
117
|
id: miniConf?.organizationId
|
|
109
118
|
}
|
|
110
119
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
120
|
+
TrackingEitriAnalytics.sendEvent({
|
|
121
|
+
eventName: "push-version",
|
|
122
|
+
userId: workspace?.userEmail,
|
|
114
123
|
data: {
|
|
115
124
|
eitriApp: {
|
|
116
125
|
...miniConf,
|
|
@@ -132,10 +141,12 @@ ${await targetService.getAppConfExampleSnippet()}
|
|
|
132
141
|
console.log(`\x1b[1m\x1b[31mNão será possível continuar por enquanto. Ocorreu um erro.\x1b[0m`);
|
|
133
142
|
}
|
|
134
143
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
144
|
+
TrackingEitriAnalytics.sendEvent({
|
|
145
|
+
eventName: "push-version.error",
|
|
146
|
+
userId: workspace?.userEmail,
|
|
147
|
+
data: {
|
|
148
|
+
errorMessage: e?.message ?? ""
|
|
149
|
+
}
|
|
139
150
|
})
|
|
140
151
|
process.exit(1)
|
|
141
152
|
}
|
|
@@ -143,7 +154,7 @@ ${await targetService.getAppConfExampleSnippet()}
|
|
|
143
154
|
|
|
144
155
|
function printAvailableWebhooks(webhooks) {
|
|
145
156
|
if(!webhooks || webhooks.length === 0) return
|
|
146
|
-
console.log('\nWebhooks do
|
|
157
|
+
console.log('\nWebhooks do Eitri-App.')
|
|
147
158
|
console.table(webhooks)
|
|
148
159
|
}
|
|
149
160
|
|
package/src/cmd/signup.js
CHANGED
|
@@ -35,17 +35,19 @@ module.exports = async function signup(args) {
|
|
|
35
35
|
new UserLocalCredential().saveContent(conf)
|
|
36
36
|
|
|
37
37
|
TrackingEitriAnalytics.sendEvent({
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
eventName: "signup",
|
|
39
|
+
userId: email,
|
|
40
40
|
data: {
|
|
41
41
|
args
|
|
42
42
|
}
|
|
43
43
|
})
|
|
44
44
|
} catch (e) {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
TrackingEitriAnalytics.sendEvent({
|
|
46
|
+
eventName: "signup.error",
|
|
47
|
+
userId: email,
|
|
48
|
+
data: {
|
|
49
|
+
errorMessage: e?.message ?? ""
|
|
50
|
+
}
|
|
49
51
|
})
|
|
50
52
|
|
|
51
53
|
if (args.verbose) console.error(e)
|
package/src/cmd/start.js
CHANGED
|
@@ -13,6 +13,7 @@ const inquirer = require('inquirer')
|
|
|
13
13
|
const TrackingEitriAnalytics = require('../service/TrackingEitriAnalytics')
|
|
14
14
|
const VegvisirService = require('../modules/vegvisir/VegvisirService')
|
|
15
15
|
const getWorkspace = require('../util/getWorkspace')
|
|
16
|
+
const UserLocalCredential = require('../util/UserLocalCredential')
|
|
16
17
|
|
|
17
18
|
const blindGuardian = workspace.blindGuardian
|
|
18
19
|
const hashFolder = workspace.hashFolder
|
|
@@ -21,6 +22,14 @@ const watcher = new Watcher(workspace, hashFolder, trackingService)
|
|
|
21
22
|
const vegvisirService = new VegvisirService()
|
|
22
23
|
|
|
23
24
|
module.exports = async function start(args) {
|
|
25
|
+
try {
|
|
26
|
+
UserLocalCredential.checkForCredentials()
|
|
27
|
+
} catch (error) {
|
|
28
|
+
const errorMessage = args?.verbose ? error : error?.message
|
|
29
|
+
console.error("\n", errorMessage, "\n")
|
|
30
|
+
return
|
|
31
|
+
}
|
|
32
|
+
|
|
24
33
|
try {
|
|
25
34
|
if (!args.force) {
|
|
26
35
|
await validator.assertCommandNotRunning('start')
|
|
@@ -85,43 +94,22 @@ module.exports = async function start(args) {
|
|
|
85
94
|
await handleStartServer(args, trackingService, watcher, workspace, target, targetConfig, platform)
|
|
86
95
|
|
|
87
96
|
TrackingEitriAnalytics.sendEvent({
|
|
88
|
-
|
|
89
|
-
|
|
97
|
+
eventName:"start",
|
|
98
|
+
userId: workspace?.userEmail,
|
|
90
99
|
data: {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
name: workspace?.target?.name,
|
|
96
|
-
superAppClientLibName: workspace?.target?.superAppClientLibName,
|
|
97
|
-
componentsLibName: workspace?.target?.componentsLibName,
|
|
98
|
-
description: workspace?.target?.description,
|
|
99
|
-
status: workspace?.target?.status,
|
|
100
|
-
platform: workspace?.target?.platform,
|
|
101
|
-
organization: {...workspace?.target?.organization},
|
|
102
|
-
userEmail: workspace?.userEmail,
|
|
103
|
-
},
|
|
104
|
-
eitriApp: {
|
|
105
|
-
name: workspace?._miniConf?.name,
|
|
106
|
-
title: workspace?._miniConf?.title,
|
|
107
|
-
slug: workspace?._miniConf?.slug,
|
|
108
|
-
version: workspace?._miniConf?.version,
|
|
109
|
-
organization: workspace?._miniConf?.organization,
|
|
110
|
-
"eitri-app-components": workspace?._miniConf?.["eitri-app-components"],
|
|
111
|
-
"eitri-app-client": workspace?._miniConf?.["eitri-app-client"],
|
|
112
|
-
"eitri-commons": workspace?._miniConf?.["eitri-commons"],
|
|
113
|
-
publickey: workspace?._miniConf?.["public-key"]
|
|
114
|
-
}
|
|
100
|
+
workspace,
|
|
101
|
+
userWorkspace,
|
|
102
|
+
miniConf,
|
|
103
|
+
args
|
|
115
104
|
}
|
|
116
105
|
})
|
|
117
106
|
} catch (e) {
|
|
118
107
|
TrackingEitriAnalytics.sendEvent({
|
|
119
|
-
|
|
120
|
-
|
|
108
|
+
eventName: "start.error",
|
|
109
|
+
userId: workspace?.userEmail,
|
|
121
110
|
data: {
|
|
122
|
-
|
|
123
|
-
}
|
|
124
|
-
errorMessage: e?.message || ""
|
|
111
|
+
errorMessage: e?.message || "start.error"
|
|
112
|
+
}
|
|
125
113
|
})
|
|
126
114
|
|
|
127
115
|
if (args.verbose) console.error(e)
|
|
@@ -174,5 +162,5 @@ async function listTargetConfigs(target) {
|
|
|
174
162
|
]).then(input => input)
|
|
175
163
|
|
|
176
164
|
const config = availableConfigs.find(cfg => cfg.id === res.accepted)
|
|
177
|
-
console.log(`Utilize o comando --target-config ${config.id} para iniciar o
|
|
165
|
+
console.log(`Utilize o comando --target-config ${config.id} para iniciar o Eitri-App com a configuração desejada`)
|
|
178
166
|
}
|
package/src/cmd/tail-logs.js
CHANGED
|
@@ -9,14 +9,14 @@ const hashFolder = new HashFolder()
|
|
|
9
9
|
const workspace = new Workspace(blindGuardian, hashFolder)
|
|
10
10
|
|
|
11
11
|
module.exports = async function tailLogs(clientEmail) {
|
|
12
|
-
const
|
|
13
|
-
const miniLog = new MiniLog(
|
|
12
|
+
const configService = require('../service/ConfigService')
|
|
13
|
+
const miniLog = new MiniLog(configService.get('miniLog'))
|
|
14
14
|
version()
|
|
15
15
|
const folder2watch = path.join(process.cwd(), 'src')
|
|
16
16
|
workspace.setFolder2Watch(folder2watch)
|
|
17
17
|
blindGuardian.readConf()
|
|
18
18
|
|
|
19
|
-
const url =
|
|
19
|
+
const url = configService.get('workspace').url
|
|
20
20
|
workspace.setServerUrl(url)
|
|
21
21
|
await workspace.init()
|
|
22
22
|
await miniLog.connect(workspace.userEmail)
|
package/src/model/Payload.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const { default: axios } = require("../../../node_modules/axios/index");
|
|
2
2
|
const BlindGuardian = require("../../service/BlindGuardian");
|
|
3
3
|
const Http = require("../../service/Http");
|
|
4
|
-
const
|
|
4
|
+
const configService = require("../../service/ConfigService");
|
|
5
5
|
const getWorkspace = require("../../util/getWorkspace");
|
|
6
6
|
const writeGlobalWorkspaceConfig = require("./utils/writeGlobalWorkspaceConfig");
|
|
7
7
|
|
|
@@ -9,7 +9,7 @@ module.exports = class VegvisirService {
|
|
|
9
9
|
constructor() {
|
|
10
10
|
const blindGuardian = new BlindGuardian();
|
|
11
11
|
this.http = new Http(blindGuardian);
|
|
12
|
-
this.config =
|
|
12
|
+
this.config = configService.get("vegvisir");
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
async listMyWorkspaces() {
|
|
@@ -31,7 +31,7 @@ module.exports = class VegvisirService {
|
|
|
31
31
|
|
|
32
32
|
}
|
|
33
33
|
} else {
|
|
34
|
-
console.error("Houve um erro inesperado ao listar workspaces");
|
|
34
|
+
console.error("Houve um erro inesperado ao listar workspaces: \n", error?.message);
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
}
|
|
@@ -70,7 +70,7 @@ module.exports = class VegvisirService {
|
|
|
70
70
|
);
|
|
71
71
|
return process.exit(0)
|
|
72
72
|
}
|
|
73
|
-
console.error("
|
|
73
|
+
console.error("Ocorreu um erro inesperado ao listar workspaces", error?.message);
|
|
74
74
|
return process.exit(0)
|
|
75
75
|
}
|
|
76
76
|
console.error(error.message)
|
|
@@ -8,6 +8,7 @@ module.exports = async function list(cmdObj) {
|
|
|
8
8
|
console.log("\tWorkspaces Disponíveis");
|
|
9
9
|
console.log("=======================================\n");
|
|
10
10
|
for (const workspace of workspaces) {
|
|
11
|
-
console.log(
|
|
11
|
+
console.log(`Workspace: ${workspace.name}`);
|
|
12
|
+
console.log(` Id: ${workspace.id}`);
|
|
12
13
|
}
|
|
13
14
|
};
|
|
@@ -37,7 +37,7 @@ async function writeLocalWorkspaceConfig(selectedWorkspace) {
|
|
|
37
37
|
|
|
38
38
|
if (!existsSync(oldConfPath) && !existsSync(eitriAppConfPath)) {
|
|
39
39
|
console.error(
|
|
40
|
-
"Você só pode selecionar um workspace como local dentro de um projeto de
|
|
40
|
+
"Você só pode selecionar um workspace como local dentro de um projeto de Eitri-App"
|
|
41
41
|
);
|
|
42
42
|
return;
|
|
43
43
|
}
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
const fs = require('fs')
|
|
2
|
-
const os = require('os')
|
|
3
|
-
const path = require('path')
|
|
4
1
|
const axios = require('axios')
|
|
5
|
-
const
|
|
2
|
+
const configService = require('../service/ConfigService')
|
|
6
3
|
const { exit } = require('process')
|
|
7
4
|
|
|
8
5
|
const DEFAULT_ENV = 'hml'
|
|
@@ -10,7 +7,7 @@ const DEFAULT_ENV = 'hml'
|
|
|
10
7
|
class AuthConfig { // abastract
|
|
11
8
|
|
|
12
9
|
constructor() {
|
|
13
|
-
this.blindGuardianUrl =
|
|
10
|
+
this.blindGuardianUrl = configService.get('blindGuardian').url
|
|
14
11
|
}
|
|
15
12
|
|
|
16
13
|
getConfPath() {}
|
|
@@ -18,12 +15,12 @@ class AuthConfig { // abastract
|
|
|
18
15
|
readConf() {}
|
|
19
16
|
|
|
20
17
|
readClientCredentials() {
|
|
21
|
-
const
|
|
18
|
+
const credentialConfig = this.readConf()
|
|
22
19
|
let data
|
|
23
|
-
if (this._isOldProfileVersion(
|
|
20
|
+
if (this._isOldProfileVersion(credentialConfig)) {
|
|
24
21
|
data = {
|
|
25
|
-
client_id:
|
|
26
|
-
client_secret:
|
|
22
|
+
client_id: credentialConfig.devUser,
|
|
23
|
+
client_secret: credentialConfig.devKey,
|
|
27
24
|
grant_type: 'client_credentials'
|
|
28
25
|
}
|
|
29
26
|
}
|
|
@@ -31,8 +28,8 @@ class AuthConfig { // abastract
|
|
|
31
28
|
const env = process.env.NODE_ENV || DEFAULT_ENV
|
|
32
29
|
try {
|
|
33
30
|
data = {
|
|
34
|
-
client_id:
|
|
35
|
-
client_secret:
|
|
31
|
+
client_id: credentialConfig[env].devUser,
|
|
32
|
+
client_secret: credentialConfig[env].devKey,
|
|
36
33
|
grant_type: 'client_credentials'
|
|
37
34
|
}
|
|
38
35
|
}
|
|
@@ -61,7 +58,7 @@ class AuthConfig { // abastract
|
|
|
61
58
|
const url = `${this.blindGuardianUrl}/v1/o/auth`
|
|
62
59
|
const options = {
|
|
63
60
|
headers : {
|
|
64
|
-
'User-Agent':
|
|
61
|
+
'User-Agent': configService.get('userAgent')
|
|
65
62
|
}
|
|
66
63
|
}
|
|
67
64
|
const auth = await axios.post(url, clientCredentials, options)
|