msbot
Version:
MSBot command line tool for manipulating Microsoft Bot Framework .bot files
107 lines • 4.53 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Copyright(c) Microsoft Corporation.All rights reserved.
* Licensed under the MIT License.
*/
// tslint:disable:no-console
// tslint:disable:no-object-literal-type-assertion
const botframework_config_1 = require("botframework-config");
const chalk = require("chalk");
const program = require("commander");
const fs = require("fs-extra");
const stdioAsync_1 = require("./stdioAsync");
const utils_1 = require("./utils");
program.Command.prototype.unknownOption = (flag) => {
console.error(chalk.default.redBright(`Unknown arguments: ${flag}`));
showErrorHelp();
};
program
.name('msbot update blob')
.description('update the bot to Azure Blob Storage Service (--id or --serviceName is required)')
.option('--id <id>', 'service id')
.option('-n, --name <name>', 'friendly name (defaults to serviceName)')
.option('-t, --tenantId <tenantId>', 'Azure Tenant id (either GUID or xxx.onmicrosoft.com)')
.option('-s, --subscriptionId <subscriptionId>', 'Azure Subscription Id')
.option('-r, --resourceGroup <resourceGroup>', 'Azure resource group name')
.option('--serviceName <serviceName>', 'Azure service name')
.option('--connectionString <connectionString>', 'Blob storage connection string')
.option('-c, --container <container>', 'blob container name')
.option('-b, --bot <path>', 'path to bot file. If omitted, local folder will look for a .bot file')
.option('--input <jsonfile>', 'path to arguments in JSON format { id:\'\',name:\'\', ... }')
.option('--secret <secret>', 'bot file secret password for encrypting service secrets')
.option('--stdin', 'arguments are passed in as JSON object via stdin')
.option('--prefix', 'Append [msbot] prefix to all messages')
.action((cmd, actions) => undefined);
const command = program.parse(process.argv);
const args = {};
Object.assign(args, command);
if (args.stdin) {
//force verbosity output if args are passed via stdin
process.env.PREFIX = 'prefix';
}
if (process.argv.length < 3) {
program.help();
}
else {
if (!args.bot) {
botframework_config_1.BotConfiguration.loadBotFromFolder(process.cwd(), args.secret)
.then(processUpdateArgs)
.catch((reason) => {
console.error(chalk.default.redBright(reason.toString().split('\n')[0]));
showErrorHelp();
});
}
else {
botframework_config_1.BotConfiguration.load(args.bot, args.secret)
.then(processUpdateArgs)
.catch((reason) => {
console.error(chalk.default.redBright(reason.toString().split('\n')[0]));
showErrorHelp();
});
}
}
async function processUpdateArgs(config) {
if (args.stdin) {
Object.assign(args, JSON.parse(await utils_1.getStdin()));
}
else if (args.input != null) {
Object.assign(args, await fs.readJSON(args.input));
}
if (!args.id && !args.serviceName) {
throw new Error('requires --id or --serviceName');
}
for (const service of config.services) {
if (service.type === botframework_config_1.ServiceTypes.BlobStorage) {
const blobService = service;
if (blobService.id === args.id || blobService.serviceName === args.serviceName) {
if (args.hasOwnProperty('name'))
blobService.name = args.name;
if (args.tenantId)
blobService.tenantId = args.tenantId;
if (args.subscriptionId)
blobService.subscriptionId = args.subscriptionId;
if (args.resourceGroup)
blobService.resourceGroup = args.resourceGroup;
if (args.serviceName)
blobService.serviceName = args.serviceName;
if (args.container)
blobService.container = args.container;
if (args.connectionString)
blobService.connectionString = args.connectionString;
await config.save(args.secret);
await stdioAsync_1.stdoutAsync(JSON.stringify(blobService, null, 2));
return config;
}
}
}
throw new Error(`Blob service ${args.serviceName} was not found in the bot file`);
}
function showErrorHelp() {
program.outputHelp((str) => {
console.error(str);
return '';
});
process.exit(1);
}
//# sourceMappingURL=msbot-update-blob.js.map