UNPKG

totvs-dtsenv-cli

Version:

TOTVS Datasul Environment Command Line

120 lines (119 loc) 6.12 kB
"use strict"; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; result["default"] = mod; return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const fs = __importStar(require("fs")); const CommandUtils_1 = __importDefault(require("../utils/CommandUtils")); //import * as hostile from "hostile"; var hostile = require('hostile'); const dockerComposeDatasul = __importStar(require("./resources/docker-compose-datasul.yml")); const envDatasul = __importStar(require("./resources/env-file")); const propriedFile = __importStar(require("./resources/propried.emsfnd.p")); class AddCommand { constructor(commander) { this.commander = commander; commander.command('add') .description('Adiciona um novo ambiente Datasul.') .action(AddCommand.actionCommand); } static actionCommand(project) { if (typeof project !== 'string') { console.log("Nome do projeto não informado!"); return; } console.log("Criando um novo ambiente..."); /** Cria diretório datasul se não existir */ if (!fs.existsSync("datasul")) { fs.mkdirSync("datasul"); } let folderProject = "datasul\\" + project; let scriptProject = "datasul\\scripts"; let cmd = ''; /** Cria diretório do novo ambiente */ if (!fs.existsSync(folderProject)) { fs.mkdirSync(folderProject); } /** Cria pasta de scripts se não existir */ if (!fs.existsSync(scriptProject)) { let cmd = CommandUtils_1.default.execCommandSync('Xcopy', ['/S', '/I', '/E', '/Y', '/Q', '\\\\jv-fwk-dev02\\docker\\projects\\datasul\\scripts', scriptProject + "\\"]); if (cmd.indexOf("112", 0) >= 0) { console.log("Pasta de Scripts copiada com sucesso!"); } } /* Cria diretórios do ambiente */ if (!fs.existsSync(folderProject + "\\database")) { fs.mkdirSync(folderProject + "\\database"); } if (!fs.existsSync(folderProject + "\\database\\pre-exec")) { fs.mkdirSync(folderProject + "\\database\\pre-exec"); } if (!fs.existsSync(folderProject + "\\progress")) { fs.mkdirSync(folderProject + "\\progress"); } if (!fs.existsSync(folderProject + "\\temp")) { fs.mkdirSync(folderProject + "\\temp"); } if (!fs.existsSync(folderProject + "\\temp\\appserver")) { fs.mkdirSync(folderProject + "\\temp\\appserver"); } if (!fs.existsSync(folderProject + "\\temp\\tomcat")) { fs.mkdirSync(folderProject + "\\temp\\tomcat"); } /** Copia arquivos de configuração */ cmd = CommandUtils_1.default.execCommandSync('robocopy', ['\\\\jv-fwk-dev02\\docker\\projects\\datasul\\Teste-Datasul-12.1.20\\', process.cwd() + "\\" + folderProject + "\\", 'context.xml']); if (cmd.indexOf("Finalizado em", 0) >= 0) { console.log("Arquivos de configuração copiados com sucesso! (context)"); } cmd = CommandUtils_1.default.execCommandSync('robocopy', ['\\\\jv-fwk-dev02\\docker\\projects\\datasul\\Teste-Datasul-12.1.20\\', process.cwd() + "\\" + folderProject + "\\", '*datasul*']); if (cmd.indexOf("Finalizado em", 0) >= 0) { console.log("Arquivos de configuração copiados com sucesso! (datasul)"); } /** Cria docker-compose do ambiente */ fs.writeFileSync(process.cwd() + "/" + folderProject + '/docker-compose.yml', dockerComposeDatasul.value); /** Cria .env do ambiente */ fs.writeFileSync(process.cwd() + "/" + folderProject + '/.env', envDatasul.value.replace('&ProjectName', project)); /** Cria .p de PRE_EXEC */ let valuePropriedFile = propriedFile.value; valuePropriedFile = valuePropriedFile.replace('&iniDIFile', process.cwd() + "\\" + folderProject + "\\datasul-progress.ini"); valuePropriedFile = valuePropriedFile.replace('&pDIFile', process.cwd() + "\\" + folderProject + "\\datasul-alias-di.p"); valuePropriedFile = valuePropriedFile.replace('&pfDIFile', process.cwd() + "\\" + folderProject + "\\datasul-connect.pf"); valuePropriedFile = valuePropriedFile.replace(/\\/g, '\\\\'); fs.writeFileSync(process.cwd() + "/" + folderProject + '/database/pre-exec/propried.emsfnd.p', valuePropriedFile); console.log("Arquivos de configuração criados com sucesso! (.env e docker-compose)"); /** Cria as entradas no host do Windows */ hostile.set('192.168.99.100', 'database', function (err) { if (err) { console.error(err); } else { console.log('Adicionado database ao /host.'); hostile.set('192.168.99.100', 'appserver', function (err) { if (err) { console.error(err); } else { console.log('Adicionado appserver ao /host.'); hostile.set('192.168.99.100', 'webserver', function (err) { if (err) { console.error(err); } else { console.log('Adicionado webserver ao /host.'); } }); } }); } }); console.log('Ambiente criado com sucesso! Efetue um "dts up" dentro da pasta do projeto.'); } } exports.default = AddCommand;