eitri-cli 1.0.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/README.md +54 -0
- package/bitbucket-pipelines.toBeChanged.yml +64 -0
- package/boilerplate/mini-app-cafe-madeira.zip +0 -0
- package/check-version.js +12 -0
- package/config/default-eitri.js +1 -0
- package/config/dev.js +91 -0
- package/config/k8s-eitri.js +92 -0
- package/config/loc-eitri.js +92 -0
- package/config/prod-eitri.js +92 -0
- package/config/test-eitri.js +2 -0
- package/index-eitri.js +6 -0
- package/index.js +182 -0
- package/install-dev.bat +1 -0
- package/install-dev.sh +1 -0
- package/jest.config.js +6 -0
- package/jsconfig.json +9 -0
- package/package.json +80 -0
- package/publisher.js +53 -0
- package/src/cmd/clean.js +179 -0
- package/src/cmd/create.js +281 -0
- package/src/cmd/credentials.js +105 -0
- package/src/cmd/invite.js +87 -0
- package/src/cmd/list.js +36 -0
- package/src/cmd/login.js +51 -0
- package/src/cmd/manage-env.js +129 -0
- package/src/cmd/open-share.js +6 -0
- package/src/cmd/order-details.js +6 -0
- package/src/cmd/push-version.js +182 -0
- package/src/cmd/show-message-if-outdated-package.js +32 -0
- package/src/cmd/signup.js +69 -0
- package/src/cmd/start.js +171 -0
- package/src/cmd/tail-logs.js +26 -0
- package/src/cmd/test-initialization-params.js +6 -0
- package/src/cmd/validate.js +170 -0
- package/src/cmd/version.js +29 -0
- package/src/enum/WatcherOpts.js +3 -0
- package/src/enum/target.js +6 -0
- package/src/helpers/request-listener-helper.js +55 -0
- package/src/model/Payload.js +45 -0
- package/src/model/Target.js +76 -0
- package/src/model/User.js +11 -0
- package/src/service/AuthConfig.js +88 -0
- package/src/service/BlindGuardian.js +134 -0
- package/src/service/CliLogin.js +47 -0
- package/src/service/ConfigService.js +16 -0
- package/src/service/CredentialsService.js +47 -0
- package/src/service/GATrackingStrategy.js +16 -0
- package/src/service/HashFolder.js +79 -0
- package/src/service/Http.js +234 -0
- package/src/service/InviteService.js +45 -0
- package/src/service/ManageEnvService.js +10 -0
- package/src/service/MiniLog.js +132 -0
- package/src/service/QRCodeFactory.js +43 -0
- package/src/service/Server.js +239 -0
- package/src/service/StarterService.js +31 -0
- package/src/service/TagTree.js +101 -0
- package/src/service/TargetService.js +97 -0
- package/src/service/TrackService.js +11 -0
- package/src/service/TrackingEitriAnalytics.js +32 -0
- package/src/service/TrackingService.js +183 -0
- package/src/service/ValidateResult.js +57 -0
- package/src/service/Watcher.js +119 -0
- package/src/service/Workspace.js +1069 -0
- package/src/service/WorkspaceManager.js +74 -0
- package/src/service/factories/DoubtsStarterFactory.js +25 -0
- package/src/service/factories/MiniWebAppFactory.js +43 -0
- package/src/service/factories/QRCodeStarterFactory.js +78 -0
- package/src/service/factories/WebStarterFactory.js +88 -0
- package/src/service/factories/WoodCoffeeFactory.js +230 -0
- package/src/util/AboutTemplate.jsx +14 -0
- package/src/util/UrlUtils.js +12 -0
- package/src/util/UserLocalCredential.js +122 -0
- package/src/util/error-messages/error-messages.js +24 -0
- package/src/util/error-messages/invite/invite-error-messages.js +14 -0
- package/src/util/getCliVersion.js +13 -0
- package/src/util/getCreateFactory.js +9 -0
- package/src/util/ipv4.js +19 -0
- package/src/util/manage-env.js +65 -0
- package/src/util/open-docs.js +7 -0
- package/src/util/os.js +39 -0
- package/src/util/server-url.js +15 -0
- package/src/util/template-utils.js +21 -0
- package/src/view/index.html +19 -0
- package/targetMobileStickyness.md +47 -0
- package/targetWebStickyness.md +40 -0
- package/test/_fixtures/factory.js +30 -0
- package/test/_fixtures/miniWebApp/miniapp.conf.js +4 -0
- package/test/_fixtures/miniapp.conf.js +5 -0
- package/test/_fixtures/server/HelloWorldBackend.js +7 -0
- package/test/_fixtures/src/Home.js +5 -0
- package/test/_fixtures/src/Home2.js +5 -0
- package/test/_fixtures/src/commons/util.js +3 -0
- package/test/_fixtures/src/components/TagA.jsx +4 -0
- package/test/_fixtures/src/components/TagB.jsx +4 -0
- package/test/_fixtures/src/components/TagC.jsx +3 -0
- package/test/_fixtures/src/components/TagD.jsx +3 -0
- package/test/_fixtures/src/server/foo.js +7 -0
- package/test/_fixtures/src/views/AboutTemplate.jsx +14 -0
- package/test/_fixtures/woodcoffee/miniapp.conf.js +3 -0
- package/test/ame.conf.js +3 -0
- package/test/cmd/clean.test.js +66 -0
- package/test/cmd/create.test.js +252 -0
- package/test/cmd/credentials.test.js +159 -0
- package/test/cmd/list.test.js +74 -0
- package/test/cmd/manage-env.test.js +168 -0
- package/test/cmd/signup.test.js +20 -0
- package/test/cmd/start.test.js +5 -0
- package/test/miniapp.conf.js +3 -0
- package/test/model/Payload.test.js +35 -0
- package/test/service/BlindGuardian.test.js +84 -0
- package/test/service/CheckAmeConf.test.js +313 -0
- package/test/service/Http.test.js +312 -0
- package/test/service/InviteService.test.js +117 -0
- package/test/service/MiniWebAppFactory.test.js +40 -0
- package/test/service/TagTree.test.js +81 -0
- package/test/service/TargetService.test.js +48 -0
- package/test/service/TrackingService.test.js +105 -0
- package/test/service/UserAmeConf.test.js +47 -0
- package/test/service/WoodCoffeeFactory.test.js +148 -0
- package/test/service/Workspace.test.js +364 -0
- package/thinQrCode.md +58 -0
- package/v1.5.0.md +3 -0
package/index.js
ADDED
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
require('./check-version')
|
|
2
|
+
process.env['NODE_CONFIG_DIR'] = __dirname + '/config/'
|
|
3
|
+
const commander = require('commander')
|
|
4
|
+
const program = new commander.Command()
|
|
5
|
+
const emoji = require('emojilib')
|
|
6
|
+
const path = require('path')
|
|
7
|
+
const {workspace} = require('./src/service/Workspace')
|
|
8
|
+
const config = require('config')
|
|
9
|
+
|
|
10
|
+
const run = async () => {
|
|
11
|
+
try {
|
|
12
|
+
|
|
13
|
+
const srcFolder2watch = path.join(process.cwd(), 'src')
|
|
14
|
+
workspace.setFolder2Watch(srcFolder2watch)
|
|
15
|
+
workspace.setServerUrl(`${config.get('workspace').url}`)
|
|
16
|
+
} catch (e) {
|
|
17
|
+
if (process.env.LOG_LEVEL === 'full') {
|
|
18
|
+
console.log('Current directory listening has failed', e)
|
|
19
|
+
}
|
|
20
|
+
// Continuando como antes...
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
program.option('-v, --version', 'Mostra a versao da CLI', () => {
|
|
24
|
+
const {version} = require('./src/cmd/version')
|
|
25
|
+
version()
|
|
26
|
+
})
|
|
27
|
+
|
|
28
|
+
program
|
|
29
|
+
.command('login')
|
|
30
|
+
.description('Configura suas credenciais de desenvolvedor no dispositivo local')
|
|
31
|
+
.action(async (cmdObj) => {
|
|
32
|
+
require('./src/cmd/login')(cmdObj)
|
|
33
|
+
})
|
|
34
|
+
|
|
35
|
+
program
|
|
36
|
+
.command('create <project-name>')
|
|
37
|
+
.description(`Cria um projeto com um mini app totalmente funcional. Mais detalhes em ${config?.doc?.createUrl}`)
|
|
38
|
+
.option('--yes', 'Aceita os valores default para nome titulo e organizacao')
|
|
39
|
+
.option('--template <template-name>', 'Define um boilerplate para a criação do projeto')
|
|
40
|
+
.option('--target', 'Define a plataforma de execução do Mini App')
|
|
41
|
+
.option('-v, --verbose', 'Exibe mais logs')
|
|
42
|
+
.action((projectName, cmdObj) => {
|
|
43
|
+
require('./src/cmd/create')(projectName, cmdObj)
|
|
44
|
+
})
|
|
45
|
+
|
|
46
|
+
let startProgram = program
|
|
47
|
+
.command('start')
|
|
48
|
+
.description('Inicia o seu mini app em um workspace online')
|
|
49
|
+
.option('-A, --upload-all', '(Obsoleto) Sobe todos os arquivos. O mesmo funcionamento é garantido usando-o ou não')
|
|
50
|
+
.option('-v, --verbose', 'Exibe mais logs')
|
|
51
|
+
.option('-N, --new-qrcode', '(Obsoleto) Novo qrcode. O mesmo funcionamento é garantido usando-o ou não')
|
|
52
|
+
.option('-Q, --old-qrcode', 'QR Code legado')
|
|
53
|
+
.option('-f, --force', 'Força o start')
|
|
54
|
+
.option('-S, --show-deeplink', 'Exibe o deep link do workspace')
|
|
55
|
+
.option('-z, --zip', '(Obsoleto) Envia os arquivos do projeto compactados para o compilador. O mesmo funcionamento é garantido usando-o ou não')
|
|
56
|
+
.option('-U, --unzip', 'Faz o upload descompactado, arquivo a arquivo, para o compilador')
|
|
57
|
+
.option('-P, --qr-printer <qrPrinter>', 'Indica qual programa imprimirá o QR Code. Se omitido, abre o browser default do usuário. Valores válidos: terminal|chrome|msedge|firefox')
|
|
58
|
+
.option('-e, --emulator', 'Simula o ambiente de exibição do Mini App.')
|
|
59
|
+
.option('-c, --target-config <config>', 'Define uma configuração específica para o target do mini-app. Visite nossa documentação on-line para conhecer os cenários em que é necessário utilizar um target-config.', 'default')
|
|
60
|
+
.option('-l, --list-target-configs', 'Exibe lista de configurações cadastradas para o target do miniapp')
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
startProgram.action(cmdObj => {
|
|
64
|
+
if (cmdObj.zip) {
|
|
65
|
+
console.log('Uso de -z ou --zip é redundante. O eitri-app-tools já envia para o compilador os arquivos compactados.')
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
if (cmdObj.newQrcode) {
|
|
69
|
+
console.log('Uso de -N ou --new-qrcode é redundante. O eitri-app-tools já otimiza o Qr Code.')
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if (cmdObj.uploadAll) {
|
|
73
|
+
console.log('Uso de -A ou --upload-all é redundante. O eitri-app-tools já faz o envio em lote dos arquivos do projeto')
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
require('./src/cmd/start')(cmdObj)
|
|
77
|
+
})
|
|
78
|
+
|
|
79
|
+
// program
|
|
80
|
+
// .command('test-initialization-params <initializationParams>')
|
|
81
|
+
// .description('Passa parâmetros em querystring para a inicialização do mini app. ex: "stringChave1=stringValor1&stringChave2=stringValor2..."')
|
|
82
|
+
// .option('-Q, --old-qrcode', 'QR Code legado')
|
|
83
|
+
// .option('-N, --new-qrcode', '(Obsoleto) Novo qrcode')
|
|
84
|
+
// .option('-S, --show-deeplink', 'Exibe o deep link do workspace')
|
|
85
|
+
// .option('-V, --verbose', 'Exibe mais logs')
|
|
86
|
+
// .action((initializationParams, cmdObj) => {
|
|
87
|
+
// if (cmdObj.newQrcode) {
|
|
88
|
+
// console.log('Uso de -N ou --new-qrcode é redundante. O "eitri" já otimiza o Qr Code.')
|
|
89
|
+
// }
|
|
90
|
+
|
|
91
|
+
// require('./src/cmd/test-initialization-params')(initializationParams, cmdObj)
|
|
92
|
+
// })
|
|
93
|
+
|
|
94
|
+
// program
|
|
95
|
+
// .command('order-details <orderId>')
|
|
96
|
+
// .description('Abre o mini app na tela de detalhes da ordem')
|
|
97
|
+
// .option('-l, --local', 'Aponta para o servidor local')
|
|
98
|
+
// .option('-A, --upload-all', 'Sobe todos os arquivos')
|
|
99
|
+
// .action((orderId, cmdObj) => {
|
|
100
|
+
// require('./src/cmd/order-details')(orderId, cmdObj)
|
|
101
|
+
// })
|
|
102
|
+
|
|
103
|
+
program
|
|
104
|
+
.command('push-version')
|
|
105
|
+
.description('Cria e envia um build do mini app para ser avaliado por um revisor antes de ser publicado')
|
|
106
|
+
.option('-l, --local', 'Aponta para o servidor local')
|
|
107
|
+
.option('-v, --verbose', 'Exibe mais logs')
|
|
108
|
+
.option('-m, --message <revision-message>', 'Adiciona comentários ao build')
|
|
109
|
+
.option('-y, --yes', 'Aceita automaticamente as respostas do prompt.')
|
|
110
|
+
.action(cmdObj => {
|
|
111
|
+
require('./src/cmd/push-version')(cmdObj)
|
|
112
|
+
})
|
|
113
|
+
|
|
114
|
+
// program
|
|
115
|
+
// .command('clean')
|
|
116
|
+
// .description(
|
|
117
|
+
// 'Realiza a limpeza do workspace remoto do desenvolvedor. Útil quando há mal fucionamento na compilação em nuvem do eitri-app.'
|
|
118
|
+
// )
|
|
119
|
+
// .option('-v, --verbose', 'Exibe mais logs')
|
|
120
|
+
// .action(cmdObj => {
|
|
121
|
+
// require('./src/cmd/clean')(cmdObj)
|
|
122
|
+
// })
|
|
123
|
+
|
|
124
|
+
program
|
|
125
|
+
.command('self-update')
|
|
126
|
+
.description('Desinstala a versao antiga e instala a mais nova')
|
|
127
|
+
.action(() => {
|
|
128
|
+
require('child_process').execSync(
|
|
129
|
+
'npm uninstall -g eitri && npm i eitri -g',
|
|
130
|
+
{stdio: 'inherit'}
|
|
131
|
+
)
|
|
132
|
+
})
|
|
133
|
+
|
|
134
|
+
// program
|
|
135
|
+
// .command('open-share <share-id>')
|
|
136
|
+
// .description('Abre um compartilhamento do share-api')
|
|
137
|
+
// .action((shareId, cmdObj) =>
|
|
138
|
+
// require('./src/cmd/open-share')(shareId, cmdObj)
|
|
139
|
+
// )
|
|
140
|
+
|
|
141
|
+
// program
|
|
142
|
+
// .command('tail-logs <email>')
|
|
143
|
+
// .description('Para ler logs de prod do email')
|
|
144
|
+
// .action((email, cmdObj) => {
|
|
145
|
+
// require('./src/cmd/tail-logs')(email, cmdObj)
|
|
146
|
+
// })
|
|
147
|
+
|
|
148
|
+
// program
|
|
149
|
+
// .command('invite [email]')
|
|
150
|
+
// .option('--remove', 'Remove o desenvolvedor')
|
|
151
|
+
// .option('--list', 'Lista todos os desenvolvedores')
|
|
152
|
+
// .option('--accept', 'Aceita um convite')
|
|
153
|
+
// .option('-v, --verbose', 'Exibe mais logs')
|
|
154
|
+
// .description('Convida um desenvolvedor para contribuir com o seu miniapp')
|
|
155
|
+
// .action((email, cmdObj) => require('./src/cmd/invite')(email, cmdObj))
|
|
156
|
+
|
|
157
|
+
// program
|
|
158
|
+
// .command('list')
|
|
159
|
+
// .description('Lista as opções de um determinado comando')
|
|
160
|
+
// .option('--template', 'exibe os tipos de templates disponíveis, para gerar um exemplo de projeto.')
|
|
161
|
+
// .action((cmdObj) =>
|
|
162
|
+
// require('./src/cmd/list')(cmdObj))
|
|
163
|
+
|
|
164
|
+
// if (!process.argv.slice(2).length) {
|
|
165
|
+
// program.outputHelp()
|
|
166
|
+
// }
|
|
167
|
+
if (
|
|
168
|
+
process.argv.length > 2 &&
|
|
169
|
+
!program.commands.map(cmd => cmd._name).includes(process.argv[2])
|
|
170
|
+
) {
|
|
171
|
+
if (!process.argv[2].startsWith('-')) {
|
|
172
|
+
console.log(
|
|
173
|
+
`\n ${emoji.lib.rotating_light.char} Comando ${process.argv[2]} inexistente.\n`
|
|
174
|
+
)
|
|
175
|
+
program.help()
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
program.parse(process.argv)
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
module.exports = run
|
package/install-dev.bat
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
npm uninstall eitri -g && npm i -g
|
package/install-dev.sh
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
npm uninstall eitri -g && npm i -g
|
package/jest.config.js
ADDED
package/jsconfig.json
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "eitri-cli",
|
|
3
|
+
"version": "1.0.2",
|
|
4
|
+
"description": "Command Line Interface to make \"eitri app\" with code and fire.",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"eitri": "index-eitri.js"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"test-eitri": "NODE_APP_INSTANCE=eitri jest --detectOpenHandles",
|
|
11
|
+
"linter": "./node_modules/.bin/eslint --fix ./src/**/*.js",
|
|
12
|
+
"docsify:run": "cd docsify && docsify serve",
|
|
13
|
+
"build": "echo \"no build\""
|
|
14
|
+
},
|
|
15
|
+
"engines": {
|
|
16
|
+
"node": ">=10.0.0",
|
|
17
|
+
"npm": ">=3.0.0"
|
|
18
|
+
},
|
|
19
|
+
"keywords": [],
|
|
20
|
+
"author": "Calindra",
|
|
21
|
+
"license": "ISC",
|
|
22
|
+
"lint-staged": {
|
|
23
|
+
"*.js": [
|
|
24
|
+
"./node_modules/.bin/eslint --fix",
|
|
25
|
+
"git add"
|
|
26
|
+
]
|
|
27
|
+
},
|
|
28
|
+
"dependencies": {
|
|
29
|
+
"adm-zip": "^0.5.9",
|
|
30
|
+
"axios": "0.21.3",
|
|
31
|
+
"axios-cookiejar-support": "^0.5.1",
|
|
32
|
+
"base-64": "^0.1.0",
|
|
33
|
+
"base64url": "^3.0.1",
|
|
34
|
+
"chalk": "^3.0.0",
|
|
35
|
+
"cheerio": "^1.0.0-rc.3",
|
|
36
|
+
"cli-progress": "^3.4.0",
|
|
37
|
+
"commander": "^9.2.0",
|
|
38
|
+
"config": "^3.3.0",
|
|
39
|
+
"emojilib": "^2.4.0",
|
|
40
|
+
"express": "^4.17.3",
|
|
41
|
+
"express-rate-limit": "^6.3.0",
|
|
42
|
+
"figlet": "^1.2.4",
|
|
43
|
+
"folder-hash": "^3.3.0",
|
|
44
|
+
"form-data": "^3.0.0",
|
|
45
|
+
"inquirer": "^7.0.0",
|
|
46
|
+
"jsonwebtoken": "^8.5.1",
|
|
47
|
+
"lz-string": "^1.5.0",
|
|
48
|
+
"node-watch": "^0.6.3",
|
|
49
|
+
"open": "^7.0.0",
|
|
50
|
+
"ps-node": "^0.1.6",
|
|
51
|
+
"qrcode": "^1.4.4",
|
|
52
|
+
"qrcode-terminal": "^0.12.0",
|
|
53
|
+
"semver": "^7.1.3",
|
|
54
|
+
"slugify": "^1.4.0",
|
|
55
|
+
"socket.io-client": "^4.5.2",
|
|
56
|
+
"temp-dir": "^2.0.0",
|
|
57
|
+
"tmp": "^0.1.0",
|
|
58
|
+
"tough-cookie": "^3.0.1",
|
|
59
|
+
"tough-cookie-file-store": "^2.0.2",
|
|
60
|
+
"uuid": "^7.0.2"
|
|
61
|
+
},
|
|
62
|
+
"devDependencies": {
|
|
63
|
+
"@faker-js/faker": "^7.6.0",
|
|
64
|
+
"docsify-cli": "^4.4.4",
|
|
65
|
+
"eslint": "^6.7.2",
|
|
66
|
+
"eslint-config-google": "^0.14.0",
|
|
67
|
+
"husky": "^3.1.0",
|
|
68
|
+
"jest": "^24.9.0",
|
|
69
|
+
"lint-staged": "^9.5.0",
|
|
70
|
+
"nock": "^13.3.0"
|
|
71
|
+
},
|
|
72
|
+
"resolutions": {
|
|
73
|
+
"lodash": "4.17.21",
|
|
74
|
+
"minimist": "1.2.6",
|
|
75
|
+
"ansi-regex": "5.0.1",
|
|
76
|
+
"merge": "2.1.1",
|
|
77
|
+
"tar": "6.1.9",
|
|
78
|
+
"handlebars": "4.7.7"
|
|
79
|
+
}
|
|
80
|
+
}
|
package/publisher.js
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
const fs = require('fs');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
const { execSync, exec } = require('child_process');
|
|
4
|
+
|
|
5
|
+
publishAsNeeded();
|
|
6
|
+
|
|
7
|
+
function publishAsNeeded() {
|
|
8
|
+
fs.readFile(path.join(__dirname, 'package.json'), 'utf8', (err, data) => {
|
|
9
|
+
if (err) {
|
|
10
|
+
console.error('Error:', err);
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
let packageJson = JSON.parse(data);
|
|
14
|
+
let localVersion = packageJson.version;
|
|
15
|
+
let publishedVersions = JSON.parse(execSync('npm show ' + packageJson.name + ' versions --json').toString());
|
|
16
|
+
if (publishedVersions.includes(localVersion)) {
|
|
17
|
+
console.log('published version is the same of package.json:', localVersion);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
console.log('publishing new version', localVersion, '...');
|
|
22
|
+
|
|
23
|
+
const branch = process.env.BITBUCKET_BRANCH
|
|
24
|
+
console.log('current branch on build', branch);
|
|
25
|
+
|
|
26
|
+
//apenas beta e alpha pode ser publicado fora da master
|
|
27
|
+
if("master" !== branch && !(/beta|alpha/.test(localVersion))){
|
|
28
|
+
console.log('main channel out of master branch SKIPPED...');
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
let commandSuffix = "";
|
|
33
|
+
|
|
34
|
+
if(/beta/.test(localVersion)) {
|
|
35
|
+
commandSuffix = "--tag beta";
|
|
36
|
+
} else if(/alpha/.test(localVersion)) {
|
|
37
|
+
commandSuffix = "--tag alpha";
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
exec('npm run build && npm publish ' + commandSuffix, (err, stdout, stderr) => {
|
|
41
|
+
if (err) {
|
|
42
|
+
// node couldn't execute the command
|
|
43
|
+
console.log('Error:', err);
|
|
44
|
+
process.exit(2);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// the *entire* stdout and stderr (buffered)
|
|
49
|
+
console.log(`stdout: ${stdout}`);
|
|
50
|
+
console.log(`stderr: ${stderr}`);
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
}
|
package/src/cmd/clean.js
ADDED
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
const { workspace } = require('../service/Workspace')
|
|
2
|
+
const validator = require('./validate')
|
|
3
|
+
const TrackingService = require('../service/TrackingService')
|
|
4
|
+
const config = require('../service/ConfigService')
|
|
5
|
+
const TargetService = require('../service/TargetService')
|
|
6
|
+
const inquirer = require('inquirer')
|
|
7
|
+
const TrackingEitriAnalytics = require('../service/TrackingEitriAnalytics')
|
|
8
|
+
|
|
9
|
+
const blindGuardian = workspace.blindGuardian
|
|
10
|
+
const trackingService = new TrackingService(blindGuardian)
|
|
11
|
+
const targetService = new TargetService(workspace)
|
|
12
|
+
|
|
13
|
+
module.exports = async function clean(cmdObj) {
|
|
14
|
+
try {
|
|
15
|
+
const start = Date.now()
|
|
16
|
+
await validator.assertCommandNotRunning('clean')
|
|
17
|
+
let miniConf = workspace.getMiniConf()
|
|
18
|
+
let validateResult = checkErros(miniConf)
|
|
19
|
+
|
|
20
|
+
if (!validateResult.isSuccess()) {
|
|
21
|
+
console.log(
|
|
22
|
+
'Por favor, verifique atentamente os erros exibidos acima. Siga o exemplo abaixo: ' +
|
|
23
|
+
`
|
|
24
|
+
module.exports = {
|
|
25
|
+
|
|
26
|
+
// Dados da sua empresa
|
|
27
|
+
organization: {
|
|
28
|
+
"name": "Minha Empresa"
|
|
29
|
+
},
|
|
30
|
+
|
|
31
|
+
// Nome do seu mini app
|
|
32
|
+
"name": "Meu Mini App",
|
|
33
|
+
|
|
34
|
+
// Titulo do mini app, que vai em baixo do botao na pagina de transacoes
|
|
35
|
+
"title": "Meu super mini app",
|
|
36
|
+
|
|
37
|
+
// Chave para gerar a ordem/qrcode de pagamento (opcional)
|
|
38
|
+
"public-key": "",
|
|
39
|
+
|
|
40
|
+
// Identificador amigavel para colocar em uma url
|
|
41
|
+
"slug": "com.eitri.loja",
|
|
42
|
+
|
|
43
|
+
// Versao do mini app
|
|
44
|
+
"version": "1.0.0",
|
|
45
|
+
|
|
46
|
+
${await targetService.getAppConfExampleSnippet()}
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
`
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
return
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
blindGuardian.readConf()
|
|
57
|
+
workspace.setServerUrl(config.get('workspace').url)
|
|
58
|
+
await workspace.init()
|
|
59
|
+
|
|
60
|
+
console.log('Limpando compilador')
|
|
61
|
+
|
|
62
|
+
await workspace.clean()
|
|
63
|
+
|
|
64
|
+
console.log('[1] Limpo.')
|
|
65
|
+
|
|
66
|
+
await track(miniConf, start)
|
|
67
|
+
TrackingEitriAnalytics.sendEvent({
|
|
68
|
+
command: "clean",
|
|
69
|
+
success: true,
|
|
70
|
+
})
|
|
71
|
+
process.exit(0)
|
|
72
|
+
} catch (e) {
|
|
73
|
+
TrackingEitriAnalytics.sendEvent({
|
|
74
|
+
command: "clean",
|
|
75
|
+
success: false,
|
|
76
|
+
errorMessage: e?.message || ""
|
|
77
|
+
})
|
|
78
|
+
|
|
79
|
+
if(!e) {
|
|
80
|
+
console.error('Erro desconhecido')
|
|
81
|
+
process.exit(1)
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
if (cmdObj.verbose) {
|
|
85
|
+
console.error('Falha deletando workspace remoto', e)
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const exit = async () => {
|
|
89
|
+
await trackingService.sendError(e)
|
|
90
|
+
process.exit(1)
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
const { httpStatus, response } = e
|
|
94
|
+
|
|
95
|
+
if(response){
|
|
96
|
+
const { data } = response
|
|
97
|
+
|
|
98
|
+
const transactionId = data.req_id
|
|
99
|
+
|
|
100
|
+
const printError = (message) => console.error(`${transactionId}: ${message}`)
|
|
101
|
+
|
|
102
|
+
const tryExitWithFriendlyMessage = async () => {
|
|
103
|
+
if(data && data.friendlyMessage) {
|
|
104
|
+
const {friendlyMessage} = data
|
|
105
|
+
printError(friendlyMessage)
|
|
106
|
+
await exit()
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
if(httpStatus === 403) {
|
|
111
|
+
await tryExitWithFriendlyMessage()
|
|
112
|
+
printError('Acesso negado! Confira se vc está registrado como desenvolvedor deste eitri-app?')
|
|
113
|
+
await exit()
|
|
114
|
+
}
|
|
115
|
+
if(httpStatus === 500) {
|
|
116
|
+
if(data && data.error.includes('ENOENT: no such file or directory')) {
|
|
117
|
+
// O workspace remoto ja nao existe, portanto nada fazemos.
|
|
118
|
+
console.log('[2] Limpeza finalizada com sucesso.')
|
|
119
|
+
await exit()
|
|
120
|
+
}
|
|
121
|
+
await tryExitWithFriendlyMessage()
|
|
122
|
+
printError('Erro interno!')
|
|
123
|
+
await exit()
|
|
124
|
+
}
|
|
125
|
+
printError('Ops: ocorreu um erro inesperado realizar a limpeza :-(')
|
|
126
|
+
}
|
|
127
|
+
console.error(`Ops: ocorreu um erro durante a limpeza: ${e.message}`)
|
|
128
|
+
await exit()
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
function printAvailableWebhooks(webhooks) {
|
|
133
|
+
if(!webhooks || webhooks.length === 0) return
|
|
134
|
+
console.log('\nWebhooks do MiniApp.')
|
|
135
|
+
console.table(webhooks)
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
async function track(miniConf, start) {
|
|
139
|
+
let libs = await targetService.getLibs()
|
|
140
|
+
let event = {
|
|
141
|
+
superClientVersion: miniConf[libs.superAppClientLibName],
|
|
142
|
+
componentsVersion: miniConf[libs.componentsLibName],
|
|
143
|
+
miniAppSlug: miniConf.slug,
|
|
144
|
+
miniAppVersion: miniConf.version,
|
|
145
|
+
timeMs: Date.now() - start,
|
|
146
|
+
}
|
|
147
|
+
await trackingService.sendPushedVersion(event)
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
function checkErros(miniConf) {
|
|
151
|
+
let validateResult = validator.validate(miniConf)
|
|
152
|
+
validateResult.errors.forEach(message => console.log(message))
|
|
153
|
+
return validateResult
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
async function logPermissionsAndOpenPrompt(addedPermissions, removedPermissions, cmdObj) {
|
|
157
|
+
const GREEN_COLOR = '\x1b[32m'
|
|
158
|
+
const RED_COLOR = '\x1b[31m'
|
|
159
|
+
const MINIMAL_LENGTH = 0
|
|
160
|
+
if(addedPermissions.length > MINIMAL_LENGTH) {
|
|
161
|
+
console.log(`${GREEN_COLOR}\nPermissões adicionadas: ${addedPermissions}${GREEN_COLOR}`)
|
|
162
|
+
}
|
|
163
|
+
if(removedPermissions.length > MINIMAL_LENGTH) {
|
|
164
|
+
console.log(`${RED_COLOR}Permissões removidas: ${removedPermissions}\n${RED_COLOR}`)
|
|
165
|
+
}
|
|
166
|
+
if(!cmdObj.yes && (addedPermissions.length > MINIMAL_LENGTH || removedPermissions.length > MINIMAL_LENGTH)) {
|
|
167
|
+
const answer = await inquirer.prompt([
|
|
168
|
+
{
|
|
169
|
+
name: 'option',
|
|
170
|
+
message: 'Houve uma alteração nas permissões em relação a versão publicada. Deseja Continuar?',
|
|
171
|
+
type: 'rawlist',
|
|
172
|
+
choices: ['Sim', 'Não']
|
|
173
|
+
}
|
|
174
|
+
])
|
|
175
|
+
if(answer.option === 'Não') {
|
|
176
|
+
process.exit(0)
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|