tools: convert addon-verify to remark

This is the last use of the remark *module*. tools/remark-cli and
tools/remark-preset-lint-node remain.

PR-URL: https://github.com/nodejs/node/pull/21978
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
Sam Ruby 2018-07-25 14:58:41 -07:00 committed by Vse Mozhet Byt
parent 045b07d518
commit 3ffd6892c4
3 changed files with 30 additions and 16 deletions

View File

@ -1,28 +1,38 @@
'use strict'; 'use strict';
const { mkdir, readFileSync, writeFile } = require('fs'); // doc/api/addons.md has a bunch of code. Extract it for verification
// that the C++ code compiles and the js code runs.
// Add .gyp files which will be used to compile the C++ code.
// Modify the require paths in the js code to pull from the build tree.
// Triggered from the build-addons target in the Makefile and vcbuild.bat.
const { mkdir, writeFile } = require('fs');
const { resolve } = require('path'); const { resolve } = require('path');
const { lexer } = require('marked'); const vfile = require('to-vfile');
const unified = require('unified');
const remarkParse = require('remark-parse');
const rootDir = resolve(__dirname, '..', '..'); const rootDir = resolve(__dirname, '..', '..');
const doc = resolve(rootDir, 'doc', 'api', 'addons.md'); const doc = resolve(rootDir, 'doc', 'api', 'addons.md');
const verifyDir = resolve(rootDir, 'test', 'addons'); const verifyDir = resolve(rootDir, 'test', 'addons');
const tokens = lexer(readFileSync(doc, 'utf8')); const file = vfile.readSync(doc, 'utf8');
const tree = unified().use(remarkParse).parse(file);
const addons = {}; const addons = {};
let id = 0; let id = 0;
let currentHeader; let currentHeader;
const validNames = /^\/\/\s+(.*\.(?:cc|h|js))[\r\n]/; const validNames = /^\/\/\s+(.*\.(?:cc|h|js))[\r\n]/;
tokens.forEach(({ type, text }) => { tree.children.forEach((node) => {
if (type === 'heading') { if (node.type === 'heading') {
currentHeader = text; currentHeader = file.contents.slice(
node.children[0].position.start.offset,
node.position.end.offset);
addons[currentHeader] = { files: {} }; addons[currentHeader] = { files: {} };
} } else if (node.type === 'code') {
if (type === 'code') { const match = node.value.match(validNames);
const match = text.match(validNames);
if (match !== null) { if (match !== null) {
addons[currentHeader].files[match[1]] = text; addons[currentHeader].files[match[1]] = node.value;
} }
} }
}); });

View File

@ -339,11 +339,6 @@
"resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-0.4.0.tgz", "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-0.4.0.tgz",
"integrity": "sha1-iQwsGzv+g/sA5BKbjkz+ZFJw+dE=" "integrity": "sha1-iQwsGzv+g/sA5BKbjkz+ZFJw+dE="
}, },
"marked": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/marked/-/marked-0.4.0.tgz",
"integrity": "sha512-tMsdNBgOsrUophCAFQl0XPe6Zqk/uy9gnue+jIIKhykO51hxyu6uNx7zBPy0+y/WKYVZZMspV9YeXLNdKk+iYw=="
},
"mdast-util-definitions": { "mdast-util-definitions": {
"version": "1.2.2", "version": "1.2.2",
"resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-1.2.2.tgz", "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-1.2.2.tgz",
@ -591,6 +586,15 @@
"is-hexadecimal": "^1.0.0" "is-hexadecimal": "^1.0.0"
} }
}, },
"to-vfile": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-5.0.0.tgz",
"integrity": "sha512-sUeBtb4i09pNIzPtl/PMW20Xfe/NK82oV0IehtmoX/+PhIdvc6JHMRnmC4fjCIcy0LOwcNqB8iRMtTBzXHVbng==",
"requires": {
"is-buffer": "^2.0.0",
"vfile": "^3.0.0"
}
},
"trim": { "trim": {
"version": "0.0.1", "version": "0.0.1",
"resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz",

View File

@ -7,12 +7,12 @@
"node": ">=6" "node": ">=6"
}, },
"dependencies": { "dependencies": {
"marked": "^0.4.0",
"rehype-raw": "^2.0.0", "rehype-raw": "^2.0.0",
"rehype-stringify": "^3.0.0", "rehype-stringify": "^3.0.0",
"remark-html": "^7.0.0", "remark-html": "^7.0.0",
"remark-parse": "^5.0.0", "remark-parse": "^5.0.0",
"remark-rehype": "^3.0.0", "remark-rehype": "^3.0.0",
"to-vfile": "^5.0.0",
"unified": "^7.0.0", "unified": "^7.0.0",
"unist-util-find": "^1.0.1", "unist-util-find": "^1.0.1",
"unist-util-select": "^1.5.0", "unist-util-select": "^1.5.0",