@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
JavaScript
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;
}
}
}