eitri-cli 1.13.0-beta.4 → 1.13.0
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/eitri-cli-v2/eitri-cli-v2.darwin-arm64.node +0 -0
- package/eitri-cli-v2/eitri-cli-v2.darwin-x64.node +0 -0
- package/eitri-cli-v2/eitri-cli-v2.linux-x64-gnu.node +0 -0
- package/eitri-cli-v2/eitri-cli-v2.win32-x64-msvc.node +0 -0
- package/eitri-cli-v2/index.d.ts +0 -3
- package/eitri-cli-v2/index.js +1 -2
- package/index.js +178 -170
- package/package.json +1 -1
- package/src/modules/vegvisir/VegvisirCommand.js +35 -50
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/eitri-cli-v2/index.d.ts
CHANGED
package/eitri-cli-v2/index.js
CHANGED
|
@@ -295,11 +295,10 @@ if (!nativeBinding) {
|
|
|
295
295
|
throw new Error(`Failed to load native binding`)
|
|
296
296
|
}
|
|
297
297
|
|
|
298
|
-
const { publish, runTest, eitriLibs, doctor, app
|
|
298
|
+
const { publish, runTest, eitriLibs, doctor, app } = nativeBinding
|
|
299
299
|
|
|
300
300
|
module.exports.publish = publish
|
|
301
301
|
module.exports.runTest = runTest
|
|
302
302
|
module.exports.eitriLibs = eitriLibs
|
|
303
303
|
module.exports.doctor = doctor
|
|
304
304
|
module.exports.app = app
|
|
305
|
-
module.exports.workspace = workspace
|
package/index.js
CHANGED
|
@@ -8,186 +8,194 @@ const { workspace } = require("./src/service/Workspace");
|
|
|
8
8
|
const configService = require("./src/service/ConfigService");
|
|
9
9
|
const VegvisirCommand = require("./src/modules/vegvisir/VegvisirCommand");
|
|
10
10
|
const AppCommand = require("./src/modules/app/AppCommand");
|
|
11
|
-
const debug = require(
|
|
11
|
+
const debug = require('debug')('eitri:run')
|
|
12
|
+
|
|
12
13
|
|
|
13
14
|
const run = async () => {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
15
|
+
const NEW_CLI_VERSION = process.env.CLI_VERSION === "v2"
|
|
16
|
+
|
|
17
|
+
debug("Iniciando run()")
|
|
18
|
+
// Temporariamente necessário por conta de no contexto do Rust não saber o diretório atual, dessa forma exportando o fullPath do config é possível.
|
|
19
|
+
// Quando se tornar uma CLI somente em rust no processo de instalação podemos declarar o caminho, como é via NPM pode ter caminhos variados de acordo com sistema de versionamento, NVM, Volta, ASDF é necessário a variável abaixo.
|
|
20
|
+
process.env.CONFIG_DIR_PATH = path.join(__dirname, 'eitri-cli-v2', 'config')
|
|
21
|
+
try {
|
|
22
|
+
const srcFolder2watch = path.join(process.cwd(), "src");
|
|
23
|
+
workspace.setFolder2Watch(srcFolder2watch);
|
|
24
|
+
workspace.setServerUrl(`${configService.get("workspace").url}`);
|
|
25
|
+
} catch (e) {
|
|
26
|
+
debug("Erro no set da pasta", { message: e?.message, error: e })
|
|
27
|
+
if (process.env.LOG_LEVEL === "full") {
|
|
28
|
+
console.log("Current directory listening has failed", e);
|
|
29
|
+
}
|
|
30
|
+
// Continuando como antes...
|
|
28
31
|
}
|
|
29
|
-
// Continuando como antes...
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
program.option("-v, --version", "Mostra a versão da CLI").action(() => {
|
|
33
|
-
const { version } = require("./src/cmd/version");
|
|
34
|
-
version();
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
program
|
|
38
|
-
.command("login")
|
|
39
|
-
.description(
|
|
40
|
-
"Configura suas credenciais de desenvolvedor no dispositivo local"
|
|
41
|
-
)
|
|
42
|
-
.option("--yes", "Aceita o redirecionamento para o console")
|
|
43
|
-
.action(async (cmdObj) => {
|
|
44
|
-
require("./src/cmd/login")(cmdObj);
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
program
|
|
48
|
-
.command("create <project-name>")
|
|
49
|
-
.description(`Cria um projeto com um Eitri-App totalmente funcional.`)
|
|
50
|
-
.option("--yes", "Aceita os valores default para nome título e organização")
|
|
51
|
-
.option(
|
|
52
|
-
"--application <application>",
|
|
53
|
-
"Define o application de execução do Eitri-App"
|
|
54
|
-
)
|
|
55
|
-
.option("-v, --verbose", "Exibe mais logs")
|
|
56
|
-
.action((projectName, cmdObj) => {
|
|
57
|
-
require("./src/cmd/create")(projectName, cmdObj);
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
let startProgram = program
|
|
61
|
-
.command("start")
|
|
62
|
-
.description("Inicia o seu Eitri-App em um workspace online")
|
|
63
|
-
.option("-v, --verbose", "Exibe mais logs")
|
|
64
|
-
.option("-f, --force", "Força o start")
|
|
65
|
-
.option("-S, --show-deeplink", "Exibe o deep link do workspace")
|
|
66
|
-
.option("-sm, --skip-mini-log", "Skipa conexão com o mini-log")
|
|
67
|
-
.option(
|
|
68
|
-
"-P, --qr-printer <qrPrinter>",
|
|
69
|
-
"Indica qual programa imprimirá o QR Code. Se omitido, exibe o QrCode no terminal. Valores válidos: terminal|chrome|msedge|firefox"
|
|
70
|
-
)
|
|
71
|
-
.option(
|
|
72
|
-
"-e, --emulator <platform>",
|
|
73
|
-
"Abre o Eitri-App no emulador, desde que seja definido qual plataforma será aberto, android ou ios."
|
|
74
|
-
)
|
|
75
|
-
.option("-sh, --shared", "Executa o Eitri-App no modo compartilhável.");
|
|
76
|
-
|
|
77
|
-
startProgram.action((cmdObj) => {
|
|
78
|
-
require("./src/cmd/start")(cmdObj);
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
program
|
|
82
|
-
.command("push-version")
|
|
83
|
-
.description(
|
|
84
|
-
"Cria e envia uma versão do Eitri-App para o Console, possibilitando também publicar em um ambiente."
|
|
85
|
-
)
|
|
86
|
-
.option("-l, --local", "Aponta para o servidor local")
|
|
87
|
-
.option("-v, --verbose", "Exibe mais logs")
|
|
88
|
-
.option(
|
|
89
|
-
"-r, --release",
|
|
90
|
-
"Gera uma nova release baseado nos commits. Um arquivo CHANGELOG.md será gerado automaticamente."
|
|
91
|
-
)
|
|
92
|
-
.option("-s, --shared", "Publica o Eitri-App compartilhado")
|
|
93
|
-
.option(
|
|
94
|
-
"-m, --message <revision-message>",
|
|
95
|
-
"Adiciona comentários na versão"
|
|
96
|
-
)
|
|
97
|
-
.option("-y, --yes", "Aceita automaticamente as respostas do prompt.")
|
|
98
|
-
.action((cmdObj) => {
|
|
99
|
-
require("./src/cmd/push-version")(cmdObj);
|
|
100
|
-
});
|
|
101
|
-
|
|
102
|
-
program
|
|
103
|
-
.command("clean")
|
|
104
|
-
.description(
|
|
105
|
-
"Realiza a limpeza do workspace remoto do desenvolvedor. Útil quando há mal funcionamento na compilação em nuvem do Eitri-App."
|
|
106
|
-
)
|
|
107
|
-
.option("-v, --verbose", "Exibe mais logs")
|
|
108
|
-
.action(async (cmdObj) => {
|
|
109
|
-
if (NEW_CLI_VERSION) {
|
|
110
|
-
console.log("clean (v2)");
|
|
111
|
-
const eitriCLIV2 = require("./eitri-cli-v2/index.js");
|
|
112
|
-
return await eitriCLIV2.workspace.clean();
|
|
113
|
-
}
|
|
114
|
-
require("./src/cmd/clean")(cmdObj);
|
|
115
|
-
});
|
|
116
|
-
|
|
117
|
-
program
|
|
118
|
-
.command("self-update")
|
|
119
|
-
.description("Desinstala a versão antiga e instala a mais nova")
|
|
120
|
-
.action(() => {
|
|
121
|
-
require("child_process").execSync(
|
|
122
|
-
"npm uninstall -g eitri-cli && npm i eitri-cli -g",
|
|
123
|
-
{ stdio: "inherit" }
|
|
124
|
-
);
|
|
125
|
-
});
|
|
126
|
-
|
|
127
|
-
program
|
|
128
|
-
.command("libs")
|
|
129
|
-
.description("Listagem das versões das Bibliotecas do Eitri")
|
|
130
|
-
.option("--bifrost", "Lista todas as versões do Bifrost")
|
|
131
|
-
.option("--luminus", "Lista todas as versões do Luminus")
|
|
132
|
-
.action(async (cmdObj) => {
|
|
133
|
-
const eitriCLIV2 = require("./eitri-cli-v2/index.js");
|
|
134
|
-
await eitriCLIV2.eitriLibs(cmdObj);
|
|
135
|
-
});
|
|
136
|
-
|
|
137
|
-
program
|
|
138
|
-
.command("doctor")
|
|
139
|
-
.description(
|
|
140
|
-
"Valida as dependências externas para execução da CLI do Eitri"
|
|
141
|
-
)
|
|
142
|
-
.action(async (cmdObj) => {
|
|
143
|
-
if (NEW_CLI_VERSION) {
|
|
144
|
-
console.log("doctor (v2)");
|
|
145
|
-
const eitriCLIV2 = require("./eitri-cli-v2/index.js");
|
|
146
|
-
return await eitriCLIV2.doctor();
|
|
147
|
-
}
|
|
148
|
-
require("./src/cmd/doctor")(cmdObj);
|
|
149
|
-
});
|
|
150
32
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
.option(
|
|
155
|
-
"-e, --environment <environment>",
|
|
156
|
-
"Define o environment que publicará a versão atual presente no eitri-conf"
|
|
157
|
-
)
|
|
158
|
-
.option("-m, --message <publish-message>", "Adiciona comentários na versão")
|
|
159
|
-
.action(async (cmdObj) => {
|
|
160
|
-
const eitriCLIV2 = require("./eitri-cli-v2/index.js");
|
|
161
|
-
await eitriCLIV2.publish(cmdObj.environment, cmdObj.message || "");
|
|
33
|
+
program.option("-v, --version", "Mostra a versão da CLI").action(() => {
|
|
34
|
+
const { version } = require("./src/cmd/version");
|
|
35
|
+
version();
|
|
162
36
|
});
|
|
163
37
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
38
|
+
program
|
|
39
|
+
.command("login")
|
|
40
|
+
.description(
|
|
41
|
+
"Configura suas credenciais de desenvolvedor no dispositivo local"
|
|
42
|
+
)
|
|
43
|
+
.option("--yes", "Aceita o redirecionamento para o console")
|
|
44
|
+
.action(async (cmdObj) => {
|
|
45
|
+
require("./src/cmd/login")(cmdObj);
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
program
|
|
49
|
+
.command("create <project-name>")
|
|
50
|
+
.description(`Cria um projeto com um Eitri-App totalmente funcional.`)
|
|
51
|
+
.option(
|
|
52
|
+
"--yes",
|
|
53
|
+
"Aceita os valores default para nome título e organização"
|
|
54
|
+
)
|
|
55
|
+
.option(
|
|
56
|
+
"--application <application>",
|
|
57
|
+
"Define o application de execução do Eitri-App"
|
|
58
|
+
)
|
|
59
|
+
.option("-v, --verbose", "Exibe mais logs")
|
|
60
|
+
.action((projectName, cmdObj) => {
|
|
61
|
+
require("./src/cmd/create")(projectName, cmdObj);
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
let startProgram = program
|
|
65
|
+
.command("start")
|
|
66
|
+
.description("Inicia o seu Eitri-App em um workspace online")
|
|
67
|
+
.option("-v, --verbose", "Exibe mais logs")
|
|
68
|
+
.option("-f, --force", "Força o start")
|
|
69
|
+
.option("-S, --show-deeplink", "Exibe o deep link do workspace")
|
|
70
|
+
.option("-sm, --skip-mini-log", "Skipa conexão com o mini-log")
|
|
71
|
+
.option(
|
|
72
|
+
"-P, --qr-printer <qrPrinter>",
|
|
73
|
+
"Indica qual programa imprimirá o QR Code. Se omitido, exibe o QrCode no terminal. Valores válidos: terminal|chrome|msedge|firefox"
|
|
74
|
+
)
|
|
75
|
+
.option(
|
|
76
|
+
"-e, --emulator <platform>",
|
|
77
|
+
"Abre o Eitri-App no emulador, desde que seja definido qual plataforma será aberto, android ou ios."
|
|
78
|
+
)
|
|
79
|
+
.option(
|
|
80
|
+
"-sh, --shared",
|
|
81
|
+
"Executa o Eitri-App no modo compartilhável."
|
|
82
|
+
);
|
|
83
|
+
|
|
84
|
+
startProgram.action((cmdObj) => {
|
|
85
|
+
require("./src/cmd/start")(cmdObj);
|
|
173
86
|
});
|
|
174
87
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
88
|
+
program
|
|
89
|
+
.command("push-version")
|
|
90
|
+
.description(
|
|
91
|
+
"Cria e envia uma versão do Eitri-App para o Console, possibilitando também publicar em um ambiente."
|
|
92
|
+
)
|
|
93
|
+
.option("-l, --local", "Aponta para o servidor local")
|
|
94
|
+
.option("-v, --verbose", "Exibe mais logs")
|
|
95
|
+
.option("-r, --release", "Gera uma nova release baseado nos commits. Um arquivo CHANGELOG.md será gerado automaticamente.")
|
|
96
|
+
.option(
|
|
97
|
+
"-s, --shared",
|
|
98
|
+
"Publica o Eitri-App compartilhado"
|
|
99
|
+
)
|
|
100
|
+
.option(
|
|
101
|
+
"-m, --message <revision-message>",
|
|
102
|
+
"Adiciona comentários na versão"
|
|
103
|
+
)
|
|
104
|
+
.option("-y, --yes", "Aceita automaticamente as respostas do prompt.")
|
|
105
|
+
.action((cmdObj) => {
|
|
106
|
+
require("./src/cmd/push-version")(cmdObj);
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
program
|
|
110
|
+
.command("clean")
|
|
111
|
+
.description(
|
|
112
|
+
"Realiza a limpeza do workspace remoto do desenvolvedor. Útil quando há mal fucionamento na compilação em nuvem do Eitri-App."
|
|
113
|
+
)
|
|
114
|
+
.option("-v, --verbose", "Exibe mais logs")
|
|
115
|
+
.action((cmdObj) => {
|
|
116
|
+
require("./src/cmd/clean")(cmdObj);
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
program
|
|
120
|
+
.command("self-update")
|
|
121
|
+
.description("Desinstala a versão antiga e instala a mais nova")
|
|
122
|
+
.action(() => {
|
|
123
|
+
require("child_process").execSync(
|
|
124
|
+
"npm uninstall -g eitri-cli && npm i eitri-cli -g",
|
|
125
|
+
{ stdio: "inherit" }
|
|
126
|
+
);
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
program
|
|
130
|
+
.command("libs")
|
|
131
|
+
.description("Listagem das versões das Bibliotecas do Eitri")
|
|
132
|
+
.option(
|
|
133
|
+
"--bifrost",
|
|
134
|
+
"Lista todas as versões do Bifrost"
|
|
135
|
+
)
|
|
136
|
+
.option(
|
|
137
|
+
"--luminus",
|
|
138
|
+
"Lista todas as versões do Luminus"
|
|
139
|
+
)
|
|
140
|
+
.action(async (cmdObj) => {
|
|
141
|
+
const eitriCLIV2 = require('./eitri-cli-v2/index.js')
|
|
142
|
+
await eitriCLIV2.eitriLibs(cmdObj);
|
|
143
|
+
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
program
|
|
147
|
+
.command("doctor")
|
|
148
|
+
.description("Valida as dependências externas para execução da CLI do Eitri")
|
|
149
|
+
.action(async (cmdObj) => {
|
|
150
|
+
if (NEW_CLI_VERSION) {
|
|
151
|
+
console.log("doctor (v2)")
|
|
152
|
+
const eitriCLIV2 = require('./eitri-cli-v2/index.js')
|
|
153
|
+
return await eitriCLIV2.doctor()
|
|
154
|
+
}
|
|
155
|
+
require("./src/cmd/doctor")(cmdObj);
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
program
|
|
159
|
+
.command("publish")
|
|
160
|
+
.description("Publica a versão atual no environment selecionado.")
|
|
161
|
+
.option(
|
|
162
|
+
"-e, --environment <environment>",
|
|
163
|
+
"Define o environment que publicará a versão atual presente no eitri-conf"
|
|
164
|
+
)
|
|
165
|
+
.option(
|
|
166
|
+
"-m, --message <publish-message>",
|
|
167
|
+
"Adiciona comentários na versão"
|
|
168
|
+
)
|
|
169
|
+
.action(async (cmdObj) => {
|
|
170
|
+
const eitriCLIV2 = require('./eitri-cli-v2/index.js')
|
|
171
|
+
await eitriCLIV2.publish(cmdObj.environment, cmdObj.message || '')
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
program
|
|
175
|
+
.command("test")
|
|
176
|
+
.description("Executa os testes do eitri-app.")
|
|
177
|
+
.option(
|
|
178
|
+
"-p --path <test_path>",
|
|
179
|
+
"Define o path do arquivo de teste que será executado."
|
|
180
|
+
)
|
|
181
|
+
.action(async (cmdObj) => { return require("./src/cmd/runTests")(cmdObj) });
|
|
182
|
+
|
|
183
|
+
program.addCommand(VegvisirCommand());
|
|
184
|
+
program.addCommand(AppCommand());
|
|
185
|
+
|
|
186
|
+
if (
|
|
187
|
+
process.argv.length > 2 &&
|
|
188
|
+
!program.commands.map((cmd) => cmd._name).includes(process.argv[2])
|
|
189
|
+
) {
|
|
190
|
+
if (!process.argv[2].startsWith("-")) {
|
|
191
|
+
console.log(
|
|
192
|
+
`\n ${emoji.lib.rotating_light.char} Comando ${process.argv[2]} inexistente.\n`
|
|
193
|
+
);
|
|
194
|
+
program.help();
|
|
195
|
+
}
|
|
187
196
|
}
|
|
188
|
-
}
|
|
189
197
|
|
|
190
|
-
|
|
198
|
+
program.parse(process.argv);
|
|
191
199
|
};
|
|
192
200
|
|
|
193
201
|
module.exports = run;
|
package/package.json
CHANGED
|
@@ -1,59 +1,44 @@
|
|
|
1
1
|
const commander = require("commander");
|
|
2
2
|
|
|
3
3
|
module.exports = function VegvisirCommand() {
|
|
4
|
-
|
|
5
|
-
.
|
|
6
|
-
.description(
|
|
7
|
-
"Gerencia os workspaces do desenvolvedor, para mais informações execute 'eitri workspace --help'"
|
|
8
|
-
);
|
|
4
|
+
const workspaceCommand = commander.command("workspace")
|
|
5
|
+
.description("Gerencia os workspaces do desenvolvedor, para mais informações execute 'eitri workspace --help'")
|
|
9
6
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
7
|
+
workspaceCommand
|
|
8
|
+
.command("list")
|
|
9
|
+
.description("Lista os workspaces do usuário")
|
|
10
|
+
.action(async (cmdObj) => {
|
|
11
|
+
require("./cmd/list")(cmdObj);
|
|
12
|
+
});
|
|
16
13
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
14
|
+
workspaceCommand
|
|
15
|
+
.command("use")
|
|
16
|
+
.description("Seleciona qual workspace a ser utilizado")
|
|
17
|
+
.option(
|
|
18
|
+
"--local",
|
|
19
|
+
"Seleciona um workspace para um diretório de Eitri-App específico"
|
|
20
|
+
)
|
|
21
|
+
.option(
|
|
22
|
+
"--name <workspace-name>",
|
|
23
|
+
"Permite selecionar um workspace previamente criado pelo nome"
|
|
24
|
+
)
|
|
25
|
+
.action(async (cmdObj) => {
|
|
26
|
+
require("./cmd/use.js")(cmdObj);
|
|
27
|
+
});
|
|
31
28
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
29
|
+
workspaceCommand
|
|
30
|
+
.command("create")
|
|
31
|
+
.description("Cria um workspace para desenvolvimento de Eitri-Apps")
|
|
32
|
+
.action((cmdObj) => {
|
|
33
|
+
require("./cmd/create")(cmdObj);
|
|
34
|
+
});
|
|
38
35
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
require("./cmd/current")(cmdObj);
|
|
46
|
-
});
|
|
36
|
+
workspaceCommand
|
|
37
|
+
.command("current")
|
|
38
|
+
.description("Exibe o workspace atual, obedecendo a prioridade Local > Global.")
|
|
39
|
+
.action((cmdObj) => {
|
|
40
|
+
require("./cmd/current")(cmdObj);
|
|
41
|
+
});
|
|
47
42
|
|
|
48
|
-
|
|
49
|
-
.command("clean")
|
|
50
|
-
.description(
|
|
51
|
-
"Realiza a limpeza do workspace remoto do desenvolvedor. Útil quando há mal funcionamento na compilação em nuvem do Eitri-App. Obedece a prioridade Local > Global."
|
|
52
|
-
)
|
|
53
|
-
.action(async () => {
|
|
54
|
-
const eitriCLIV2 = require("../../../eitri-cli-v2/index.js");
|
|
55
|
-
await eitriCLIV2.workspace.clean();
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
return workspaceCommand;
|
|
43
|
+
return workspaceCommand;
|
|
59
44
|
};
|