@andrepesi/ng-lib
Version:
Gerador de template para bibliotecas Angular 4
97 lines (86 loc) • 3.26 kB
JavaScript
var child_process = require('child_process');
var chalk = require('chalk');
var clear = require('clear');
var CLI = require('clui');
var inquirer = require('inquirer');
var Spinner = CLI.Spinner;
var _ = require('lodash');
var fs = require('fs');
var path = require('path');
var files = require('./helpers/files')
var install = require('./helpers/install')
var yosay = require('yosay')
var exec = require('child_process').exec,
child;
/**
* tela de boas vindas
*/
clear();
console.log(
yosay(
'Bem vindo ao ' + chalk.yellow('NgLib ') + ' gerador de template para ' + chalk.red('Angular Libraries \n')
));
console.log(chalk.green('Author: André P. Silva'));
/**
* Obtem do usuario as informações necessarias para criar a angular library
* @param {*} callback
*/
function prompting(callback) {
var questions = [
{
name: 'library_name',
type: 'input',
message: 'Informe o nome da biblioteca :',
validate: function( value ) {
if (value.length) {
return true;
} else {
return 'Por favor, Informe o nome da biblioteca ';
}
}
}
];
//responsavel por executar as perguntas e passa as respostas para o callback desejado
inquirer.prompt(questions).then(callback);
}
/**
* Executa a funcao prompting acima, passando a função de callback que ira usar as respostas informadas pelo usuário
*/
prompting(function(credentials) {
// Indicador de execução de tarefas
var status = new Spinner('Preparando tudo..');
status.start();
//Atualiza a mensagem
status.message('Copiando os arquivos ')
// recupera os locais de instalação do NgLib feita pelo NodeJS
const templates = files.getTemplatesPath();
// recupera o local onde o prompt de comando foi executado, ou seja, pasta onde a library sera criada
const destino = files.getDestinationPath();
// copia os arquivos de template para a pasta da library que esta sendo criada
files.moveSourceLibraryFiles(templates, destino,function(err){
if(err){
console.error(chalk.red('Erro ao copiar os arquivos necessários ',err));
return false;
}
status.message('Arquivos copiados. Configurando a sua nova library');
files.renameLibraryNameOnFiles(credentials.library_name);
// se tudo correr bem, a library foi criada com sucesso
status.message('Angular Library criada com sucesso');
// status.stop();
status.message('Instalando os pacotes NPM. Aguarde');
// npminstall.start();
child = exec('npm install',
function (error, stdout, stderr) {
status.stop();
if (error !== null) {
console.log('exec error: ' + error);
}
else{
console.log(chalk.green('\nPacotes instalados com sucesso'));
}
// npminstall.stop();
});
});
});
;