1.0.19 • Published 3 years ago

simple-codegen v1.0.19

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

Introdução

O objetivo dessa lib é gerar código utilizando perguntas e arquivos de templates

Por baixo dos panos são utilizadas 2 libs para isso:

  • Hygen (Criação de código utilizando templates)
  • Inquirer (Criação de prompts para coleta dos parâmetros para geração de código)

Como iniciar

Instale: yarn add simple-codegen

Crie o rootDir (.codegen)

  • Crie uma pasta na raiz do seu projeto chamada (.codegen)
  • Dentro dessa pasta, crie sub-pastas para armazenar a lógica de cada geração de código diferente, exemplo:
.codegen
├── Controller
│   ├── codegen.js
│   └── templates
│       └── Controller.ejs.t
└── View
    ├── codegen.js
    └── templates
        └── View.ejs.t
  • Cada sub-pasta deve possuir obrigatoriamente um arquivo codegen.js e uma pasta templates contendo os arquivos de templates a serem utilizados

Gerando o código

Agora, rode yarn codegen ou npm run codegen, e o rootDir será escaneado buscando arquivos codegen.js e irá solicitar qual arquivo deve ser rodado, exemplo:

Essa estrutura:

.codegen
├── Controller
│   ├── codegen.js
│   └── templates
│       └── Controller.ejs.t
└── View
    ├── codegen.js
    └── templates
        └── View.ejs.t

Irá resultar na seguinte pergunta:

? Escolha qual template deseja gerar (Use arrow keys)
❯ /.codegen/Controller 
  /.codegen/View 

Ao selecionar uma das opções, o arquivo codegen.js será importado e os prompts que você definiu dentro dele serão solicitados para a criação da template, exemplo:

Arquivo ./codegen/Controller/codegen.js:

const { InputPrompt, CodeGen } = require('simple-codegen');

const codeGen = new CodeGen();

// Utilizar sempre as classes exportadas da lib com sufixo 'Prompt'
codeGen.addPrompt(new InputPrompt('name', 'Qual é o nome do controller?'));

// O objeto exportado deve ser sempre uma instância de CodeGen
module.exports = codeGen;

Prompt:

? Escolha qual template deseja gerar /.codegen/Controller
running file /usr/github/misc/codegen/examples/.codegen/Controller/codegen.js
? Qual é o nome do controller? Produto

Arquivo ./codegen/Controller/templates/Controller.ejs.t:

---
to: examples/Controllers/<%=name%>Controller.php
---

class <%=name%>Controller {

	public index() {
		return "Hello World";
	}

	public foo() {
		return "Hello World";
	}
}

Ao responder ao último prompt exportado do arquivo codegen.js, as respostas serão parseadas e serão aplicadas a todas as templates dentro da pasta templates.

Resultado final do exemplo:

examples/examples/Controllers/ProdutoController.php:

class ProdutoController {

	public index() {
		return "Hello World";
	}

	public foo() {
		return "Hello World";
	}
}

Flags

(rootDir=) Utilizando outro rootDir

Para utilizar um rootDir diferente, passe a flag rootDir=, exemplo:

yarn codegen rootDir=.codegen/Controller

(scriptPath=) Definindo diretamente o arquivo a ser rodado

Para não precisar escolher via prompt qual arquivo deve ser rodado, é possível passar para a CLI qual o script que será executado utilizando a flag scriptPath, exemplo:

yarn codegen scriptPath=.codegen/Controller/codegen.js

Irá executar diretamente os prompts que estão dentro do arquivo codegen.js especificado

1.0.19

3 years ago

1.0.18

3 years ago

1.0.17

3 years ago

1.0.16

3 years ago

1.0.11

3 years ago

1.0.15

3 years ago

1.0.14

3 years ago

1.0.13

3 years ago

1.0.12

3 years ago

1.0.10

3 years ago

1.0.0

3 years ago

1.0.9

3 years ago

1.0.8

3 years ago

1.0.7

3 years ago

1.0.6

3 years ago

1.0.5

3 years ago

1.0.4

3 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago