Skip to content

ULL-ESIT-DSI-1617/primeros-pasos-en-nodejs-aitor-nestor-omar-35l2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Práctica: Primeros pasos en NodeJS

Enlace a la descripción de la práctica

Desarrollo de Sistemas Informáticos

Enlace al campus virtual

Versión en IAAS

El concepto de Infraestructura como Servicio (IaaS, Infrastructure as a Service) es uno de los tres modelos fundamentales en el campo del cloud computing, junto con el de Plataforma como Servicio (PaaS, Platform as a Service) y el de Software como Servicio (SaaS, Software as a Service).

Enlace al gitbook desplegado en el IAAS de la ULL (Aitor)

Enlace al gitbook desplegado en el IAAS de la ULL (Néstor)

Enlace al gitbook desplegado en el IAAS de la ULL (Omar)

Versión HEROKU

Heroku es una plataforma como servicio de computación en la Nube que soporta distintos lenguajes de programación.

Enlace al gitbook desplegdo en Heroku

Funciones de los scripts JS

Hemos hecho un port de los scripts realizados en Shell a JavaScript, con el fin de tener unos scripts más sencillos de comprender y universales.

contributors.js

Script que tiene como función principal recopilar los contribuyentes (commits) a través de un archivo JSON previamente creado mediante otro script (git-log.js)

let exec = require('child_process').exec
let mod = require('fs')

Hacemos uso de dos módulos, child process y fs, para conseguir recoger la ejecución del comando git log por shell, (inicializado en el script git-log.js), además de usar operaciones varías con ficheros.

child =exec ('node git-log.js',(error,stdout,stderr) => {

Se realiza la ejecución del script git-log.js, el cual realiza la ejecución del comando git log en shell, tomando todos los commit de los usuarios contribuyentes en el proyecto.

let content = mod.readFileSync("contributors.json");

Se accede al fichero *contributors.json, donde se aloja toda la información de los commit, para más tarde alojar esta información en el archivo MAINTAINERS (si no está creado, lo crea automáticamente) con un append

mod.appendFile("../MAINTAINERS","<Autor: "+jsonContent[i].author+">\n"+"Last Commit: "+jsonContent[i].date+" ("+jsonContent[i].message+")"+"\n"+" "+"\n",(err) => {

deploy-gitbook.js

Script que tiene como función, como su nombre indica, desplegar un libro en gh-pages, formado por los archivos .html alojados en la carpeta txt

let path = require('path')
let ghpages = require('gh-pages')

En este script necesitamos utilizar dos módulos, path y gh-pages

ghpages.publish(path.join(__dirname,'../_book'),(err) => {

Este script lo único que realiza es hacer un publish del contenido del directorio _book, alojado en la rama de gh-pages

deploy-wiki.js

Script para desplegar la wiki de manera automatizada, las wikis proporcionan un lugar en el repositorio para establecer juntos el mapa de ruta del proyecto, mostrar el estado actual y documentar mejor el software.

require('shells/global');

Usamos el módulo shelljs que es una implementación portátil (Windows / Linux / OS X) de comandos de shell de Unix en la parte de NodeJS Como por ejemplo:

 rm('-rf','.git');

Creamos una variable 'REPO' para acceder a la wiki del repositorio, a través del package.json. Desplegamos la wiki a través de git

generate-gitbook.js

Script que realiza un build en GitBook, es decir, crea el website estático para un libro en GitBook.

let exec = require('child_process').exec
let child

En este caso, solo hacemos uso del módulo child process para poder recoger el resultado de la ejecución del comando por shell gitbook build

child =exec ("../node_modules/.bin/gitbook build ../txt ../_book",(error,stdout,stderr)

Se realiza la ejecución del comando gitbook build de todos los archivos *.html de la carpeta _book

generate-wiki.js

Script que crea (en el caso de que no esté creada) la wiki del repositorio, donde se mostrará de forma más detallada la documentación del software en cuestión.

var path = require('path');

var fs = require('fs-extra');
var async = require('async');

Se hace uso de los módulos path, fs-extra y async

fs.mkdir(output, function() {
        // if it dir exists already, just override content
        generateWiki(input, output, function(err) {
            if(err) {
                return console.error(err);
            }

            console.log('generated wiki');

Básicamente, lo que realiza es comprobar que la wiki no está creada, y si no, la crea.

function generateWiki(input, output, cb) {

Esta función crea los elementos que forman la wiki (Ej. README.md, SUMMARY.md)

version.js

Script que trabaja con el número de versión en el package.json, es decir, puede aceptar la modificación de la versión en el mismo o simplemente mostrar el número de versión actual.

let mod = require('fs')
const readline = require('readline');
let jsonfile = require('jsonfile')

Para este script, hacemos uso de los módulos fs, readline y jsonfile, los cuales nos permiten estar trabajando con diversos archivos (package.json)

case 'm':
            rl.question('Introduzca la version ', (answer) => {
                let content = mod.readFileSync("../package.json");
                let jsonContent = JSON.parse(content);
                console.log("Version actual: "+jsonContent.version)
                console.log("La version introducida es: "+answer);

La primera opción permite al usuario poder modificar la versión en el package.json, así como posteriormente mostrarle la versión modificada.

case 'v':

          const jsonContent = require('../package.json')
          console.log("Version actual: " + jsonContent.version)

La segunda opción del script sería mostrar al usuario la versión actual incluida en el package.json

git-log.js

Script que realiza la ejecución del comando por shell git log, con el fin de recopilar y mostrar los commit de los contribuyentes del proyecto, para posteriormente pasar su resultado al script contributors.js

let exec = require('child_process').exec

Como concretamos anteriormente, se hace uso del módulo child process para permitir la ejecución de comandos por shell.

child =exec ('git log --pretty=format:\'{%n  \"commit\": \"%H\",%n  \"author\": \"%aN <%aE>\",%n  \"date\": \"%ad\",%n  \"message\": \"%f\"%n},\' $@ | perl -pe \'BEGIN{print \"[\"}; END{print \"]\n\"}\' | perl -pe \'s/},]/}]/\n\'' ,(error,stdout,stderr) => {

Se realiza un exec con la ejecución del comando git log, con el formato que se desea mostrar el resultado de la ejecución.

Autores

About

primeros-pasos-en-nodejs-aitor-nestor-omar-35l2 created by GitHub Classroom

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published