Path: blob/main/extensions/copilot/test/simulation/fixtures/multiFileEdit/two-edits/generate-command-ts.js
13405 views
/*---------------------------------------------------------1* Copyright (C) Microsoft Corporation. All rights reserved.2*--------------------------------------------------------*/3import Generator from 'yeoman-generator';4import * as prompts from './prompts.js';56/**7* @typedef {import('./index.js').ExtensionConfig} ExtensionConfig8*/91011const chalk = new Chalk();1213/**14* @type {import('./index.js').ExtensionGenerator}15*/16export default {17id: 'ext-command-ts',18aliases: ['ts', 'command-ts'],19name: 'New Extension (TypeScript)',20insidersName: 'New Extension with Proposed API (TypeScript)',21/**22* @param {Generator} generator23* @param {ExtensionConfig} extensionConfig24*/25prompting: async (generator, extensionConfig) => {26await prompts.askForExtensionDisplayName(generator, extensionConfig);27await prompts.askForExtensionId(generator, extensionConfig);28await prompts.askForExtensionDescription(generator, extensionConfig);2930await prompts.askForGit(generator, extensionConfig);31await prompts.askForBundler(generator, extensionConfig);32await prompts.askForPackageManager(generator, extensionConfig);33},34/**35* @param {Generator} generator36* @param {ExtensionConfig} extensionConfig37*/38writing: (generator, extensionConfig) => {39const bundler = extensionConfig.bundler;40if (bundler && (bundler === 'webpack' || bundler === 'esbuild')) {41const bundlerPath = bundler === 'esbuild' ? 'vscode-esbuild' : 'vscode-webpack';42const bundlerFile = bundler === 'esbuild' ? 'esbuild.js' : 'webpack.config.js';43generator.fs.copy(generator.templatePath(bundlerPath, 'vscode'), generator.destinationPath('.vscode'));44generator.fs.copyTpl(generator.templatePath(bundlerPath, 'package.json'), generator.destinationPath('package.json'), extensionConfig);45generator.fs.copyTpl(generator.templatePath(bundlerPath, 'tsconfig.json'), generator.destinationPath('tsconfig.json'), extensionConfig);46generator.fs.copyTpl(generator.templatePath(bundlerPath, '.vscodeignore'), generator.destinationPath('.vscodeignore'), extensionConfig);47generator.fs.copyTpl(generator.templatePath(bundlerPath, bundlerFile), generator.destinationPath(bundlerFile), extensionConfig);48generator.fs.copyTpl(generator.templatePath(bundlerPath, 'vsc-extension-quickstart.md'), generator.destinationPath('vsc-extension-quickstart.md'), extensionConfig);49} else {50generator.fs.copy(generator.templatePath('vscode'), generator.destinationPath('.vscode'));51generator.fs.copyTpl(generator.templatePath('package.json'), generator.destinationPath('package.json'), extensionConfig);52generator.fs.copyTpl(generator.templatePath('tsconfig.json'), generator.destinationPath('tsconfig.json'), extensionConfig);53generator.fs.copyTpl(generator.templatePath('.vscodeignore'), generator.destinationPath('.vscodeignore'), extensionConfig);54generator.fs.copyTpl(generator.templatePath('vsc-extension-quickstart.md'), generator.destinationPath('vsc-extension-quickstart.md'), extensionConfig);55}5657if (extensionConfig.gitInit) {58generator.fs.copy(generator.templatePath('gitignore'), generator.destinationPath('.gitignore'));59}60generator.fs.copyTpl(generator.templatePath('README.md'), generator.destinationPath('README.md'), extensionConfig);61generator.fs.copyTpl(generator.templatePath('CHANGELOG.md'), generator.destinationPath('CHANGELOG.md'), extensionConfig);62generator.fs.copyTpl(generator.templatePath('src/extension.ts'), generator.destinationPath('src/extension.ts'), extensionConfig);63generator.fs.copy(generator.templatePath('src/test'), generator.destinationPath('src/test'));64generator.fs.copy(generator.templatePath('.vscode-test.mjs'), generator.destinationPath('.vscode-test.mjs'));65generator.fs.copy(generator.templatePath('eslint.config.mjs'), generator.destinationPath('eslint.config.mjs'));6667if (extensionConfig.pkgManager === 'yarn') {68generator.fs.copyTpl(generator.templatePath('.yarnrc'), generator.destinationPath('.yarnrc'), extensionConfig);69} else if (extensionConfig.pkgManager === 'pnpm') {70generator.fs.copyTpl(generator.templatePath('.npmrc-pnpm'), generator.destinationPath('.npmrc'), extensionConfig);71}7273extensionConfig.installDependencies = true;74extensionConfig.proposedAPI = extensionConfig.insiders;75},7677/**78* @param {Generator} generator79* @param {ExtensionConfig} extensionConfig80*/81endMessage: (generator, extensionConfig) => {82if (extensionConfig.bundler === 'webpack') {83generator.log(chalk.yellow(`To run the extension you need to install the recommended extension 'amodio.tsl-problem-matcher'.`));84generator.log('');85} else if (extensionConfig.bundler === 'esbuild') {86generator.log(chalk.yellow(`To run the extension you need to install the recommended extension 'connor4312.esbuild-problem-matchers'.`));87generator.log('');88}89}90}919293