UNPKG

@hello.nrfcloud.com/proto-map

Version:

Documents the communication protocol between devices, the hello.nrfcloud.com/map backend and web application

48 lines (47 loc) 1.99 kB
import chalk from 'chalk'; import { parseREADME } from 'markdown/parseREADME.js'; import assert from 'node:assert/strict'; import { readFile, readdir, stat } from 'node:fs/promises'; import path from 'node:path'; import { ModelIDRegExp } from './types.js'; console.log(chalk.gray('Models rules check')); console.log(''); var modelsDir = path.join(process.cwd(), 'models'); var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { for(var _iterator = (await readdir(modelsDir))[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){ var model = _step.value; var modelDir = path.join(modelsDir, model); if (!(await stat(modelDir)).isDirectory()) continue; console.log(chalk.white('·'), chalk.white.bold(model)); assert.match(model, ModelIDRegExp, 'Model identifiers must consist of numbers, letters, dash, plus, and underscore only'); console.log(chalk.green('✔'), chalk.gray('Model name is correct')); // A README.md should exist try { await stat(path.join(modelDir, 'README.md')); } catch (e) { throw new Error("No README.md defined for model ".concat(model, "!")); } console.log(chalk.green('✔'), chalk.gray("README.md exists")); try { parseREADME(await readFile(path.join(modelDir, 'README.md'), 'utf-8')); } catch (err) { console.error(err); throw new Error("README is not valid for ".concat(model, "!")); } console.log(chalk.green('✔'), chalk.gray("README.md is valid")); } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally{ try { if (!_iteratorNormalCompletion && _iterator.return != null) { _iterator.return(); } } finally{ if (_didIteratorError) { throw _iteratorError; } } }