umbot
Version:
Мультиплатформенный фреймворк для создания голосовых навыков и чат-ботов с единой бизнес-логикой. Встроенная поддержка ВКонтакте, Telegram, Viber, MAX, Яндекс Алисы, Маруси и Сбера SmartApp. Архитектура на адаптерах позволяет подключать любые другие платф
140 lines (126 loc) • 5.39 kB
JavaScript
;
const CreateController = require(__dirname + '/CreateController.js').create;
const utils = require(__dirname + '/../utils.js').utils;
const VERSION = '3.0.0';
function getFlags(argv) {
const flags = [];
argv.forEach((arg) => {
if (arg.startsWith('--')) {
flags.push(arg);
}
});
return flags;
}
function generateEnv() {
utils.fwrite(
'.env',
`TELEGRAM_TOKEN=your-telegram-token
VK_TOKEN=your-vk-token
VK_CONFIRMATION_TOKEN=your-vk-confirmation-token
VIBER_TOKEN=your-viber-token
YANDEX_TOKEN=your-alisa-token
MARUSIA_TOKEN=your-marusia-token
MAX_TOKEN=your-max-token
DB_HOST=localhost
DB_USER=user
DB_PASSWORD=password
DB_NAME=bot_db`,
);
console.log('.env файл успешно создан');
}
/**
* Консольный скрипт, позволяющий создать пустой проект.
* @param param
* @param argv
*/
function main(
param = { appName: null, command: null, mode: 'prod', hostname: '0.0.0.0', port: 3000 },
argv,
) {
const infoText =
'Доступные параметры:\n' +
'\n - create <project-name> [--minimal] [--prod] - Создать новый голосовой навык/чат-бот. В качестве параметра передается название проекта(На Английском языке) или json файл с параметрами.' +
'\n\t --minimal Создать минимальную рабочую версию (1 файл). Работает только для стандартного шаблона.' +
'\n\t --prod Создать production-готовый проект (Docker, CI/CD)' +
'\n - generateEnv - Сгенерировать файл .env' +
'\n - add <feature> - Добавляет данные в проект. Доступные типы: ' +
'\n\t docker Добавляет docker-compose.yml' +
'\n\t deploy Добавляет файл для деплоя на сервер' +
'\n\t env Добавляет файл .env';
if (param && param.command) {
const create = new CreateController();
switch (param.command) {
case 'create':
create.flags = getFlags(argv);
create.params = param.params ?? param;
let type = CreateController.T_DEFAULT;
if (param.params && param.params.type) {
let paramType = param.params.type.toLowerCase();
paramType = paramType.substring(0, 1).toUpperCase() + paramType.substring(1);
if ([CreateController.T_DEFAULT, CreateController.T_QUIZ].includes(paramType)) {
type = paramType;
} else {
throw new Error(
'Указан не поддерживаемый тип для создания шаблона приложения',
);
}
}
let envContent = '';
if (param.params?.isEnv) {
envContent = `TELEGRAM_TOKEN=${create.params?.params?.telegram_token}
VK_TOKEN=${create.params?.params?.vk_token}
VK_CONFIRMATION_TOKEN=${create.params?.params?.vk_confirmation_token}
VIBER_TOKEN=${create.params?.params?.viber_token}
YANDEX_TOKEN=${create.params?.params?.yandex_token}
MARUSIA_TOKEN=${create.params?.params?.marusia_token}
MAX_TOKEN=${create.params?.params?.max_token}
DB_HOST=${create.params?.config?.db?.host}
DB_USER=${create.params?.config?.db?.user}
DB_PASSWORD=${create.params?.config?.db?.pass}
DB_NAME=${create.params?.config?.db?.database}`;
delete create.params?.config?.db;
delete create.params?.params?.telegram_token;
delete create.params?.params?.vk_token;
delete create.params?.params?.vk_confirmation_token;
delete create.params?.params?.viber_token;
delete create.params?.params?.yandex_token;
delete create.params?.params?.marusia_token;
delete create.params?.params?.max_token;
}
create.init(param.appName, type);
if (envContent) {
create.generateFile('.env', envContent);
}
create.format();
break;
case '-v':
case 'version':
console.log(`version: ${VERSION}\n`);
break;
case 'generateenv':
generateEnv();
break;
case 'add':
switch (argv[3]) {
case 'docker':
create.createDockerFile(__dirname);
break;
case 'deploy':
create.createDeployFile(__dirname);
break;
case 'env':
generateEnv();
break;
default:
console.log(infoText);
}
break;
default:
console.log(infoText);
break;
}
} else {
console.log(infoText);
}
}
exports.main = main;