mirror of
https://github.com/microsoft/vscode-extension-samples.git
synced 2026-04-27 16:55:44 +08:00
Auto generating samples
This commit is contained in:
56
.scripts/samples.js
Normal file
56
.scripts/samples.js
Normal file
@ -0,0 +1,56 @@
|
||||
//@ts-check
|
||||
|
||||
/**
|
||||
* @typedef {Object} Sample
|
||||
* @property {string} description - A readable name for the sample
|
||||
* @property {string} path - Path to the sample's root
|
||||
* @property {string | null} guide - Link to the guide on https://code.visualstudio.com
|
||||
* @property {string[]} apis - Listing of VS Code API that is being illustrated. For example, "TextDocumentContentProvider"
|
||||
* @property {string[]} contributions - Listing of Contribution Points that are being used. For example,
|
||||
*/
|
||||
|
||||
/** @type {Sample[]} */
|
||||
const samples = [
|
||||
{
|
||||
description: 'Multi Root Sample',
|
||||
path: 'basic-multi-root-sample',
|
||||
guide: null,
|
||||
apis: ['workspace.getWorkspaceFolder', 'workspace.onDidChangeWorkspaceFolders'],
|
||||
contributions: []
|
||||
},
|
||||
{ description: 'Webview Sample', path: 'webview-sample', guide: '/api/extension-guides/webview', apis: [], contributions: [] },
|
||||
{
|
||||
description: 'Status Bar',
|
||||
path: 'statusbar-sample',
|
||||
guide: '/api/extension-guides/status-bar',
|
||||
apis: ['StatusBarItem'],
|
||||
contributions: []
|
||||
},
|
||||
{ description: 'File System Provider', path: 'fsprovider-sample', guide: null, apis: ['workspace.registerFileSystemProvider'], contributions: [] },
|
||||
// TODO: Fix your sample and move it to above
|
||||
{ description: 'completions-sample', path: 'completions-sample', guide: null, apis: [], contributions: [] },
|
||||
{ description: 'configuration-sample', path: 'configuration-sample', guide: null, apis: [], contributions: [] },
|
||||
{ description: 'contentprovider-sample', path: 'contentprovider-sample', guide: null, apis: [], contributions: [] },
|
||||
{ description: 'decorator-sample', path: 'decorator-sample', guide: null, apis: [], contributions: [] },
|
||||
{ description: 'extension-deps-sample', path: 'extension-deps-sample', guide: null, apis: [], contributions: [] },
|
||||
{ description: 'hellocode-minimal-sample', path: 'hellocode-minimal-sample', guide: null, apis: [], contributions: [] },
|
||||
{ description: 'hellocode-sample', path: 'hellocode-sample', guide: null, apis: [], contributions: [] },
|
||||
{ description: 'i18n-sample', path: 'i18n-sample', guide: null, apis: [], contributions: [] },
|
||||
{ description: 'legacy-samples', path: 'legacy-samples', guide: null, apis: [], contributions: [] },
|
||||
{ description: 'lsp-log-streaming-sample', path: 'lsp-log-streaming-sample', guide: null, apis: [], contributions: [] },
|
||||
{ description: 'lsp-multi-server-sample', path: 'lsp-multi-server-sample', guide: null, apis: [], contributions: [] },
|
||||
{ description: 'lsp-sample', path: 'lsp-sample', guide: null, apis: [], contributions: [] },
|
||||
{ description: 'multi-diagnostics-sample', path: 'multi-diagnostics-sample', guide: null, apis: [], contributions: [] },
|
||||
{ description: 'nodefs-provider-sample', path: 'nodefs-provider-sample', guide: null, apis: [], contributions: [] },
|
||||
{ description: 'progress-sample', path: 'progress-sample', guide: null, apis: [], contributions: [] },
|
||||
{ description: 'quickinput-sample', path: 'quickinput-sample', guide: null, apis: [], contributions: [] },
|
||||
{ description: 'smart-template-strings-sample', path: 'smart-template-strings-sample', guide: null, apis: [], contributions: [] },
|
||||
{ description: 'task-provider-sample', path: 'task-provider-sample', guide: null, apis: [], contributions: [] },
|
||||
{ description: 'terminal-sample', path: 'terminal-sample', guide: null, apis: [], contributions: [] },
|
||||
{ description: 'theme-sample', path: 'theme-sample', guide: null, apis: [], contributions: [] },
|
||||
{ description: 'tree-view-sample', path: 'tree-view-sample', guide: null, apis: [], contributions: [] },
|
||||
{ description: 'vim-sample', path: 'vim-sample', guide: null, apis: [], contributions: [] },
|
||||
{ description: 'webpack-sample', path: 'webpack-sample', guide: null, apis: [], contributions: [] },
|
||||
];
|
||||
|
||||
module.exports = samples;
|
||||
46
.scripts/update-readme.js
Normal file
46
.scripts/update-readme.js
Normal file
@ -0,0 +1,46 @@
|
||||
const fs = require('fs')
|
||||
|
||||
const SAMPLES = require('./samples')
|
||||
|
||||
const TABLE_HEAD = `
|
||||
<!-- SAMPLES_BEGIN -->
|
||||
| Sample | Guide on VS Code Website | API & Contribution |
|
||||
| ------ | ----- | --- |
|
||||
`
|
||||
|
||||
const TABLE_END = `
|
||||
<!-- SAMPLES_END -->
|
||||
`
|
||||
|
||||
const getTableRow = (sample) => {
|
||||
const descriptionCell = `[${sample.description}](${sample.path})`
|
||||
const guideCell = sample.guide ? `[${sample.guide}](https://vscode-ext-docs.azurewebsites.net${sample.guide})` : 'N/A'
|
||||
|
||||
const apis = sample.apis.map(api => {
|
||||
return `[${api}](https://vscode-ext-docs.azurewebsites.net/api/references/vscode-api#${api})`
|
||||
})
|
||||
const contributions = sample.contributions.map(c => {
|
||||
return `[${c}](https://vscode-ext-docs.azurewebsites.net/api/references/contribution-points#${c})`
|
||||
})
|
||||
const apiAndContributionCell = apis.concat(contributions).join('<br>')
|
||||
|
||||
return `| ${descriptionCell} | ${guideCell} | ${apiAndContributionCell} |`
|
||||
}
|
||||
|
||||
const getSamplesTable = (samples) => {
|
||||
const samplesMd = samples
|
||||
.map(s => getTableRow(s))
|
||||
.join('\n')
|
||||
|
||||
return `
|
||||
${TABLE_HEAD.trim()}
|
||||
${samplesMd}
|
||||
${TABLE_END.trim()}
|
||||
`
|
||||
|
||||
}
|
||||
|
||||
const readme = fs.readFileSync('README.md', 'utf-8')
|
||||
const newReadme = readme.replace(/<!-- SAMPLES_BEGIN -->(.|\n)*<!-- SAMPLES_END -->/gm, getSamplesTable(SAMPLES))
|
||||
|
||||
fs.writeFileSync('README.md', newReadme)
|
||||
39
README.md
39
README.md
@ -13,14 +13,41 @@ You can expect from each sample:
|
||||
|
||||
## Samples
|
||||
|
||||
|
||||
|
||||
<!-- SAMPLES_BEGIN -->
|
||||
| Sample | Guide on VS Code Website | API & Contribution |
|
||||
| ------ | ----- | --- |
|
||||
| [Virtual Documents](/contentprovider-sample/README.md) | [/api/extension-guides/virtual-documents](https://vscode-ext-docs.azurewebsites.net/api/extension-guides/virtual-documents) | [`TextDocumentContentProvider`](https://code.visualstudio.com/docs/extensionAPI/vscode-api#TextDocumentContentProvider)|
|
||||
| [Editor Decoration](/decorator-sample/README.md) | [/api/extension-guides/editor-decoration](https://vscode-ext-docs.azurewebsites.net/api/extension-guides/editor-decoration) | [`window.createTextEditorDecorationType`](https://code.visualstudio.com/docs/extensionAPI/vscode-api#window.createTextEditorDecorationType) |
|
||||
| [Status Bar](/statusbar-sample/README.md) | [/api/extension-guides/status-bar](https://vscode-ext-docs.azurewebsites.net/api/extension-guides/status-bar) | [`StatusBarItem`](https://code.visualstudio.com/docs/extensionAPI/vscode-api#StatusBarItem) |
|
||||
| [Color Theme](/theme-sample/README.md) | [/api/extension-guides/color-theme](https://vscode-ext-docs.azurewebsites.net/api/extension-guides/color-theme) | [`contributes.themes`](https://code.visualstudio.com/docs/extensionAPI/extension-points#_contributesthemes) |
|
||||
| [File System Provider](/fsprovider-sample/README.md) | N/A | [`vscode.workspace.registerFileSystemProvider`](https://code.visualstudio.com/docs/extensionAPI/vscode-api#workspace.registerFileSystemProvider) |
|
||||
| Extension Dependencies:<br>- [Sample 1](/extension-deps-sample/test-extension-pack-1)<br>- [Sample 2](/extension-deps-sample/test-extension-pack-2)<br>- [Sample 3](/extension-deps-sample/test-extension-pack-3) | N/A | [extensionPack]() |
|
||||
| [Multi Root Sample](basic-multi-root-sample) | N/A | [workspace.getWorkspaceFolder](https://vscode-ext-docs.azurewebsites.net/api/references/vscode-api#workspace.getWorkspaceFolder)<br>[workspace.onDidChangeWorkspaceFolders](https://vscode-ext-docs.azurewebsites.net/api/references/vscode-api#workspace.onDidChangeWorkspaceFolders) |
|
||||
| [Webview Sample](webview-sample) | [/api/extension-guides/webview](https://vscode-ext-docs.azurewebsites.net/api/extension-guides/webview) | |
|
||||
| [Status Bar](statusbar-sample) | [/api/extension-guides/status-bar](https://vscode-ext-docs.azurewebsites.net/api/extension-guides/status-bar) | [StatusBarItem](https://vscode-ext-docs.azurewebsites.net/api/references/vscode-api#StatusBarItem) |
|
||||
| [File System Provider](fsprovider-sample) | N/A | [workspace.registerFileSystemProvider](https://vscode-ext-docs.azurewebsites.net/api/references/vscode-api#workspace.registerFileSystemProvider) |
|
||||
| [completions-sample](completions-sample) | N/A | |
|
||||
| [configuration-sample](configuration-sample) | N/A | |
|
||||
| [contentprovider-sample](contentprovider-sample) | N/A | |
|
||||
| [decorator-sample](decorator-sample) | N/A | |
|
||||
| [extension-deps-sample](extension-deps-sample) | N/A | |
|
||||
| [hellocode-minimal-sample](hellocode-minimal-sample) | N/A | |
|
||||
| [hellocode-sample](hellocode-sample) | N/A | |
|
||||
| [i18n-sample](i18n-sample) | N/A | |
|
||||
| [legacy-samples](legacy-samples) | N/A | |
|
||||
| [lsp-log-streaming-sample](lsp-log-streaming-sample) | N/A | |
|
||||
| [lsp-multi-server-sample](lsp-multi-server-sample) | N/A | |
|
||||
| [lsp-sample](lsp-sample) | N/A | |
|
||||
| [multi-diagnostics-sample](multi-diagnostics-sample) | N/A | |
|
||||
| [nodefs-provider-sample](nodefs-provider-sample) | N/A | |
|
||||
| [progress-sample](progress-sample) | N/A | |
|
||||
| [quickinput-sample](quickinput-sample) | N/A | |
|
||||
| [smart-template-strings-sample](smart-template-strings-sample) | N/A | |
|
||||
| [task-provider-sample](task-provider-sample) | N/A | |
|
||||
| [terminal-sample](terminal-sample) | N/A | |
|
||||
| [theme-sample](theme-sample) | N/A | |
|
||||
| [tree-view-sample](tree-view-sample) | N/A | |
|
||||
| [vim-sample](vim-sample) | N/A | |
|
||||
| [webpack-sample](webpack-sample) | N/A | |
|
||||
<!-- SAMPLES_END -->
|
||||
|
||||
|
||||
|
||||
## :warning: Legacy Samples :warning:
|
||||
|
||||
|
||||
@ -1,5 +1,8 @@
|
||||
{
|
||||
"name": "vsc-extension-samples",
|
||||
"publisher": "Microsoft",
|
||||
"version": "0.0.1"
|
||||
"version": "0.0.1",
|
||||
"scripts": {
|
||||
"update-readme": "node .scripts/update-readme.js"
|
||||
}
|
||||
}
|
||||
|
||||
40
samples.js
40
samples.js
@ -1,40 +0,0 @@
|
||||
//@ts-check
|
||||
|
||||
/**
|
||||
* @typedef {Object} Sample
|
||||
* @property {string} description - A readable name for the sample
|
||||
* @property {string} path - Path to the sample's root
|
||||
* @property {string | null} guide - Link to the guide on https://code.visualstudio.com
|
||||
* @property {string[]} api - Listing of VS Code API that is being illustrated. For example, "TextDocumentContentProvider"
|
||||
*/
|
||||
|
||||
/** @type {Sample[]} */
|
||||
const samples = [
|
||||
{ description: '', path: 'basic-multi-root-sample', guide: '', api: [] },
|
||||
{ description: '', path: 'completions-sample', guide: '', api: [] },
|
||||
{ description: '', path: 'configuration-sample', guide: '', api: [] },
|
||||
{ description: '', path: 'contentprovider-sample', guide: '', api: [] },
|
||||
{ description: '', path: 'decorator-sample', guide: '', api: [] },
|
||||
{ description: '', path: 'extension-deps-sample', guide: '', api: [] },
|
||||
{ description: '', path: 'fsprovider-sample', guide: '', api: [] },
|
||||
{ description: '', path: 'hellocode-minimal-sample', guide: '', api: [] },
|
||||
{ description: '', path: 'hellocode-sample', guide: '', api: [] },
|
||||
{ description: '', path: 'i18n-sample', guide: '', api: [] },
|
||||
{ description: '', path: 'legacy-samples', guide: '', api: [] },
|
||||
{ description: '', path: 'lsp-log-streaming-sample', guide: '', api: [] },
|
||||
{ description: '', path: 'lsp-multi-server-sample', guide: '', api: [] },
|
||||
{ description: '', path: 'lsp-sample', guide: '', api: [] },
|
||||
{ description: '', path: 'multi-diagnostics-sample', guide: '', api: [] },
|
||||
{ description: '', path: 'nodefs-provider-sample', guide: '', api: [] },
|
||||
{ description: '', path: 'progress-sample', guide: '', api: [] },
|
||||
{ description: '', path: 'quickinput-sample', guide: '', api: [] },
|
||||
{ description: '', path: 'smart-template-strings-sample', guide: '', api: [] },
|
||||
{ description: '', path: 'statusbar-sample', guide: '', api: [] },
|
||||
{ description: '', path: 'task-provider-sample', guide: '', api: [] },
|
||||
{ description: '', path: 'terminal-sample', guide: '', api: [] },
|
||||
{ description: '', path: 'theme-sample', guide: '', api: [] },
|
||||
{ description: '', path: 'tree-view-sample', guide: '', api: [] },
|
||||
{ description: '', path: 'vim-sample', guide: '', api: [] },
|
||||
{ description: '', path: 'webpack-sample', guide: '', api: [] },
|
||||
{ description: '', path: 'webview-sample', guide: '', api: [] }
|
||||
];
|
||||
Reference in New Issue
Block a user