UNPKG

generator-code

Version:

Yeoman generator for Visual Studio Code Extensions

118 lines (108 loc) 3.45 kB
/*--------------------------------------------------------- * Copyright (C) Microsoft Corporation. All rights reserved. *--------------------------------------------------------*/ let validator = require('./validator'); /** * @param {import('yeoman-generator')} generator * @param {Object} extensionConfig */ exports.askForExtensionDisplayName = (generator, extensionConfig) => { let extensionDisplayName = generator.options['extensionDisplayName']; if (extensionDisplayName) { extensionConfig.displayName = extensionDisplayName; return Promise.resolve(); } return generator.prompt({ type: 'input', name: 'displayName', message: 'What\'s the name of your extension?', default: extensionConfig.displayName }).then(displayNameAnswer => { extensionConfig.displayName = displayNameAnswer.displayName; }); } /** * Ask for extension id ("name" in package.json) * @param {import('yeoman-generator')} generator * @param {Object} extensionConfig */ exports.askForExtensionId = (generator, extensionConfig) => { let extensionName = generator.options['extensionName']; if (extensionName) { extensionConfig.name = extensionName; return Promise.resolve(); } let def = extensionConfig.name; if (!def && extensionConfig.displayName) { def = extensionConfig.displayName.toLowerCase().replace(/[^a-z0-9]/g, '-'); } if (!def) { def = ''; } return generator.prompt({ type: 'input', name: 'name', message: 'What\'s the identifier of your extension?', default: def, validate: validator.validateExtensionId }).then(nameAnswer => { extensionConfig.name = nameAnswer.name; }); } /** * Ask for extension description * @param {import('yeoman-generator')} generator * @param {Object} extensionConfig */ exports.askForExtensionDescription = (generator, extensionConfig) => { let extensionDescription = generator.options['extensionDescription']; if (extensionDescription) { extensionConfig.description = extensionDescription; return Promise.resolve(); } return generator.prompt({ type: 'input', name: 'description', message: 'What\'s the description of your extension?' }).then(descriptionAnswer => { extensionConfig.description = descriptionAnswer.description; }); } /** * @param {import('yeoman-generator')} generator * @param {Object} extensionConfig */ exports.askForGit = (generator, extensionConfig) => { return generator.prompt({ type: 'confirm', name: 'gitInit', message: 'Initialize a git repository?', default: true }).then(gitAnswer => { extensionConfig.gitInit = gitAnswer.gitInit; }); } /** * @param {import('yeoman-generator')} generator * @param {Object} extensionConfig */ exports.askForPackageManager = (generator, extensionConfig) => { extensionConfig.pkgManager = 'npm'; return generator.prompt({ type: 'list', name: 'pkgManager', message: 'Which package manager to use?', choices: [ { name: 'npm', value: 'npm' }, { name: 'yarn', value: 'yarn' } ] }).then(pckgManagerAnswer => { extensionConfig.pkgManager = pckgManagerAnswer.pkgManager; }); }