Skip to content

Commit 31236a7

Browse files
committed
Fix docgen to skip unwanted packages
1 parent 57b00d4 commit 31236a7

File tree

2 files changed

+85
-60
lines changed

2 files changed

+85
-60
lines changed

scripts/docgen/docgen.ts

Lines changed: 83 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -37,19 +37,69 @@ https://github.com/firebase/firebase-js-sdk
3737
`;
3838

3939
const tmpDir = `${projectRoot}/temp`;
40+
const EXCLUDED_PACKAGES = ['app-compat', 'util', 'rules-unit-testing'];
4041

4142
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)
4450
)
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)
4758
)
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+
})
4864
.demandCommand()
4965
.help().argv;
5066

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+
51101
// create *.api.json files
52-
async function generateDocs(forDevsite: boolean = false) {
102+
async function generateDocs(forDevsite: boolean = false, skipBuild: boolean = false) {
53103
const outputFolder = forDevsite ? 'docs-devsite' : 'docs';
54104
const command = forDevsite ? 'api-documenter-devsite' : 'api-documenter';
55105

@@ -67,13 +117,15 @@ async function generateDocs(forDevsite: boolean = false) {
67117
authApiConfigModified
68118
);
69119

70-
await spawn('yarn', ['build'], {
71-
stdio: 'inherit'
72-
});
120+
if (!skipBuild) {
121+
await spawn('yarn', ['build'], {
122+
stdio: 'inherit'
123+
});
73124

74-
await spawn('yarn', ['api-report'], {
75-
stdio: 'inherit'
76-
});
125+
await spawn('yarn', ['api-report'], {
126+
stdio: 'inherit'
127+
});
128+
}
77129

78130
// Restore original auth api-extractor.json contents.
79131
fs.writeFileSync(
@@ -136,7 +188,24 @@ async function generateDocs(forDevsite: boolean = false) {
136188
}
137189
}
138190

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+
}
140209
}
141210

142211
// Create a docs-rut folder and move rules-unit-testing docs into it.
@@ -146,6 +215,8 @@ async function moveRulesUnitTestingDocs(
146215
) {
147216
const rulesOutputFolder = `${projectRoot}/docs-rut`;
148217

218+
console.log('Moving RUT docs to their own folder:', rulesOutputFolder);
219+
149220
if (!fs.existsSync(rulesOutputFolder)) {
150221
fs.mkdirSync(rulesOutputFolder);
151222
}
@@ -176,6 +247,5 @@ async function moveRulesUnitTestingDocs(
176247
`${jsReferencePath}/firestore`
177248
);
178249
fs.writeFileSync(destinationPath, alteredPathText);
179-
fs.unlinkSync(sourcePath);
180250
}
181251
}

toc/toc.yaml

Lines changed: 2 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ toc:
1111
path: docs/reference/js/v9/analytics.analyticscalloptions.md
1212
- title: AnalyticsSettings
1313
path: docs/reference/js/v9/analytics.analyticssettings.md
14+
- title: ConsentSettings
15+
path: docs/reference/js/v9/analytics.consentsettings.md
1416
- title: ControlParams
1517
path: docs/reference/js/v9/analytics.controlparams.md
1618
- title: CustomParams
@@ -32,8 +34,6 @@ toc:
3234
path: docs/reference/js/v9/app.firebaseapp.md
3335
- title: FirebaseAppSettings
3436
path: docs/reference/js/v9/app.firebaseappsettings.md
35-
- title: FirebaseError
36-
path: docs/reference/js/v9/app.firebaseerror.md
3737
- title: FirebaseOptions
3838
path: docs/reference/js/v9/app.firebaseoptions.md
3939
- title: app-check
@@ -55,17 +55,6 @@ toc:
5555
path: docs/reference/js/v9/app-check.recaptchaenterpriseprovider.md
5656
- title: ReCaptchaV3Provider
5757
path: docs/reference/js/v9/app-check.recaptchav3provider.md
58-
- title: app-compat
59-
path: docs/reference/js/v9/app-compat.md
60-
section:
61-
- title: _FirebaseNamespace
62-
path: docs/reference/js/v9/app-compat._firebasenamespace.md
63-
- title: _FirebaseService
64-
path: docs/reference/js/v9/app-compat._firebaseservice.md
65-
- title: FirebaseApp
66-
path: docs/reference/js/v9/app-compat.firebaseapp.md
67-
- title: FirebaseNamespace
68-
path: docs/reference/js/v9/app-compat.firebasenamespace.md
6958
- title: auth
7059
path: docs/reference/js/v9/auth.md
7160
section:
@@ -354,17 +343,6 @@ toc:
354343
path: docs/reference/js/v9/remote-config.remoteconfigsettings.md
355344
- title: Value
356345
path: docs/reference/js/v9/remote-config.value.md
357-
- title: rules-unit-testing
358-
path: docs/reference/js/v9/rules-unit-testing.md
359-
section:
360-
- title: HostAndPort
361-
path: docs/reference/js/v9/rules-unit-testing.hostandport.md
362-
- title: RulesTestContext
363-
path: docs/reference/js/v9/rules-unit-testing.rulestestcontext.md
364-
- title: RulesTestEnvironment
365-
path: docs/reference/js/v9/rules-unit-testing.rulestestenvironment.md
366-
- title: TestEnvironmentConfig
367-
path: docs/reference/js/v9/rules-unit-testing.testenvironmentconfig.md
368346
- title: storage
369347
path: docs/reference/js/v9/storage.md
370348
section:
@@ -392,26 +370,3 @@ toc:
392370
path: docs/reference/js/v9/storage.uploadtask.md
393371
- title: UploadTaskSnapshot
394372
path: docs/reference/js/v9/storage.uploadtasksnapshot.md
395-
- title: util
396-
path: docs/reference/js/v9/util.md
397-
section:
398-
- title: Compat
399-
path: docs/reference/js/v9/util.compat.md
400-
- title: Deferred
401-
path: docs/reference/js/v9/util.deferred.md
402-
- title: ErrorData
403-
path: docs/reference/js/v9/util.errordata.md
404-
- title: ErrorFactory
405-
path: docs/reference/js/v9/util.errorfactory.md
406-
- title: FirebaseError
407-
path: docs/reference/js/v9/util.firebaseerror.md
408-
- title: Observable
409-
path: docs/reference/js/v9/util.observable.md
410-
- title: Observer
411-
path: docs/reference/js/v9/util.observer.md
412-
- title: Sha1
413-
path: docs/reference/js/v9/util.sha1.md
414-
- title: StringLike
415-
path: docs/reference/js/v9/util.stringlike.md
416-
- title: Subscribe
417-
path: docs/reference/js/v9/util.subscribe.md

0 commit comments

Comments
 (0)