totvs-dtsenv-cli
Version:
TOTVS Datasul Environment Command Line
120 lines (119 loc) • 6.12 kB
JavaScript
;
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;