From 46efe7a116f54048c92d12d6f58a81acd10cd559 Mon Sep 17 00:00:00 2001 From: Chris Wendt Date: Wed, 20 Mar 2019 15:07:32 -0700 Subject: [PATCH 1/2] Avoid templating TypeScript, enables callbacks --- generator/src/main.ts | 23 +++++++++-------------- languages.ts | 2 +- template/src/extension.ts | 17 ++++++++++++++--- template/src/languages.ts | 1 + 4 files changed, 25 insertions(+), 18 deletions(-) create mode 120000 template/src/languages.ts diff --git a/generator/src/main.ts b/generator/src/main.ts index 6af38d10b..43c6e1e4e 100644 --- a/generator/src/main.ts +++ b/generator/src/main.ts @@ -1,9 +1,7 @@ import * as shell from 'shelljs' import * as _ from 'lodash' import * as yargs from 'yargs' -import * as tosource from 'tosource' -import * as fs from 'fs' -import * as spec from '../../languages' +import { languageSpecs, LanguageSpec } from '../../languages' function sourcegraphID(name: string): string { const toID = { @@ -18,7 +16,7 @@ const doNotGenerate = ['python', 'typescript', 'go'] function main(): void { const args = yargs .option('languages', { - describe: spec.languages + describe: languageSpecs .map(langSpec => langSpec.handlerArgs.languageID) .join(','), type: 'string', @@ -27,7 +25,7 @@ function main(): void { .strict().argv const languageFilter = !args.languages ? () => true - : (langSpec: spec.LanguageSpec) => + : (langSpec: LanguageSpec) => args.languages .split(',') .includes(langSpec.handlerArgs.languageID) @@ -52,7 +50,7 @@ function main(): void { shell.cp('-R', 'template/node_modules', 'temp/node_modules') shell.cd('temp') - for (const langSpec of spec.languages.filter(languageFilter)) { + for (const langSpec of languageSpecs.filter(languageFilter)) { const languageID = langSpec.handlerArgs.languageID const stylized = langSpec.stylized if (doNotGenerate.includes(languageID)) { @@ -143,14 +141,11 @@ function main(): void { 'src/extension.ts' ) - fs.writeFileSync( - 'src/extension.ts', - `import { activateBasicCodeIntel } from '@sourcegraph/basic-code-intel' - -export const activate = activateBasicCodeIntel(${tosource.default( - langSpec.handlerArgs - )}) -` + shell.sed( + '-i', + /const languageID = 'all'/, + `const languageID = '${languageID}'`, + 'src/extension.ts' ) shell.exec( diff --git a/languages.ts b/languages.ts index 5d4f1a604..9a8f43ee4 100644 --- a/languages.ts +++ b/languages.ts @@ -43,7 +43,7 @@ const lispStyle: CommentStyle = { // The set of languages come from https://madnight.github.io/githut/#/pull_requests/2018/4 // The language names come from https://code.visualstudio.com/docs/languages/identifiers#_known-language-identifiers // The extensions come from shared/src/languages.ts -export const languages: LanguageSpec[] = [ +export const languageSpecs: LanguageSpec[] = [ { handlerArgs: { languageID: 'typescript', diff --git a/template/src/extension.ts b/template/src/extension.ts index e306573a4..a6e5010e5 100644 --- a/template/src/extension.ts +++ b/template/src/extension.ts @@ -1,9 +1,20 @@ import { activateBasicCodeIntel } from '../../package/lib' import * as sourcegraph from 'sourcegraph' -import * as spec from '../../languages' +import { languageSpecs } from './languages' export function activate(ctx: sourcegraph.ExtensionContext): void { - for (const language of spec.languages) { - activateBasicCodeIntel(language.handlerArgs)(ctx) + // This is set to an individual language ID by the generator script. + const languageID = 'all' + + if (languageID === 'all') { + for (const languageSpec of languageSpecs) { + activateBasicCodeIntel(languageSpec.handlerArgs)(ctx) + } + } else { + // TODO consider Record + activateBasicCodeIntel( + languageSpecs.find(l => l.handlerArgs.languageID === languageID)! + .handlerArgs + )(ctx) } } diff --git a/template/src/languages.ts b/template/src/languages.ts new file mode 120000 index 000000000..7b4048cda --- /dev/null +++ b/template/src/languages.ts @@ -0,0 +1 @@ +../../languages.ts \ No newline at end of file From 0e8912f5e1bea57f6b2a3375b841f4acadea9b29 Mon Sep 17 00:00:00 2001 From: Chris Wendt Date: Wed, 20 Mar 2019 15:22:54 -0700 Subject: [PATCH 2/2] Remove symlink --- template/src/extension.ts | 2 +- template/src/languages.ts | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) delete mode 120000 template/src/languages.ts diff --git a/template/src/extension.ts b/template/src/extension.ts index a6e5010e5..54a57a7f5 100644 --- a/template/src/extension.ts +++ b/template/src/extension.ts @@ -1,6 +1,6 @@ import { activateBasicCodeIntel } from '../../package/lib' import * as sourcegraph from 'sourcegraph' -import { languageSpecs } from './languages' +import { languageSpecs } from '../../languages' export function activate(ctx: sourcegraph.ExtensionContext): void { // This is set to an individual language ID by the generator script. diff --git a/template/src/languages.ts b/template/src/languages.ts deleted file mode 120000 index 7b4048cda..000000000 --- a/template/src/languages.ts +++ /dev/null @@ -1 +0,0 @@ -../../languages.ts \ No newline at end of file