-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathindex-gerar.ts
62 lines (49 loc) · 2.78 KB
/
index-gerar.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import prompts from 'prompts';
import { Classe } from '@designliquido/delegua/declaracoes';
import { pluralizar } from '@designliquido/flexoes';
import { criarDiretorioSeNaoExiste, importarModelos, obterTodosModelos } from './interface-linha-comando/gerar';
import { GeradorVisoes } from './interface-linha-comando/gerar/gerador-visoes';
import { GeradorRotas } from './interface-linha-comando/gerar/gerador-rotas';
const pontoDeEntradaGerar = async (argumentos: string[]) => {
// argumentos[0] normalmente é o nome do executável, seja Node, Bun, etc.
// argumentos[1] é o nome do arquivo deste ponto de entrada.
// argumentos[2] é o nome do modelo correspondente. Se vir vazio, perguntar o nome.
let nomeModelo = argumentos[2];
if (nomeModelo === undefined || nomeModelo.length <= 0) {
const opcoesModelos = obterTodosModelos();
const respostaNomeModelo = await prompts({
type: 'select',
name: 'nomeModelo',
message: 'Qual o nome do modelo?',
choices: opcoesModelos
});
nomeModelo = respostaNomeModelo.nomeModelo;
}
const declaracoes = importarModelos(nomeModelo);
criarDiretorioSeNaoExiste('rotas');
const geradorVisoes = new GeradorVisoes();
const geradorRotas = new GeradorRotas();
// Aqui apenas aceitamos declarações de classes. Pode ser mais de uma.
for (const declaracao of declaracoes.filter((d) => d instanceof Classe)) {
const declaracaoModelo = <Classe>declaracao;
const nomeBaseModelo = declaracaoModelo.simbolo.lexema.toLocaleLowerCase('pt');
const nomeModeloPlural = pluralizar(nomeBaseModelo).toLocaleLowerCase('pt');
const caminhosRotas: string[] = geradorRotas.criarNovasRotas(declaracaoModelo);
for (const caminhoRota of caminhosRotas) {
console.info(`Rota ${caminhoRota}`);
}
// Visões
criarDiretorioSeNaoExiste('visoes', nomeModeloPlural);
const visaoSelecionarTudo = geradorVisoes.criarNovaVisao(nomeModeloPlural, declaracaoModelo, 'selecionarTudo');
console.info(`Visão ${visaoSelecionarTudo}`);
const visaoSelecionarUm = geradorVisoes.criarNovaVisao(nomeModeloPlural, declaracaoModelo, 'selecionarUm');
console.info(`Visão ${visaoSelecionarUm}`);
const visaoAdicionar = geradorVisoes.criarNovaVisao(nomeModeloPlural, declaracaoModelo, 'adicionar');
console.info(`Visão ${visaoAdicionar}`);
const visaoEditar = geradorVisoes.criarNovaVisao(nomeModeloPlural, declaracaoModelo, 'editar');
console.info(`Visão ${visaoEditar}`);
const visaoExcluir = geradorVisoes.criarNovaVisao(nomeModeloPlural, declaracaoModelo, 'excluir');
console.info(`Visão ${visaoExcluir}`);
}
};
pontoDeEntradaGerar(process.argv);