UNPKG

1.82 kBJavaScriptView Raw
1/**
2 * @module
3 * @see {@link https://www.npmjs.com/package/yaml-lint|YAML Lint}
4 */
5
6"use strict";
7
8const fs = require("fs");
9const yamlLint = require("yaml-lint");
10const SEVERITY = require("../severity");
11
12/**
13 * Initialise un checker pour YAML Lint en cherchant l'éventuelle configuration.
14 *
15 * @returns {object} Les patrons et les options par défaut.
16 */
17const configure = function () {
18 let config = null;
19 for (const file of fs.readdirSync(".")) {
20 if (".yaml-lint.json" === file) {
21 config = "../" + file;
22 break;
23 }
24 }
25 return {
26 "patterns": ["*.yaml", "*.yml"],
27 "linters": { "yaml-lint": config }
28 };
29};
30
31/**
32 * Vérifie un fichier avec le linter <strong>YAML Lint</strong>.
33 *
34 * @param {string} file Le fichier qui sera vérifié.
35 * @param {number} level Le niveau de sévérité minimum des notifications
36 * retournées.
37 * @param {object} options Les options qui seront passées au linter.
38 * @returns {Promise.<Array.<object>>} Une promesse retournant la liste des
39 * notifications.
40 */
41const wrapper = async function (file, level, options) {
42 if (SEVERITY.ERROR > level) {
43 return [];
44 }
45
46 try {
47 await yamlLint.lintFile(file, options);
48 return [];
49 } catch (err) {
50 return [{
51 "file": file,
52 "linter": "yaml-lint",
53 "message": err.reason,
54 "locations": [{
55 // Augmenter de un le numéro de la ligne et de la colonne car
56 // YAML Lint commence les numérotations à zéro.
57 "line": err.mark.line + 1,
58 "column": err.mark.column + 1
59 }]
60 }];
61 }
62};
63
64module.exports = { configure, wrapper };