Skip to content

Commit

Permalink
Procedimento de cópia de exemplos para diretórios de projeto.
Browse files Browse the repository at this point in the history
  • Loading branch information
leonelsanchesdasilva committed Nov 8, 2023
1 parent bdb54fb commit bc9d57e
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 4 deletions.
8 changes: 4 additions & 4 deletions index-novo.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import prompts from 'prompts';
import { criarDiretorioAplicacao } from './interface-linha-comando';
import { copiarExemploParaProjeto, criarDiretorioAplicacao } from './interface-linha-comando';

const pontoDeEntradaNovo = async (argumentos: string[]) => {
// argumentos[0] normalmente é o nome do executável, seja Node, Bun, etc.
Expand Down Expand Up @@ -32,9 +32,8 @@ const pontoDeEntradaNovo = async (argumentos: string[]) => {

if (resposta.confirmado) {
const diretorioCompleto = criarDiretorioAplicacao(nomeProjeto);
// process.chdir(diretorioCompleto);

const tipoProjetoSelecionado = await prompts({
const perguntaTipoProjeto = await prompts({
type: 'select',
name: 'tipoProjeto',
message: 'Selecione o tipo de projeto',
Expand All @@ -45,7 +44,8 @@ const pontoDeEntradaNovo = async (argumentos: string[]) => {
initial: 1
});


await copiarExemploParaProjeto(perguntaTipoProjeto.tipoProjeto, diretorioCompleto);
console.info(`Seu projeto foi criado com sucesso! ${diretorioCompleto}`);
}
}
};
Expand Down
22 changes: 22 additions & 0 deletions interface-linha-comando/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { async as glob } from 'fast-glob'
import sistemaArquivos from 'fs';
import caminho from 'path';

Expand All @@ -13,6 +14,27 @@ export function criarDiretorioAplicacao(nomeAplicacao: string): string {
return diretorioCompleto;
}

export async function copiarExemploParaProjeto(tipoDeProjeto: string, diretorioProjeto: string) {
const diretorioExemplos = caminho.join(__dirname, '../exemplos/' + tipoDeProjeto);
const formatoGlob = (diretorioExemplos + '/**/*.{delegua,foles,lmht,md}').replace(/\\/gi, '/');

const arquivos = await glob([formatoGlob], {
dot: true,
absolute: false,
stats: false,
});

return Promise.all(
arquivos.map(async (arquivo) => {
const arquivoResolvido = caminho.resolve(arquivo);
const novoCaminhoArquivo = arquivoResolvido.replace(diretorioExemplos, diretorioProjeto);
console.log(novoCaminhoArquivo);
await sistemaArquivos.promises.mkdir(caminho.dirname(novoCaminhoArquivo), { recursive: true })
return sistemaArquivos.promises.copyFile(arquivoResolvido, novoCaminhoArquivo);
})
);
}

/* export function gerarProjetoPorTipoDeProjeto(tipoDeProjeto: string) {
switch (tipoDeProjeto) {
case 'api-rest':
Expand Down

0 comments on commit bc9d57e

Please sign in to comment.