UNPKG

liquido

Version:

Conjunto de ferramentas para desenvolvimento de aplicações para a internet 100% em português

130 lines 6.69 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const figlet_1 = require("figlet"); const flexoes_1 = require("@designliquido/flexoes"); const chalk_1 = require("chalk"); const yargs_1 = __importDefault(require("yargs")); const prompts_1 = __importDefault(require("prompts")); const package_json_1 = require("./package.json"); const liquido_1 = require("./liquido"); const interface_linha_comando_1 = require("./interface-linha-comando"); const gerador_visoes_1 = require("./interface-linha-comando/gerar/gerador-visoes"); const gerador_rotas_1 = require("./interface-linha-comando/gerar/gerador-rotas"); /** * Classe que representa o ponto de entrada da aplicação Liquido. */ class LiquidoPontoEntrada { constructor() { this.logo = (0, figlet_1.textSync)('Liquido', { horizontalLayout: 'full' }); } mostrarLogo() { console.log((0, chalk_1.blue)(this.logo + '\n')); } async comandoDocumentar() { // await encontrarControladores(); await (0, interface_linha_comando_1.documentar)(); } async comandoGerar(args) { let nomeModelo = args.modelo; if (nomeModelo === undefined || nomeModelo.length <= 0) { const opcoesModelos = (0, interface_linha_comando_1.obterTodosModelos)(); const respostaNomeModelo = await (0, prompts_1.default)({ type: 'select', name: 'nomeModelo', message: 'Qual o nome do modelo?', choices: opcoesModelos }); nomeModelo = respostaNomeModelo.nomeModelo; } const declaracoes = (0, interface_linha_comando_1.importarModelos)(nomeModelo); (0, interface_linha_comando_1.criarDiretorioAplicacao)('rotas'); const geradorVisoes = new gerador_visoes_1.GeradorVisoes(); const geradorRotas = new gerador_rotas_1.GeradorRotas(); for (const declaracao of declaracoes) { const declaracaoModelo = declaracao; const nomeBaseModelo = declaracaoModelo.simbolo.lexema.toLocaleLowerCase('pt'); const nomeModeloPlural = (0, flexoes_1.pluralizar)(nomeBaseModelo).toLocaleLowerCase('pt'); const caminhosRotas = geradorRotas.criarNovasRotas(declaracaoModelo); for (const caminhoRota of caminhosRotas) { console.info((0, chalk_1.blue)(`Rota ${caminhoRota}`)); } (0, interface_linha_comando_1.criarDiretorioSeNaoExiste)('visoes', nomeModeloPlural); const visaoSelecionarTudo = geradorVisoes.criarNovaVisao(nomeModeloPlural, declaracaoModelo, 'selecionarTudo'); console.info((0, chalk_1.blue)(`Visão ${visaoSelecionarTudo}`)); const visaoSelecionarUm = geradorVisoes.criarNovaVisao(nomeModeloPlural, declaracaoModelo, 'selecionarUm'); console.info((0, chalk_1.blue)(`Visão ${visaoSelecionarUm}`)); const visaoAdicionar = geradorVisoes.criarNovaVisao(nomeModeloPlural, declaracaoModelo, 'adicionar'); console.info((0, chalk_1.blue)(`Visão ${visaoAdicionar}`)); const visaoEditar = geradorVisoes.criarNovaVisao(nomeModeloPlural, declaracaoModelo, 'editar'); console.info((0, chalk_1.blue)(`Visão ${visaoEditar}`)); const visaoExcluir = geradorVisoes.criarNovaVisao(nomeModeloPlural, declaracaoModelo, 'excluir'); console.info((0, chalk_1.blue)(`Visão ${visaoExcluir}`)); } } async comandoNovo(args) { let nomeProjeto = args.nome; if (nomeProjeto === undefined || nomeProjeto.length <= 0) { const respostaNomeProjeto = await (0, prompts_1.default)({ type: 'text', name: 'nomeProjeto', message: 'Qual o nome do seu projeto?' }); nomeProjeto = respostaNomeProjeto.nomeProjeto; } if (nomeProjeto.length > 0) { console.log((0, chalk_1.green)(`Iremos criar um novo projeto em Liquido chamado "${nomeProjeto}"`)); const resposta = await (0, prompts_1.default)({ type: 'confirm', message: 'Confirma?', name: 'confirmado', initial: true, onRender() { this.yesMsg = 'Sim'; this.noMsg = 'não'; this.yesOption = '(S/n)'; } }); if (resposta.confirmado) { const diretorioCompleto = (0, interface_linha_comando_1.criarDiretorioAplicacao)(nomeProjeto); const perguntaTipoProjeto = await (0, prompts_1.default)({ type: 'select', name: 'tipoProjeto', message: 'Selecione o tipo de projeto', choices: [ { title: 'MVC', description: 'Modelo-Visão-Controlador', value: 'mvc' }, { title: 'API REST', description: 'Interface de dados usando o modelo REST', value: 'api-rest' } ], initial: 1 }); await (0, interface_linha_comando_1.copiarExemploParaProjeto)(perguntaTipoProjeto.tipoProjeto, diretorioCompleto); console.info((0, chalk_1.yellow)(`Seu projeto foi criado com sucesso! ${diretorioCompleto}`)); } } } comandoServidor() { const liquido = new liquido_1.Liquido(process.cwd()); liquido.iniciar(); } opcoes() { return yargs_1.default .scriptName('liquido') .version(package_json_1.version) .usage('Uso: $0 <comando> [opções]') .help('ajuda') .alias('ajuda', '?') .command(['*', 'servidor'], 'Serve o diretório local como uma aplicação para a internet.', {}, this.comandoServidor) .command('documentar', 'Lê o projeto e gera uma documentação OpenAPI correspondente', {}, this.comandoDocumentar) .command('novo [nome]', 'Inicia uma nova aplicação pré-configurada para funcionar com Liquido.', {}, this.comandoNovo) .command('gerar [modelo]', 'Gera controlador e visão correspondentes ao nome do modelo passado por parâmetro. O modelo deve ter um arquivo .delegua correspondente no diretório "modelos".', {}, this.comandoGerar) .argv; } async iniciar() { this.mostrarLogo(); this.opcoes(); } } (async () => new LiquidoPontoEntrada().iniciar())(); //# sourceMappingURL=index.js.map