From e3ed534c993e07b66b09d2c9da0feb48c4f9fa51 Mon Sep 17 00:00:00 2001 From: AdrianGrassin Date: Fri, 3 Mar 2023 07:33:51 +0000 Subject: [PATCH] almost finished --- .github/workflows/nodejs.yml | 58 +++++++++++++++++++++++++++++++++++ README.md | 45 +++++++++++++++++++++++---- docs/imgs/addbefore.png | Bin 0 -> 22850 bytes package.json | 10 +++++- src/logging-espree.js | 24 +++++++++++++-- 5 files changed, 127 insertions(+), 10 deletions(-) create mode 100644 .github/workflows/nodejs.yml create mode 100644 docs/imgs/addbefore.png diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml new file mode 100644 index 0000000..82805b4 --- /dev/null +++ b/.github/workflows/nodejs.yml @@ -0,0 +1,58 @@ +# Write your workflow for CI here +name: CI + +# Controls when the workflow will run +on: + # Triggers the workflow on push or pull request events but only for the $default-branch branch + push: + branches: [ main ] + pull_request: + branches: [ main ] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + # This workflow contains a single job called "build" + build: + # The type of runner that the job will run on + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: + - ubuntu-latest + node_version: [10.x, 12.x, 14.x, 16.x] + architecture: + - x64 + name: Node ${{ matrix.node_version }} - ${{ matrix.architecture }} on ${{ matrix.os }} + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v2 + - name: Setup node + uses: actions/setup-node@v2 + with: + node-version: ${{ matrix.node_version }} + architecture: ${{ matrix.architecture }} + - run: npm ci + - run: npm test + + + # Runs a single command using the runners shell + # - name: Run a one-line script + # run: echo Hello, compilers world! + + # Runs a set of commands using the runners shell + # - name: Run a multi-line script + # run: | + # echo Add other actions to build, + # echo test your lab. + # Run tests and coverage + #- name: Run tests and coverage + # run: | + # npm install jison + # npm install mocha + # npm test + # npm run cov \ No newline at end of file diff --git a/README.md b/README.md index a4da7b6..68639e2 100644 --- a/README.md +++ b/README.md @@ -3,12 +3,17 @@ ## Resumen de lo aprendido -... +En esta práctica hemos empleado conceptos nuevos como integración continua, que facilitaría el desarrollo del proyecto en caso de que se quisiese escalar mediante GitHub Actions. + + +------------------------- ## Indicar los valores de los argumentos Se ha modificado el código de `logging-espree.js` para que el log también indique los valores de los argumentos que se pasaron a la función. -Ejemplo: +
+ +*Ejemplo:*
```javascript function foo(a, b) { @@ -31,23 +36,51 @@ function foo(a, b) { } foo(1, 'wut', 3); ``` +
+ +------------------------- ## CLI con [Commander.js](https://www.npmjs.com/package/commander) Se han añadido opciones -h y -V, que vienen reconocidas automáticamente con Commander, y una opción que permite especificar el fichero de salida.

-Por ejemplo con -h: +*Por ejemplo con -h:*
![help](/docs/imgs/help.png) +
+ +*Con -V simplemente nos saldría el número de versión especificado en el package.json* + +
+ +------------------------- -Con -V simplemente nos saldría el número de versión especificado en el package.json ## Reto 1: Soportar funciones flecha -... +Para lograr que se puedan soportar este tipo de funciones ha sido necesario modificar la función *addLogging(code)*, incluyendo en el traverse los nodos de tipo *'ArrowFunctionExpression'*. Es importante mencionar que se le tiene que pasar una versión de *ecma* que soporte este tipo de funciones. (En este caso usaremos la versión 12 del estandar). + +```javascript +export function addLogging(code) { + var ast = espree.parse(code, {ecmaVersion: 12, loc: true}); + estraverse.traverse(ast, { /// Con traverse nos metemos en el árbol y buscamos que tipo de node es + enter: function(node, parent) { + if (node.type === 'FunctionDeclaration' || + node.type === 'ArrowFunctionExpression' || + node.type === 'FunctionExpression') { + addBeforeCode(node); + } + } + }); + return escodegen.generate(ast); /// Generamos el ast usando escodegen +} +``` +------------------------- ## Reto 2: Añadir el número de línea -... +Usando una variable llamada *'lines'*, podemos obtener la propiedad del número de línea ya que cada nodo tiene una propiedad que contiene información sobre su localización en el código al principio del nodo.
+![addbeforeCode](./docs/imgs/addbefore.png) +
## Tests and Covering diff --git a/docs/imgs/addbefore.png b/docs/imgs/addbefore.png new file mode 100644 index 0000000000000000000000000000000000000000..8e3de1031276c4f837648ccd1b7b60cae3ba9747 GIT binary patch literal 22850 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 r5ZL{B_CG|+|8o}o{~SO|ax9wCQEg#!Sz! jsdoc/README.md" }, "dependencies": { "acorn": "^8.8.2", diff --git a/src/logging-espree.js b/src/logging-espree.js index 44d060d..0c70b61 100755 --- a/src/logging-espree.js +++ b/src/logging-espree.js @@ -4,7 +4,13 @@ import * as estraverse from "estraverse"; import * as fs from "fs/promises"; export async function transpile(inputFile, outputFile) { - // Fill in the code here + let input = await fs.readFile(inputFile, 'utf-8'); // Usamos el formato utf-8 para que no nos de problemas con los caracteres especiales + let output = addLogging(input); + if (outputFile === undefined) { + console.log(output); + return; + } + await fs.writeFile(outputFile, output); } @@ -24,6 +30,18 @@ export function addLogging(code) { return escodegen.generate(ast); } -function addBeforeCode(node) { - // Fill in the code here + +/** + * @desc Recibe un nodo y le añade un console.log antes de la función, incluyendo el numero de linea y + * + * @param {*} node + */ +function addBeforeCode(node, lines) { + const name = node.id ? node.id.name : ''; + const parameters = node.params.map(param => `\$\{${param.name}\}`); + const beforeCode = "console.log(`Entering " + name + "(" + parameters + ") at line " + lines + "`);"; + const beforeNodes = espree.parse(beforeCode, {ecmaVersion:6}).body; + node.body.body = beforeNodes.concat(node.body.body); } + +