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.
Files changed (2) hide show
  1. package/bin/index.js +177 -84
  2. 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
- <header class="header">
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-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
- <header class="header">
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
- const CONTEUDO_GITIGNORE = `node_modules/
141
- *.zip
142
- .DS_Store
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
- rl.question('🚀 Digite o nome do projeto: ', (nomeProjeto) => {
164
- if (!nomeProjeto) {
165
- console.log('❌ Nome inválido.');
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'), CONTEUDO_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
- try {
226
- fs.copyFileSync(origemTailwind, destinoTailwind);
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
- console.log(`⚙️ EXECUTANDO CONFIGURAÇÕES DE AMBIENTE`);
238
- console.log(`---------------------------------------------------\n`);
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('GitHub', '📦 Inicializando repositório Git...');
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
- logPasso('NPM', ' 📦 Instalando dependência: archiver...');
245
- execSync('npm install archiver', { cwd: raiz, stdio: 'inherit' });
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
- console.log(`\n✅ PROJETO CRIADO COM SUCESSO!\n`);
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
- } catch (error) {
253
- console.error("❌ Erro ao executar comandos do sistema:", error.message);
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
- rl.close();
257
- });
350
+ iniciar();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "web-architect-cli",
3
- "version": "1.0.4",
3
+ "version": "1.0.5",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "bin": {