GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — tools: make apilinks building more robust · nodejs/node@027ca95

File tree

Expand file treeCollapse file tree
Open diff view settings
Filter options
  • Makefile
  • test/doctool
    • test-apilinks.js
  • tools/doc
    • apilinks.js
    • generate.js
Expand file treeCollapse file tree
Open diff view settings
Collapse file

‎Makefile‎

Copy file name to clipboardExpand all lines: Makefile
+5-5Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -647,16 +647,16 @@ out/doc/api/assets/%: doc/api_assets/% out/doc/api/assets
647647

648648
run-npm-ci = $(PWD)/$(NPM) ci
649649

650+
LINK_DATA = out/doc/apilinks.json
650651
gen-api = tools/doc/generate.js --node-version=$(FULLVERSION) \
651-
--apilinks=out/apilinks.json $< --output-directory=out/doc/api
652-
gen-apilink = tools/doc/apilinks.js $(wildcard lib/*.js) > $@
652+
--apilinks=$(LINK_DATA) $< --output-directory=out/doc/api
653+
gen-apilink = tools/doc/apilinks.js $(LINK_DATA) $(wildcard lib/*.js)
653654

654-
out/apilinks.json: $(wildcard lib/*.js) tools/doc/apilinks.js
655+
$(LINK_DATA): $(wildcard lib/*.js) tools/doc/apilinks.js
655656
$(call available-node, $(gen-apilink))
656657

657658
out/doc/api/%.json out/doc/api/%.html: doc/api/%.md tools/doc/generate.js \
658-
tools/doc/html.js tools/doc/json.js tools/doc/apilinks.js | \
659-
out/apilinks.json
659+
tools/doc/html.js tools/doc/json.js tools/doc/apilinks.js | $(LINK_DATA)
660660
$(call available-node, $(gen-api))
661661

662662
out/doc/api/all.html: $(apidocs_html) tools/doc/allhtml.js \
Collapse file

‎test/doctool/test-apilinks.js‎

Copy file name to clipboardExpand all lines: test/doctool/test-apilinks.js
+10-7Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,31 @@
22

33
require('../common');
44
const fixtures = require('../common/fixtures');
5+
const tmpdir = require('../common/tmpdir');
56
const fs = require('fs');
67
const assert = require('assert');
78
const path = require('path');
89
const { execFileSync } = require('child_process');
910

1011
const script = path.join(__dirname, '..', '..', 'tools', 'doc', 'apilinks.js');
11-
1212
const apilinks = fixtures.path('apilinks');
13+
14+
tmpdir.refresh();
15+
1316
fs.readdirSync(apilinks).forEach((fixture) => {
1417
if (!fixture.endsWith('.js')) return;
15-
const file = path.join(apilinks, fixture);
16-
17-
const expectedContent = fs.readFileSync(file + 'on', 'utf8');
18+
const input = path.join(apilinks, fixture);
1819

19-
const output = execFileSync(
20+
const expectedContent = fs.readFileSync(`${input}on`, 'utf8');
21+
const outputPath = path.join(tmpdir.path, `${fixture}on`);
22+
execFileSync(
2023
process.execPath,
21-
[script, file],
24+
[script, outputPath, input],
2225
{ encoding: 'utf-8' }
2326
);
2427

2528
const expectedLinks = JSON.parse(expectedContent);
26-
const actualLinks = JSON.parse(output);
29+
const actualLinks = JSON.parse(fs.readFileSync(outputPath));
2730

2831
for (const [k, v] of Object.entries(expectedLinks)) {
2932
assert.ok(k in actualLinks, `link not found: ${k}`);
Collapse file

‎tools/doc/apilinks.js‎

Copy file name to clipboardExpand all lines: tools/doc/apilinks.js
+4-2Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,9 @@ const tag = execSync(`git describe --contains ${hash}`).split('\n')[0] || hash;
4747

4848
// Extract definitions from each file specified.
4949
const definition = {};
50-
process.argv.slice(2).forEach((file) => {
50+
const output = process.argv[2];
51+
const inputs = process.argv.slice(3);
52+
inputs.forEach((file) => {
5153
const basename = path.basename(file, '.js');
5254

5355
// Parse source.
@@ -206,4 +208,4 @@ process.argv.slice(2).forEach((file) => {
206208
}
207209
});
208210

209-
console.log(JSON.stringify(definition, null, 2));
211+
fs.writeFileSync(output, JSON.stringify(definition, null, 2), 'utf8');
Collapse file

‎tools/doc/generate.js‎

Copy file name to clipboardExpand all lines: tools/doc/generate.js
+6-3Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,12 @@ args.forEach(function(arg) {
4949
} else if (arg.startsWith('--output-directory=')) {
5050
outputDir = arg.replace(/^--output-directory=/, '');
5151
} else if (arg.startsWith('--apilinks=')) {
52-
apilinks = JSON.parse(
53-
fs.readFileSync(arg.replace(/^--apilinks=/, ''), 'utf8')
54-
);
52+
const linkFile = arg.replace(/^--apilinks=/, '');
53+
const data = fs.readFileSync(linkFile, 'utf8');
54+
if (!data.trim()) {
55+
throw new Error(`${linkFile} is empty`);
56+
}
57+
apilinks = JSON.parse(data);
5558
}
5659
});
5760

0 commit comments

Comments
0 (0)
You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.