web-architect-cli 1.0.4 → 1.0.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/bin/index.js +177 -84
- package/package.json +1 -1
package/bin/index.js
CHANGED
|
@@ -9,6 +9,9 @@ const rl = readline.createInterface({
|
|
|
9
9
|
output: process.stdout
|
|
10
10
|
});
|
|
11
11
|
|
|
12
|
+
// ==========================================
|
|
13
|
+
// CONTEÚDOS PARA O MODELO HTML5
|
|
14
|
+
// ==========================================
|
|
12
15
|
const CONTEUDO_INDEX_JSP = `<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored ="false"%>
|
|
13
16
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
14
17
|
<%@ page import="java.util.*" %>
|
|
@@ -28,45 +31,27 @@ const CONTEUDO_INDEX_JSP = `<%@ page language="java" contentType="text/html; cha
|
|
|
28
31
|
<snk:load/>
|
|
29
32
|
</head>
|
|
30
33
|
<body>
|
|
31
|
-
|
|
32
|
-
<
|
|
33
|
-
|
|
34
|
-
</header>
|
|
35
|
-
|
|
36
|
-
<main class="main">
|
|
37
|
-
|
|
38
|
-
</main>
|
|
39
|
-
|
|
34
|
+
<header class="header"></header>
|
|
35
|
+
<main class="main"></main>
|
|
40
36
|
<script type="module" src="\${BASE_FOLDER}/src/main.js"></script>
|
|
41
37
|
</body>
|
|
42
38
|
</html>`;
|
|
43
39
|
|
|
44
40
|
const CONTEUDO_INDEX_HTML = `<!DOCTYPE html>
|
|
45
|
-
<html lang="pt-
|
|
41
|
+
<html lang="pt-BR">
|
|
46
42
|
<head>
|
|
47
43
|
<meta charset="UTF-8">
|
|
48
44
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
49
45
|
<title>Meu modelo</title>
|
|
50
|
-
|
|
51
46
|
<script src="src/assets/js/tailwindcss.js"></script>
|
|
52
47
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
|
|
53
48
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200" />
|
|
54
49
|
<link rel="stylesheet" href="./src/assets/css/style.css">
|
|
55
|
-
|
|
56
50
|
<script type="module" src="https://cdn.jsdelivr.net/npm/@jtandrelevicius/utils-js-library@latest/index.js"></script>
|
|
57
51
|
<body>
|
|
58
|
-
|
|
59
|
-
<
|
|
60
|
-
|
|
61
|
-
</header>
|
|
62
|
-
|
|
63
|
-
<main class="main">
|
|
64
|
-
|
|
65
|
-
</main>
|
|
66
|
-
|
|
67
|
-
|
|
52
|
+
<header class="header"></header>
|
|
53
|
+
<main class="main"></main>
|
|
68
54
|
<script type="module" src="src/main.js"></script>
|
|
69
|
-
|
|
70
55
|
</body>
|
|
71
56
|
</html>`;
|
|
72
57
|
|
|
@@ -137,11 +122,12 @@ if (CONFIG.MODO_AUTOMATICO) {
|
|
|
137
122
|
}
|
|
138
123
|
`;
|
|
139
124
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
`;
|
|
144
|
-
|
|
125
|
+
// ==========================================
|
|
126
|
+
// UTILITÁRIOS GERAIS
|
|
127
|
+
// ==========================================
|
|
128
|
+
const CONTEUDO_GITIGNORE_HTML = `node_modules/\n*.zip\n.DS_Store\n`;
|
|
129
|
+
const CONTEUDO_GITIGNORE_GERAL = `*.zip\n.DS_Store\n`;
|
|
130
|
+
const CONTEUDO_GITIGNORE_JAVA = `out/\n.idea/workspace.xml\n.idea/usage.statistics.xml\n*.iws\n.DS_Store\n`;
|
|
145
131
|
const CONTEUDO_GITATTRIBUTES = `* text=auto`;
|
|
146
132
|
|
|
147
133
|
const logPasso = (emoji, msg) => console.log(`${emoji} ${msg}`);
|
|
@@ -150,36 +136,20 @@ function criarPasta(caminho) {
|
|
|
150
136
|
if (!fs.existsSync(caminho)) {
|
|
151
137
|
fs.mkdirSync(caminho, { recursive: true });
|
|
152
138
|
logPasso('📂', `Pasta criada: ${caminho}`);
|
|
153
|
-
} else {
|
|
154
|
-
logPasso('⚠️', `Pasta já existe: ${caminho}`);
|
|
155
139
|
}
|
|
156
140
|
}
|
|
157
141
|
|
|
158
142
|
function criarArquivo(caminho, conteudo) {
|
|
159
143
|
fs.writeFileSync(caminho, conteudo);
|
|
160
|
-
logPasso('📄', `Arquivo criado: ${caminho}`);
|
|
144
|
+
logPasso('📄', `Arquivo criado: ${path.basename(caminho)}`);
|
|
161
145
|
}
|
|
162
146
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
rl.close();
|
|
167
|
-
return;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
const raiz = path.join(process.cwd(), nomeProjeto);
|
|
171
|
-
|
|
172
|
-
console.log(`\n---------------------------------------------------`);
|
|
173
|
-
console.log(`🔨 INICIANDO CRIAÇÃO DO PROJETO: ${nomeProjeto}`);
|
|
174
|
-
console.log(`---------------------------------------------------\n`);
|
|
175
|
-
|
|
176
|
-
if (fs.existsSync(raiz)) {
|
|
177
|
-
console.log(`❌ A pasta '${nomeProjeto}' já existe.`);
|
|
178
|
-
rl.close();
|
|
179
|
-
return;
|
|
180
|
-
}
|
|
181
|
-
criarPasta(raiz);
|
|
147
|
+
// ==========================================
|
|
148
|
+
// FUNÇÕES DE CRIAÇÃO DOS MODELOS
|
|
149
|
+
// ==========================================
|
|
182
150
|
|
|
151
|
+
// --- MODELO 1: HTML5 (Web) ---
|
|
152
|
+
function criarProjetoHTML5(raiz, nomeProjeto) {
|
|
183
153
|
const pastas = [
|
|
184
154
|
'src/assets/css',
|
|
185
155
|
'src/assets/img',
|
|
@@ -196,62 +166,185 @@ rl.question('🚀 Digite o nome do projeto: ', (nomeProjeto) => {
|
|
|
196
166
|
criarArquivo(path.join(raiz, 'index.jsp'), CONTEUDO_INDEX_JSP);
|
|
197
167
|
criarArquivo(path.join(raiz, 'index.html'), CONTEUDO_INDEX_HTML);
|
|
198
168
|
criarArquivo(path.join(raiz, 'build.js'), CONTEUDO_BUILD_JS);
|
|
199
|
-
criarArquivo(path.join(raiz, '.gitignore'),
|
|
169
|
+
criarArquivo(path.join(raiz, '.gitignore'), CONTEUDO_GITIGNORE_HTML);
|
|
200
170
|
criarArquivo(path.join(raiz, '.gitattributes'), CONTEUDO_GITATTRIBUTES);
|
|
201
|
-
criarArquivo(path.join(raiz, 'README.md'), `# ${nomeProjeto}\n\nProjeto gerado automaticamente.`);
|
|
171
|
+
criarArquivo(path.join(raiz, 'README.md'), `# ${nomeProjeto}\n\nProjeto Web (HTML5/JSP) gerado automaticamente.`);
|
|
202
172
|
|
|
203
173
|
const packageJson = {
|
|
204
174
|
name: nomeProjeto,
|
|
205
175
|
version: "1.0.0",
|
|
206
176
|
description: "",
|
|
207
177
|
main: "src/main.js",
|
|
208
|
-
scripts: {
|
|
209
|
-
"build": "node build.js",
|
|
210
|
-
"start": "node build.js"
|
|
211
|
-
},
|
|
178
|
+
scripts: { "build": "node build.js", "start": "node build.js" },
|
|
212
179
|
author: "",
|
|
213
180
|
license: "ISC"
|
|
214
181
|
};
|
|
215
182
|
criarArquivo(path.join(raiz, 'package.json'), JSON.stringify(packageJson, null, 2));
|
|
216
|
-
|
|
217
183
|
criarArquivo(path.join(raiz, 'src/main.js'), `console.log('Aplicação iniciada');`);
|
|
218
|
-
|
|
219
184
|
criarArquivo(path.join(raiz, 'src/assets/css/style.css'), `/* Estilos Globais */\nbody { font-family: 'Inter', sans-serif; }`);
|
|
220
|
-
|
|
185
|
+
|
|
221
186
|
const origemTailwind = path.join(__dirname, 'tailwindcss.js');
|
|
222
187
|
const destinoTailwind = path.join(raiz, 'src/assets/js/tailwindcss.js');
|
|
223
|
-
|
|
224
188
|
if (fs.existsSync(origemTailwind)) {
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
logPasso('📄', `Arquivo copiado: ${destinoTailwind}`);
|
|
228
|
-
} catch (err) {
|
|
229
|
-
console.error('❌ Erro ao copiar tailwindcss.js:', err.message);
|
|
230
|
-
}
|
|
231
|
-
} else {
|
|
232
|
-
console.log('⚠️ AVISO: O arquivo "tailwindcss.js" não foi encontrado na mesma pasta deste script.');
|
|
233
|
-
console.log(' Ele não foi copiado para o novo projeto.');
|
|
189
|
+
fs.copyFileSync(origemTailwind, destinoTailwind);
|
|
190
|
+
logPasso('📄', `Tailwind copiado.`);
|
|
234
191
|
}
|
|
235
192
|
|
|
236
|
-
console.log(`\n
|
|
237
|
-
|
|
238
|
-
|
|
193
|
+
console.log(`\n⚙️ CONFIGURANDO AMBIENTE WEB...`);
|
|
194
|
+
try {
|
|
195
|
+
logPasso('Git', 'Inicializando repositório...');
|
|
196
|
+
execSync('git init', { cwd: raiz, stdio: 'ignore' });
|
|
197
|
+
logPasso('NPM', 'Instalando dependências...');
|
|
198
|
+
execSync('npm install archiver', { cwd: raiz, stdio: 'ignore' });
|
|
199
|
+
} catch (e) { console.error('Erro na configuração:', e.message); }
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
// --- MODELO 2: PERSONALIZACAO (Banco/Backend) ---
|
|
203
|
+
function criarProjetoPersonalizacao(raiz, nomeProjeto) {
|
|
204
|
+
const pastas = [
|
|
205
|
+
'doc',
|
|
206
|
+
'src/Dashboard',
|
|
207
|
+
'src/Function',
|
|
208
|
+
'src/Procedure',
|
|
209
|
+
'src/Relatorio',
|
|
210
|
+
'src/SQL',
|
|
211
|
+
'src/Tela',
|
|
212
|
+
'src/Trigger',
|
|
213
|
+
'src/View'
|
|
214
|
+
];
|
|
215
|
+
|
|
216
|
+
pastas.forEach(p => criarPasta(path.join(raiz, p)));
|
|
217
|
+
|
|
218
|
+
criarArquivo(path.join(raiz, '.gitattributes'), CONTEUDO_GITATTRIBUTES);
|
|
219
|
+
criarArquivo(path.join(raiz, '.gitignore'), CONTEUDO_GITIGNORE_GERAL);
|
|
220
|
+
criarArquivo(path.join(raiz, 'README.md'), `# ${nomeProjeto}\n\nProjeto de Personalização (Banco de Dados/PLSQL).\n\n## Estrutura\n- **doc/**: Documentação.\n- **src/**: Scripts de Banco.`);
|
|
239
221
|
|
|
222
|
+
console.log(`\n⚙️ CONFIGURANDO AMBIENTE DE PERSONALIZAÇÃO...`);
|
|
240
223
|
try {
|
|
241
|
-
logPasso('
|
|
224
|
+
logPasso('Git', 'Inicializando repositório...');
|
|
242
225
|
execSync('git init', { cwd: raiz, stdio: 'inherit' });
|
|
226
|
+
} catch (e) { console.error('Erro no git init:', e.message); }
|
|
227
|
+
}
|
|
243
228
|
|
|
244
|
-
|
|
245
|
-
|
|
229
|
+
// --- MODELO 3: JAVA (Estrutura IntelliJ Nativa) ---
|
|
230
|
+
function criarProjetoJava(raiz, nomeProjeto) {
|
|
231
|
+
const nomePacote = nomeProjeto.replace(/-/g, '').toLowerCase();
|
|
232
|
+
const basePath = `src/br/com/sankhya/${nomePacote}`;
|
|
233
|
+
|
|
234
|
+
const pastas = [
|
|
235
|
+
'.idea',
|
|
236
|
+
'doc',
|
|
237
|
+
'out',
|
|
238
|
+
`${basePath}/business/agendador`,
|
|
239
|
+
`${basePath}/business/botao`,
|
|
240
|
+
`${basePath}/business/evento`,
|
|
241
|
+
`${basePath}/business/regra`,
|
|
242
|
+
`${basePath}/domain/model`,
|
|
243
|
+
`${basePath}/domain/repository`
|
|
244
|
+
];
|
|
246
245
|
|
|
247
|
-
|
|
248
|
-
console.log(`👉 Próximos passos:`);
|
|
249
|
-
console.log(` cd ${nomeProjeto}`);
|
|
250
|
-
console.log(` npm start (Para rodar o build automático)`);
|
|
246
|
+
pastas.forEach(p => criarPasta(path.join(raiz, p)));
|
|
251
247
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
248
|
+
criarArquivo(path.join(raiz, '.gitignore'), CONTEUDO_GITIGNORE_JAVA);
|
|
249
|
+
criarArquivo(path.join(raiz, 'README.md'), `# ${nomeProjeto}\n\nProjeto Java Sankhya (IntelliJ Nativo).`);
|
|
250
|
+
|
|
251
|
+
const modulesXml = `<?xml version="1.0" encoding="UTF-8"?>
|
|
252
|
+
<project version="4">
|
|
253
|
+
<component name="ProjectModuleManager">
|
|
254
|
+
<modules>
|
|
255
|
+
<module fileurl="file://$PROJECT_DIR$/${nomeProjeto}.iml" filepath="$PROJECT_DIR$/${nomeProjeto}.iml" />
|
|
256
|
+
</modules>
|
|
257
|
+
</component>
|
|
258
|
+
</project>`;
|
|
259
|
+
criarArquivo(path.join(raiz, '.idea/modules.xml'), modulesXml);
|
|
260
|
+
|
|
261
|
+
const miscXml = `<?xml version="1.0" encoding="UTF-8"?>
|
|
262
|
+
<project version="4">
|
|
263
|
+
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
|
264
|
+
<output url="file://$PROJECT_DIR$/out" />
|
|
265
|
+
</component>
|
|
266
|
+
</project>`;
|
|
267
|
+
criarArquivo(path.join(raiz, '.idea/misc.xml'), miscXml);
|
|
268
|
+
|
|
269
|
+
const imlContent = `<?xml version="1.0" encoding="UTF-8"?>
|
|
270
|
+
<module type="JAVA_MODULE" version="4">
|
|
271
|
+
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
|
272
|
+
<exclude-output />
|
|
273
|
+
<content url="file://$MODULE_DIR$">
|
|
274
|
+
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
|
275
|
+
</content>
|
|
276
|
+
<orderEntry type="inheritedJdk" />
|
|
277
|
+
<orderEntry type="sourceFolder" forTests="false" />
|
|
278
|
+
<orderEntry type="library" name="libs-java" level="application" />
|
|
279
|
+
</component>
|
|
280
|
+
</module>`;
|
|
281
|
+
criarArquivo(path.join(raiz, `${nomeProjeto}.iml`), imlContent);
|
|
282
|
+
|
|
283
|
+
console.log(`\n⚙️ CONFIGURANDO AMBIENTE JAVA (IntelliJ)...`);
|
|
284
|
+
try {
|
|
285
|
+
logPasso('Git', 'Inicializando repositório...');
|
|
286
|
+
execSync('git init', { cwd: raiz, stdio: 'inherit' });
|
|
287
|
+
console.log(`\n✅ SUCESSO! Abra a pasta '${nomeProjeto}' diretamente no IntelliJ.`);
|
|
288
|
+
console.log(`ℹ️ Certifique-se de que a biblioteca global 'libs-java' esteja configurada no seu IntelliJ.`);
|
|
289
|
+
} catch (e) { console.error(e.message); }
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
// ==========================================
|
|
293
|
+
// MENU PRINCIPAL
|
|
294
|
+
// ==========================================
|
|
295
|
+
function iniciar() {
|
|
296
|
+
console.clear();
|
|
297
|
+
console.log('===================================================');
|
|
298
|
+
console.log(' 🛠️ WEB ARCHITECT CLI - GERADOR 🛠️');
|
|
299
|
+
console.log('===================================================');
|
|
300
|
+
console.log('Selecione o tipo de projeto:');
|
|
301
|
+
console.log(' [1] HTML5 (Web, Tailwind, JSP, Auto-Zip)');
|
|
302
|
+
console.log(' [2] PERSONALIZACAO (SQL, Procedures, Triggers, Views)');
|
|
303
|
+
console.log(' [3] JAVA (IntelliJ, JDK 1.8, libs-java)');
|
|
304
|
+
console.log('===================================================');
|
|
305
|
+
|
|
306
|
+
rl.question('👉 Escolha uma opção (1-3): ', (opcao) => {
|
|
307
|
+
|
|
308
|
+
if (!['1', '2', '3'].includes(opcao.trim())) {
|
|
309
|
+
console.log('❌ Opção inválida.');
|
|
310
|
+
rl.close();
|
|
311
|
+
return;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
rl.question('🚀 Digite o nome do projeto (ex: meu-projeto): ', (nomeProjeto) => {
|
|
315
|
+
if (!nomeProjeto) {
|
|
316
|
+
console.log('❌ Nome inválido.');
|
|
317
|
+
rl.close();
|
|
318
|
+
return;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
const raiz = path.join(process.cwd(), nomeProjeto);
|
|
322
|
+
if (fs.existsSync(raiz)) {
|
|
323
|
+
console.log(`❌ A pasta '${nomeProjeto}' já existe.`);
|
|
324
|
+
rl.close();
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
criarPasta(raiz);
|
|
329
|
+
|
|
330
|
+
switch (opcao.trim()) {
|
|
331
|
+
case '1':
|
|
332
|
+
criarProjetoHTML5(raiz, nomeProjeto);
|
|
333
|
+
console.log(`\n✅ PROJETO WEB CRIADO! Rode 'cd ${nomeProjeto}' e 'npm start'.`);
|
|
334
|
+
break;
|
|
335
|
+
case '2':
|
|
336
|
+
criarProjetoPersonalizacao(raiz, nomeProjeto);
|
|
337
|
+
console.log(`\n✅ PROJETO DE PERSONALIZAÇÃO CRIADO! Rode 'cd ${nomeProjeto}'.`);
|
|
338
|
+
break;
|
|
339
|
+
case '3':
|
|
340
|
+
criarProjetoJava(raiz, nomeProjeto);
|
|
341
|
+
console.log(`\n✅ PROJETO JAVA CRIADO!`);
|
|
342
|
+
break;
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
rl.close();
|
|
346
|
+
});
|
|
347
|
+
});
|
|
348
|
+
}
|
|
255
349
|
|
|
256
|
-
|
|
257
|
-
});
|
|
350
|
+
iniciar();
|