UNPKG

generator-msbf-watson-coco

Version:

A yeoman generator for creating bots built with Bot Framework v4, for Watson and CoCo

128 lines (110 loc) 4.14 kB
// @ts-nocheck // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. const _ = require("lodash"); const mkdirp = require("mkdirp"); const path = require("path"); const { commonFilesWriter } = require("./commonFilesWriter"); // generators/app/templates folder name const GENERATOR_TEMPLATE_NAME = "echo"; const LANG_TS = "typescript"; /** * Write the files that are specific to the echo bot template * * @param {Generator} gen Yeoman's generator object * @param {String} templatePath file path to write the generated code */ const writeEchoTemplateFiles = (generator, templatePath) => { const DEPLOYMENT_SCRIPTS = 0; const DEPLOYMENT_MSBOT = 1; const TS_SRC_FOLDER = "src"; const folders = ["deploymentScripts"]; const extension = _.toLower(generator.templateConfig.language) === "javascript" ? "js" : "ts"; const srcFolder = _.toLower(generator.templateConfig.language) === "javascript" ? "" : TS_SRC_FOLDER; // create the echo bot folder structure common to both languages if (_.toLower(generator.templateConfig.language) === LANG_TS) { for (let cnt = 0; cnt < folders.length; ++cnt) { mkdirp.sync(folders[cnt]); } } // create a src directory if we are generating TypeScript if (_.toLower(generator.templateConfig.language) === LANG_TS) { mkdirp.sync(TS_SRC_FOLDER); } // create a responders directory if we are generating TypeScript if (_.toLower(generator.templateConfig.language) === LANG_TS) { mkdirp.sync(TS_SRC_FOLDER + "/responders"); } let sourcePath = path.join(templatePath, folders[DEPLOYMENT_SCRIPTS]); let destinationPath = path.join( generator.destinationPath(), folders[DEPLOYMENT_SCRIPTS] ); // if we're writing out TypeScript, then we need to add a webConfigPrep.js if (_.toLower(generator.templateConfig.language) === LANG_TS) { generator.fs.copy( path.join(sourcePath, "webConfigPrep.js"), path.join(destinationPath, "webConfigPrep.js") ); } // write out the index.js and bot.js destinationPath = path.join(generator.destinationPath(), srcFolder); // gen the main index file generator.fs.copyTpl( generator.templatePath(path.join(templatePath, `index.${extension}`)), path.join(destinationPath, `index.${extension}`), { botname: generator.templateConfig.botname } ); // gen the main bot activity router generator.fs.copy( generator.templatePath(path.join(templatePath, `bot.${extension}`)), path.join(destinationPath, `bot.${extension}`) ); // gen the main bot activity router generator.fs.copy( generator.templatePath(path.join(templatePath, `bot.${extension}`)), path.join(destinationPath, `bot.${extension}`) ); const respondersFromPath = templatePath + "/responders"; const respondersToPath = destinationPath + "/responders"; generator.fs.copy( generator.templatePath( path.join(respondersFromPath, `initCocoResponder.${extension}`) ), path.join(respondersToPath, `initCocoResponder.${extension}`) ); generator.fs.copy( generator.templatePath( path.join(respondersFromPath, `initWatsonResponder.${extension}`) ), path.join(respondersToPath, `initWatsonResponder.${extension}`) ); generator.fs.copy( generator.templatePath( path.join(respondersFromPath, `initDefaultResponder.${extension}`) ), path.join(respondersToPath, `initDefaultResponder.${extension}`) ); }; /** * Write project files for Echo template * * @param {Generator} generator Yeoman's generator object */ module.exports.echoTemplateWriter = generator => { // build the path to the echo template source folder const templatePath = path.join( generator.templatePath(), GENERATOR_TEMPLATE_NAME ); // write files common to all our template options commonFilesWriter(generator, templatePath); // write files specific to the echo bot template writeEchoTemplateFiles(generator, templatePath); };