diff --git a/docs/index.md b/docs/index.md index c23bab603d4a3..9fa294eabc3d0 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,7 +1,5 @@ --- - sidebar_position: 1 - --- # Puppeteer diff --git a/utils/generate_docs.ts b/utils/generate_docs.ts index e932a413943b4..ec641d410c997 100644 --- a/utils/generate_docs.ts +++ b/utils/generate_docs.ts @@ -15,12 +15,11 @@ */ import {readFileSync, writeFileSync} from 'fs'; -import {join} from 'path'; -import {chdir} from 'process'; +import {readFile, writeFile} from 'fs/promises'; +import rimraf from 'rimraf'; import semver from 'semver'; -import {versionsPerRelease} from '../versions.js'; -import versionsArchived from '../website/versionsArchived.json'; import {generateDocs} from './internal/custom_markdown_action'; +import {job} from './internal/job'; function getOffsetAndLimit( sectionName: string, @@ -47,56 +46,66 @@ function spliceIntoSection( return lines.join('\n'); } -// Change to root directory -chdir(join(__dirname, '..')); +(async () => { + job('', async ({inputs, outputs}) => { + const content = await readFile(inputs[0]!, 'utf-8'); + const sectionContent = ` +--- +sidebar_position: 1 +--- +`; + await writeFile(outputs[0]!, sectionContent + content); + }) + .inputs(['README.md']) + .outputs(['docs/index.md']) + .build(); -// README -{ - const content = readFileSync('README.md', 'utf-8'); - const sectionContent = ` - --- - sidebar_position: 1 - --- + // Chrome Versions + job('', async ({inputs, outputs}) => { + let content = readFileSync(outputs[0]!, {encoding: 'utf8'}); + const {versionsPerRelease} = await import(inputs[0]!); + const versionsArchived = await import(inputs[1]!); - `; - writeFileSync('docs/index.md', sectionContent + content); -} - -// Chrome Versions -{ - const filename = 'docs/chromium-support.md'; - let content = readFileSync(filename, {encoding: 'utf8'}); - - // Generate versions - const buffer: string[] = []; - for (const [chromiumVersion, puppeteerVersion] of versionsPerRelease) { - if (puppeteerVersion === 'NEXT') { - continue; + // Generate versions + const buffer: string[] = []; + for (const [chromiumVersion, puppeteerVersion] of versionsPerRelease) { + if (puppeteerVersion === 'NEXT') { + continue; + } + if (versionsArchived.includes(puppeteerVersion.substring(1))) { + buffer.push( + ` * Chromium ${chromiumVersion} - [Puppeteer ${puppeteerVersion}](https://github.com/puppeteer/puppeteer/blob/${puppeteerVersion}/docs/api/index.md)` + ); + } else if (semver.lt(puppeteerVersion, '15.0.0')) { + buffer.push( + ` * Chromium ${chromiumVersion} - [Puppeteer ${puppeteerVersion}](https://github.com/puppeteer/puppeteer/blob/${puppeteerVersion}/docs/api.md)` + ); + } else if (semver.gte(puppeteerVersion, '15.3.0')) { + buffer.push( + ` * Chromium ${chromiumVersion} - [Puppeteer ${puppeteerVersion}](https://pptr.dev/${puppeteerVersion.slice( + 1 + )})` + ); + } else { + buffer.push( + ` * Chromium ${chromiumVersion} - Puppeteer ${puppeteerVersion}` + ); + } } - if (versionsArchived.includes(puppeteerVersion.substring(1))) { - buffer.push( - ` * Chromium ${chromiumVersion} - [Puppeteer ${puppeteerVersion}](https://github.com/puppeteer/puppeteer/blob/${puppeteerVersion}/docs/api/index.md)` - ); - } else if (semver.lt(puppeteerVersion, '15.0.0')) { - buffer.push( - ` * Chromium ${chromiumVersion} - [Puppeteer ${puppeteerVersion}](https://github.com/puppeteer/puppeteer/blob/${puppeteerVersion}/docs/api.md)` - ); - } else if (semver.gte(puppeteerVersion, '15.3.0')) { - buffer.push( - ` * Chromium ${chromiumVersion} - [Puppeteer ${puppeteerVersion}](https://pptr.dev/${puppeteerVersion.slice( - 1 - )})` - ); - } else { - buffer.push( - ` * Chromium ${chromiumVersion} - Puppeteer ${puppeteerVersion}` - ); - } - } - content = spliceIntoSection('version', content, buffer.join('\n')); + content = spliceIntoSection('version', content, buffer.join('\n')); - writeFileSync(filename, content); -} + writeFileSync(outputs[0]!, content); + }) + .inputs(['versions.js', 'website/versionsArchived.json']) + .outputs(['docs/chromium-support.md']) + .build(); -// Generate documentation -generateDocs('docs/puppeteer.api.json', 'docs/api'); + // Generate documentation + job('', async ({inputs, outputs}) => { + rimraf.sync(outputs[0]!); + generateDocs(inputs[0]!, outputs[0]!); + }) + .inputs(['docs/puppeteer.api.json']) + .outputs(['docs/api']) + .build(); +})();