Files
vscode-extension-samples/.scripts/update-readme.js

58 lines
2.0 KiB
JavaScript
Raw Permalink Normal View History

2018-10-16 17:08:42 -07:00
const fs = require('fs')
2018-10-29 07:45:32 -07:00
const { samples, lspSamples } = require('./samples')
2018-10-16 17:08:42 -07:00
2018-10-23 22:39:45 -07:00
const TABLE_HEAD = `<!-- SAMPLES_BEGIN -->
2018-10-16 17:08:42 -07:00
| Sample | Guide on VS Code Website | API & Contribution |
2018-10-23 22:39:45 -07:00
| ------ | ----- | --- |`
const TABLE_END = `<!-- SAMPLES_END -->`
2018-10-29 07:45:32 -07:00
const LSP_TABLE_HEAD = `<!-- LSP_SAMPLES_BEGIN -->
| Sample | Guide on VS Code Website | API & Contribution |
| ------ | ----- | --- |`
const LSP_TABLE_END = `<!-- LSP_SAMPLES_END -->`
2018-10-16 17:08:42 -07:00
2018-10-23 22:36:43 -07:00
const getTableRow = sample => {
2021-02-22 09:58:22 -08:00
const descriptionCell = `[${sample.description}](https://github.com/Microsoft/vscode-extension-samples/tree/main/${sample.path})`
2018-10-23 22:36:43 -07:00
let guideCell
if (!sample.guide) {
guideCell = 'N/A'
} else if (sample.guide && sample.guide.startsWith('http')) {
guideCell = sample.guide
} else {
2018-12-24 09:51:18 -08:00
guideCell = `[${sample.guide}](https://code.visualstudio.com${sample.guide})`
2018-10-23 22:36:43 -07:00
}
const apis = sample.apis.map(api => {
return `[${api}](https://code.visualstudio.com/api/references/vscode-api#${api})`
2018-10-23 22:36:43 -07:00
})
const contributions = sample.contributions.map(c => {
return `[contributes.${c}](https://code.visualstudio.com/api/references/contribution-points#contributes.${c})`
2018-10-23 22:36:43 -07:00
})
const apiAndContributionCell = apis.concat(contributions).join('<br>')
return `| ${descriptionCell} | ${guideCell} | ${apiAndContributionCell} |`
2018-10-16 17:08:42 -07:00
}
2018-10-23 22:36:43 -07:00
const getSamplesTable = samples => {
const samplesMd = samples.map(s => getTableRow(s)).join('\n')
2018-10-16 17:08:42 -07:00
2018-10-23 22:39:45 -07:00
return `${TABLE_HEAD.trim()}
2018-10-16 17:08:42 -07:00
${samplesMd}
2018-10-23 22:39:45 -07:00
${TABLE_END.trim()}`
2018-10-16 17:08:42 -07:00
}
2018-10-29 07:45:32 -07:00
const getLSPSamplesTable = samples => {
const samplesMd = samples.map(s => getTableRow(s)).join('\n')
return `${LSP_TABLE_HEAD.trim()}
${samplesMd}
${LSP_TABLE_END.trim()}`
}
2018-10-16 17:08:42 -07:00
const readme = fs.readFileSync('README.md', 'utf-8')
2018-10-29 07:45:32 -07:00
const newReadme = readme
.replace(/<!-- SAMPLES_BEGIN -->(.|\n)*<!-- SAMPLES_END -->/gm, getSamplesTable(samples.filter(x => !x.excludeFromReadme)))
2018-10-29 07:45:32 -07:00
.replace(/<!-- LSP_SAMPLES_BEGIN -->(.|\n)*<!-- LSP_SAMPLES_END -->/gm, getLSPSamplesTable(lspSamples))
2018-10-16 17:08:42 -07:00
2018-10-23 22:36:43 -07:00
fs.writeFileSync('README.md', newReadme)