diff --git a/generate.mjs b/generate.mjs new file mode 100644 index 0000000..3953613 --- /dev/null +++ b/generate.mjs @@ -0,0 +1,55 @@ +import fs from "node:fs"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const packageJsonPath = path.join(__dirname, "package.json"); +const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf8")); + +const glimmerTS = ["glimmer-ts", "typescript.glimmer"]; +const glimmerJS = ["glimmer-js", "javascript.glimmer"]; +const glimmer = [...glimmerJS, ...glimmerTS]; +const javascript = ["javascript"]; +const typescript = ["typescript"]; +const allLanguages = [...glimmer, ...javascript, ...typescript]; + +function newSnippet(language, path) { + return { + language, + path, + }; +} +const allSnippet = allLanguages.map((language) => { + return newSnippet(language, "./snippets/all.json"); +}); + +const allTemplateTagSnippet = glimmer.map((language) => { + return newSnippet(language, "./snippets/all-template-tag.json"); +}); + +const glimmerJSSnippet = glimmerJS.map((language) => { + return newSnippet(language, "./snippets/javascript.glimmer.json"); +}); + +const glimmerTSSnippet = glimmerTS.map((language) => { + return newSnippet(language, "./snippets/typescript.glimmer.json"); +}); + +const javascriptSnippet = javascript.map((language) => { + return newSnippet(language, "./snippets/javascript.json"); +}); + +const typescriptSnippet = typescript.map((language) => { + return newSnippet(language, "./snippets/typescript.json"); +}); + +packageJson.contributes.snippets = [ + ...allSnippet, + ...allTemplateTagSnippet, + ...glimmerJSSnippet, + ...glimmerTSSnippet, + ...javascriptSnippet, + ...typescriptSnippet, +]; + +fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2), "utf8"); diff --git a/package.json b/package.json index 3b469b8..0433e60 100644 --- a/package.json +++ b/package.json @@ -36,37 +36,59 @@ "contributes": { "snippets": [ { - "language": [ - "Glimmer JS", - "javascript.glimmer", - "Glimmer TS", - "typescript.glimmer", - "javascript", - "typescript" - ], + "language": "glimmer-js", "path": "./snippets/all.json" }, { - "language": [ - "Glimmer JS", - "javascript.glimmer", - "Glimmer TS", - "typescript.glimmer" - ], + "language": "javascript.glimmer", + "path": "./snippets/all.json" + }, + { + "language": "glimmer-ts", + "path": "./snippets/all.json" + }, + { + "language": "typescript.glimmer", + "path": "./snippets/all.json" + }, + { + "language": "javascript", + "path": "./snippets/all.json" + }, + { + "language": "typescript", + "path": "./snippets/all.json" + }, + { + "language": "glimmer-js", + "path": "./snippets/all-template-tag.json" + }, + { + "language": "javascript.glimmer", + "path": "./snippets/all-template-tag.json" + }, + { + "language": "glimmer-ts", + "path": "./snippets/all-template-tag.json" + }, + { + "language": "typescript.glimmer", "path": "./snippets/all-template-tag.json" }, { - "language": [ - "Glimmer JS", - "javascript.glimmer" - ], + "language": "glimmer-js", + "path": "./snippets/javascript.glimmer.json" + }, + { + "language": "javascript.glimmer", "path": "./snippets/javascript.glimmer.json" }, { - "language": [ - "Glimmer TS", - "typescript.glimmer" - ], + "language": "glimmer-ts", + "path": "./snippets/typescript.glimmer.json" + }, + { + "language": "typescript.glimmer", "path": "./snippets/typescript.glimmer.json" }, { @@ -85,7 +107,8 @@ "vs:package": "vsce package", "vs:publish": "vsce publish", "vs:publish:ci": "vsce publish --pat $VSCODE_TOKEN", - "ov:publish:ci": "ovsx publish --pat $OPENVSX_TOKEN" + "ov:publish:ci": "ovsx publish --pat $OPENVSX_TOKEN", + "generate": "node generate.mjs" }, "packageManager": "pnpm@10.7.1", "devDependencies": {