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..54a57a7f5 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) } }