File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -36,6 +36,11 @@ module.exports.handler = function handler(options) {
3636 ${ projectName } <TRANSFORM NAME> path/of/files/ or/some**/*glob.js
3737 \`\`\`
3838
39+ ## Transforms
40+
41+ <!--TRANSFORMS_TABLE_START-->
42+ <!--TRANSFORMS_TABLE_END-->
43+
3944 ## Contributing
4045
4146 ### Installation
Original file line number Diff line number Diff line change 1+ module . exports . command = 'update-docs' ;
2+ module . exports . desc = 'Update the project README with current list of transforms' ;
3+
4+ module . exports . handler = function handler ( ) {
5+ const fs = require ( 'fs-extra' ) ;
6+
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 - - > / ;
8+
9+ let transforms = fs
10+ . readdirSync ( 'transforms' )
11+ . filter ( file => fs . lstatSync ( `transforms/${ file } ` ) . isDirectory ( ) ) ;
12+
13+ let readmeContent = transforms
14+ . map ( name => `* [${ name } ](transforms/${ name } /README.md)` )
15+ . join ( '\n' ) ;
16+
17+ fs . writeFileSync (
18+ 'README.md' ,
19+ fs
20+ . readFileSync ( 'README.md' , 'utf8' )
21+ . replace (
22+ TRANSFORMS_PLACE_HOLDER ,
23+ `<!--TRANSFORMS_TABLE_START-->\n${ readmeContent } \n<!--TRANSFORMS_TABLE_END-->`
24+ )
25+ ) ;
26+ } ;
Original file line number Diff line number Diff line change @@ -74,6 +74,28 @@ QUnit.module('codemod-cli', function(hooks) {
7474 ) ;
7575 } ) ;
7676
77+ QUnit . module ( 'update-docs' , function ( hooks ) {
78+ setupProject ( hooks ) ;
79+
80+ QUnit . test (
81+ 'updates top-level README with links to transform READMEs' ,
82+ wrap ( function * ( assert ) {
83+ codemodProject . write ( {
84+ transforms : {
85+ foo : { 'README.md' : 'some content' } ,
86+ bar : { 'README.md' : 'some content' } ,
87+ } ,
88+ } ) ;
89+
90+ yield execa ( EXECUTABLE_PATH , [ 'update-docs' ] ) ;
91+
92+ let README = fs . readFileSync ( codemodProject . path ( 'README.md' ) , 'utf8' ) ;
93+ assert . ok ( README . includes ( '* [foo](transforms/foo/README.md' ) , 'foo link' ) ;
94+ assert . ok ( README . includes ( '* [bar](transforms/bar/README.md' ) , 'bar link' ) ;
95+ } )
96+ ) ;
97+ } ) ;
98+
7799 QUnit . module ( 'generate' , function ( hooks ) {
78100 setupProject ( hooks ) ;
79101
You can’t perform that action at this time.
0 commit comments