@alu0100615791/addlogging
v1.2.1
Published
Small library providing utilities to create console logs
Downloads
10
Readme
AddLogging
Small library providing utilities to create console logs
Installation
npm install @alu010061591/addLogging --save
Usage
add-logging --pattern 'functionNamePattern' --output salida.js -i input.js
- -p patron
- -o fichero salida
- -i fichero entrada
Test
npm test
Release History
1.2.0
Módulo NPM
En esta práctica se pedía crear un módulo npm a partir de logging.js, el código de la práctica 1. Publicarlo en node y testearlo.
Primeros pasos
Lo primero fue configurar npm para poder subir el modulo. para ello se usaron los siguientes comandos:
npm set init.author.name "Juan José Pérez López"
npm set init.author.email "[email protected]"
npm set init.author.url "https://github.com/alu0100615791"
npm adduser
Y tenemos que iniciar npm en nuestro ambito:
npm init --scope=@alu0100615791
En el package.json colocamos lo siguiente:
"name": "@alu0100615791/addlogging",
"version": "1.2.0",
"main": "logging.js",
"bin": {
"add-logging": "logging.js"
},
Y en el logging.js debemos añadir la siguiente linea para cuando alguien use el módulo se ejecute la función deseada.
module.exports = addLogging;
Una vez tenemos esto ya lo podemos publicar con la opcion:
npm publish --access public
Y ya tendriamos el modulo publicado y listo para su uso
##Logging.js
Queremos que el programa se ejecute con el siguiente comando:
add-logging --pattern 'functionNamePattern' --output salida.js -i input.js
Para ello usamos commander como en la práctica anterior, añadiendo las opciones -p para que se ejecute con el patron deseado y -i para añadir el fichero de entrada. Nuestro commander quedaría de la siguiente manera:
program
.option('-o, --output <fichero>', 'especifique el fichero de salida', 'output.js')
.option('-i, --input <fichero>', 'especifique el fichero de entrada', 'input.js')
.option('-p, --pattern <patron>', 'especifique el patron', 'functionNamePattern');
program.parse();
const input = fs.readFileSync(program.opts().input, 'UTF8');
const output = addLogging(input, program.opts().pattern);
fs.writeFileSync(program.opts().output, output);
Aparte debemos modificar la siguiente linea al addLogging para que se ejecute con el patron deseado:
if (node.id != undefined && node.id.name === pattern)
Posteriormente podemos hacer un npm publish para subir nuestros cambios
##Tests
Lo primero que necesitamos es instalar Chai y Mocha y en el package.json añadimos:
"scripts": {
"test": "mocha"
},
Despues creamos el fichero test.js y añadimos el codigo que deseamos testear:
const addLogging = require('./logging');
var should = require('chai').should();
// addlogging = require('logging.js');
const input = `function foo(a, b) {
var x = 'blah';
var y = (function () {
return 3;
})();
let z = (e => {
return e +1
})(4);
}
foo(1, 'wut', 3);
function fuu() {
return 55;
}`;
const output = `function foo(a, b) {
console.log('Entering foo() at line 1');
console.log(a);
console.log(b);
var x = 'blah';
var y = function () {
return 3;
}();
let z = (e => {
return e + 1;
})(4);
}
foo(1, 'wut', 3);
function fuu() {
return 55;
}`;
describe('#verificar', function () {
it('Working propertly', function () {
addLogging(input.trim(), 'foo').should.equal(output.trim());
})
it('Working not propertly', function () {
addLogging(input.trim(), 'fuu').should.not.equal(output.trim());
})
})
Al ejecutarlo con npm test nos da la siguiente salida:
> mocha
#verificar
√ Working propertly
√ Working not propertly
2 passing (9ms)
Posteriormente en otro proyecto queremos ejecutar los test y comprobar que todo va bien para ello en el package.json tenemos:
"name": "@alu0100615791/prueba-logging",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "mocha index.js"
},
y si ejecutamos el index.js se nos pasarán los test correctamente.
##Documentacion
Antes de nada debemos instalar la documentacion de js para ello:
npx documentation --version
npm install -g documentation
y ya podemos hacer comentarios en nuestro logging.js como:
/**
* Princiapl fuction that generate ast tree from code parameter
* @param {string} code
* @param {string} pattern
* @returns ast tree
*/
Podemos generar un markdown automatico con los comentarios hechos poniendo:
documentation build logging.js -f md
##Submodules
Simplemente añadimos los repositorios que queramos con:
git submodule add (ssh)