@@ -37,19 +37,69 @@ https://github.com/firebase/firebase-js-sdk
37
37
` ;
38
38
39
39
const tmpDir = `${ projectRoot } /temp` ;
40
+ const EXCLUDED_PACKAGES = [ 'app-compat' , 'util' , 'rules-unit-testing' ] ;
40
41
41
42
yargs
42
- . command ( '$0' , 'generate standard reference docs' , { } , _argv =>
43
- generateDocs ( /* forDevsite */ false )
43
+ . command ( '$0' , 'generate standard reference docs' , {
44
+ skipBuild : {
45
+ type : 'boolean' ,
46
+ default : false
47
+ }
48
+ } , _argv =>
49
+ generateDocs ( /* forDevsite */ false , _argv . skipBuild )
44
50
)
45
- . command ( 'devsite' , 'generate reference docs for devsite' , { } , _argv =>
46
- generateDocs ( /* forDevsite */ true )
51
+ . command ( 'devsite' , 'generate reference docs for devsite' , {
52
+ skipBuild : {
53
+ type : 'boolean' ,
54
+ default : false
55
+ }
56
+ } , _argv =>
57
+ generateDocs ( /* forDevsite */ true , _argv . skipBuild )
47
58
)
59
+ . command ( 'toc' , 'generate devsite TOC' , { } , _argv => generateToc ( ) )
60
+ . option ( 'skipBuild' , {
61
+ describe : 'Skip yarn build and api-report - only do this if you have already generated the most up to date .api.json files' ,
62
+ type : 'boolean'
63
+ } )
48
64
. demandCommand ( )
49
65
. help ( ) . argv ;
50
66
67
+ async function generateToc ( ) {
68
+ console . log ( `Temporarily renaming excluded packages' json files.` ) ;
69
+ for ( const excludedPackage of EXCLUDED_PACKAGES ) {
70
+ if ( fs . existsSync ( `${ projectRoot } /temp/${ excludedPackage } .api.json` ) ) {
71
+ fs . renameSync (
72
+ `${ projectRoot } /temp/${ excludedPackage } .api.json` ,
73
+ `${ projectRoot } /temp/${ excludedPackage } .skip`
74
+ ) ;
75
+ }
76
+ }
77
+ await spawn (
78
+ 'yarn' ,
79
+ [
80
+ 'api-documenter-devsite' ,
81
+ 'toc' ,
82
+ '--input' ,
83
+ 'temp' ,
84
+ '-p' ,
85
+ 'docs/reference/js/v9' ,
86
+ '-j'
87
+ ] ,
88
+ { stdio : 'inherit' }
89
+ ) ;
90
+ console . log ( `Restoring excluded packages' json files.` ) ;
91
+ for ( const excludedPackage of EXCLUDED_PACKAGES ) {
92
+ if ( fs . existsSync ( `${ projectRoot } /temp/${ excludedPackage } .skip` ) ) {
93
+ fs . renameSync (
94
+ `${ projectRoot } /temp/${ excludedPackage } .skip` ,
95
+ `${ projectRoot } /temp/${ excludedPackage } .api.json`
96
+ ) ;
97
+ }
98
+ }
99
+ }
100
+
51
101
// create *.api.json files
52
- async function generateDocs ( forDevsite : boolean = false ) {
102
+ async function generateDocs ( forDevsite : boolean = false , skipBuild : boolean = false ) {
53
103
const outputFolder = forDevsite ? 'docs-devsite' : 'docs' ;
54
104
const command = forDevsite ? 'api-documenter-devsite' : 'api-documenter' ;
55
105
@@ -67,13 +117,15 @@ async function generateDocs(forDevsite: boolean = false) {
67
117
authApiConfigModified
68
118
) ;
69
119
70
- await spawn ( 'yarn' , [ 'build' ] , {
71
- stdio : 'inherit'
72
- } ) ;
120
+ if ( ! skipBuild ) {
121
+ await spawn ( 'yarn' , [ 'build' ] , {
122
+ stdio : 'inherit'
123
+ } ) ;
73
124
74
- await spawn ( 'yarn' , [ 'api-report' ] , {
75
- stdio : 'inherit'
76
- } ) ;
125
+ await spawn ( 'yarn' , [ 'api-report' ] , {
126
+ stdio : 'inherit'
127
+ } ) ;
128
+ }
77
129
78
130
// Restore original auth api-extractor.json contents.
79
131
fs . writeFileSync (
@@ -136,7 +188,24 @@ async function generateDocs(forDevsite: boolean = false) {
136
188
}
137
189
}
138
190
139
- moveRulesUnitTestingDocs ( outputFolder , command ) ;
191
+ await moveRulesUnitTestingDocs ( outputFolder , command ) ;
192
+ await removeExcludedDocs ( outputFolder ) ;
193
+ }
194
+
195
+ async function removeExcludedDocs ( mainDocsFolder : string ) {
196
+ console . log ( 'Removing excluded docs from' , EXCLUDED_PACKAGES . join ( ', ' ) ) ;
197
+ for ( const excludedPackage of EXCLUDED_PACKAGES ) {
198
+ const excludedMdFiles = await new Promise < string [ ] > ( resolve =>
199
+ glob ( `${ mainDocsFolder } /${ excludedPackage } .*` , ( err , paths ) => {
200
+ if ( err ) throw err ;
201
+ resolve ( paths ) ;
202
+ } )
203
+ ) ;
204
+ console . log ( 'glob pattern' , `${ mainDocsFolder } /${ excludedPackage } .*` ) ;
205
+ for ( const excludedMdFile of excludedMdFiles ) {
206
+ fs . unlinkSync ( excludedMdFile ) ;
207
+ }
208
+ }
140
209
}
141
210
142
211
// Create a docs-rut folder and move rules-unit-testing docs into it.
@@ -146,6 +215,8 @@ async function moveRulesUnitTestingDocs(
146
215
) {
147
216
const rulesOutputFolder = `${ projectRoot } /docs-rut` ;
148
217
218
+ console . log ( 'Moving RUT docs to their own folder:' , rulesOutputFolder ) ;
219
+
149
220
if ( ! fs . existsSync ( rulesOutputFolder ) ) {
150
221
fs . mkdirSync ( rulesOutputFolder ) ;
151
222
}
@@ -176,6 +247,5 @@ async function moveRulesUnitTestingDocs(
176
247
`${ jsReferencePath } /firestore`
177
248
) ;
178
249
fs . writeFileSync ( destinationPath , alteredPathText ) ;
179
- fs . unlinkSync ( sourcePath ) ;
180
250
}
181
251
}
0 commit comments