44// Modify the require paths in the js code to pull from the build tree.
55// Triggered from the build-addons target in the Makefile and vcbuild.bat.
66
7- import { mkdir , writeFile } from 'fs' ;
8- import { resolve } from 'path' ;
9- import { fileURLToPath } from 'url' ;
7+ import { mkdir , writeFile } from 'fs/promises' ;
108
119import gfm from 'remark-gfm' ;
1210import remarkParse from 'remark-parse' ;
1311import { toVFile } from 'to-vfile' ;
1412import unified from 'unified' ;
1513
16- const rootDir = fileURLToPath ( new URL ( '../..' , import . meta. url ) ) ;
17- const doc = resolve ( rootDir , ' doc' , ' api' , ' addons.md') ;
18- const verifyDir = resolve ( rootDir , ' test', 'addons' ) ;
14+ const rootDir = new URL ( '../../ ' , import . meta. url ) ;
15+ const doc = new URL ( './ doc/ api/ addons.md', rootDir ) ;
16+ const verifyDir = new URL ( './ test/addons/ ', rootDir ) ;
1917
2018const file = toVFile . readSync ( doc , 'utf8' ) ;
2119const tree = unified ( ) . use ( remarkParse ) . use ( gfm ) . parse ( file ) ;
@@ -38,23 +36,24 @@ tree.children.forEach((node) => {
3836 }
3937} ) ;
4038
41- Object . keys ( addons ) . forEach ( ( header ) => {
42- verifyFiles ( addons [ header ] . files , header ) ;
43- } ) ;
39+ await Promise . all (
40+ Object . keys ( addons ) . flatMap (
41+ ( header ) => verifyFiles ( addons [ header ] . files , header )
42+ ) ) ;
4443
4544function verifyFiles ( files , blockName ) {
4645 const fileNames = Object . keys ( files ) ;
4746
4847 // Must have a .cc and a .js to be a valid test.
4948 if ( ! fileNames . some ( ( name ) => name . endsWith ( '.cc' ) ) ||
5049 ! fileNames . some ( ( name ) => name . endsWith ( '.js' ) ) ) {
51- return ;
50+ return [ ] ;
5251 }
5352
5453 blockName = blockName . toLowerCase ( ) . replace ( / \s / g, '_' ) . replace ( / \W / g, '' ) ;
55- const dir = resolve (
54+ const dir = new URL (
55+ `./${ String ( ++ id ) . padStart ( 2 , '0' ) } _${ blockName } /` ,
5656 verifyDir ,
57- `${ String ( ++ id ) . padStart ( 2 , '0' ) } _${ blockName } `
5857 ) ;
5958
6059 files = fileNames . map ( ( name ) => {
@@ -68,14 +67,14 @@ ${files[name].replace(
6867` ;
6968 }
7069 return {
71- path : resolve ( dir , name ) ,
72- name : name ,
73- content : files [ name ]
70+ content : files [ name ] ,
71+ name,
72+ url : new URL ( `./ ${ name } ` , dir ) ,
7473 } ;
7574 } ) ;
7675
7776 files . push ( {
78- path : resolve ( dir , ' binding.gyp') ,
77+ url : new URL ( './ binding.gyp', dir ) ,
7978 content : JSON . stringify ( {
8079 targets : [
8180 {
@@ -87,16 +86,8 @@ ${files[name].replace(
8786 } )
8887 } ) ;
8988
90- mkdir ( dir , ( ) => {
91- // Ignore errors.
92-
93- files . forEach ( ( { path, content } ) => {
94- writeFile ( path , content , ( err ) => {
95- if ( err )
96- throw err ;
89+ const dirCreation = mkdir ( dir ) ;
9790
98- console . log ( `Wrote ${ path } ` ) ;
99- } ) ;
100- } ) ;
101- } ) ;
91+ return files . map ( ( { url, content } ) =>
92+ dirCreation . then ( ( ) => writeFile ( url , content ) ) ) ;
10293}
0 commit comments