11module . exports . command = 'update-docs' ;
22module . exports . desc = 'Update the project README with current list of transforms' ;
33
4- module . exports . handler = function handler ( ) {
4+ function updateProjectREADME ( ) {
55 const fs = require ( 'fs-extra' ) ;
66
7- let TRANSFORMS_PLACE_HOLDER = / < ! - - T R A N S F O R M S _ T A B L E _ S T A R T - - > [ \s \S ] * < ! - - T R A N S F O R M S _ T A B L E _ E N D - - > / ;
7+ let TRANSFORMS_PLACE_HOLDER = / < ! - - T R A N S F O R M S _ S T A R T - - > [ \s \S ] * < ! - - T R A N S F O R M S _ E N D - - > / ;
88
99 let transforms = fs
1010 . readdirSync ( 'transforms' )
@@ -20,7 +20,68 @@ module.exports.handler = function handler() {
2020 . readFileSync ( 'README.md' , 'utf8' )
2121 . replace (
2222 TRANSFORMS_PLACE_HOLDER ,
23- `<!--TRANSFORMS_TABLE_START-->\n${ readmeContent } \n<!--TRANSFORMS_TABLE_END-->`
23+ `<!--TRANSFORMS_START-->\n${ readmeContent } \n<!--TRANSFORMS_END-->`
24+ )
25+ ) ;
26+ }
27+
28+ function updateTransformREADME ( transformName ) {
29+ const fs = require ( 'fs-extra' ) ;
30+ const path = require ( 'path' ) ;
31+
32+ let toc = [ ] ;
33+ let details = [ ] ;
34+
35+ let fixtureDir = `transforms/${ transformName } /__testfixtures__` ;
36+
37+ fs . readdirSync ( fixtureDir )
38+ . filter ( filename => / \. i n p u t $ / . test ( path . basename ( filename , path . extname ( filename ) ) ) )
39+ . forEach ( filename => {
40+ let extension = path . extname ( filename ) ;
41+ let testName = filename . replace ( `.input${ extension } ` , '' ) ;
42+ let inputPath = path . join ( fixtureDir , `${ testName } .input${ extension } ` ) ;
43+ let outputPath = path . join ( fixtureDir , `${ testName } .output${ extension } ` ) ;
44+
45+ toc . push ( `* [${ testName } ](#${ testName } )` ) ;
46+ details . push (
47+ '---' ,
48+ `<a id="${ testName } "></a>` ,
49+ `**Input** (<small>[${ testName } .input${ extension } ](${ inputPath } )</small>):` ,
50+ fs . readFileSync ( inputPath ) ,
51+ `**Output** (<small>[${ testName } .input${ extension } ](${ outputPath } )</small>):` ,
52+ fs . readFileSync ( outputPath )
53+ ) ;
54+ } ) ;
55+
56+ let transformREADMEPath = `transforms/${ transformName } /README.md` ;
57+
58+ let FIXTURES_TOC_PLACE_HOLDER = / < ! - - F I X T U R E S _ T O C _ S T A R T - - > [ \s \S ] * < ! - - F I X T U R E S _ T O C _ E N D - - > / ;
59+ let FIXTURES_CONTENTS_PLACE_HOLDER = / < ! - - F I X T U R E S _ C O N T E N T _ S T A R T - - > [ \s \S ] * < ! - - F I X T U R E S _ C O N T E N T _ E N D - - > / ;
60+
61+ fs . writeFileSync (
62+ transformREADMEPath ,
63+ fs
64+ . readFileSync ( transformREADMEPath , 'utf8' )
65+ . replace (
66+ FIXTURES_TOC_PLACE_HOLDER ,
67+ `<!--FIXTURES_TOC_START-->\n${ toc . join ( '\n' ) } \n<!--FIXTURES_TOC_END-->`
68+ )
69+ . replace (
70+ FIXTURES_CONTENTS_PLACE_HOLDER ,
71+ `<!--FIXTURES_CONTENTS_START-->\n${ details . join ( '\n' ) } \n<!--FIXTURES_CONTENTS_END-->`
2472 )
2573 ) ;
74+ }
75+
76+ function updateTransformREADMEs ( ) {
77+ const fs = require ( 'fs-extra' ) ;
78+
79+ fs . readdirSync ( 'transforms' )
80+ . filter ( file => fs . lstatSync ( `transforms/${ file } ` ) . isDirectory ( ) )
81+ . forEach ( updateTransformREADME ) ;
82+ }
83+
84+ module . exports . handler = function handler ( ) {
85+ updateProjectREADME ( ) ;
86+ updateTransformREADMEs ( ) ;
2687} ;
0 commit comments