totvs-dtsenv-cli
Version:
TOTVS Datasul Environment Command Line
134 lines (102 loc) • 4.64 kB
text/typescript
import * as fs from "fs";
import CommandUtils from "../utils/CommandUtils";
//import * as hostile from "hostile";
var hostile = require('hostile');
import * as dockerComposeDatasul from './resources/docker-compose-datasul.yml';
import * as envDatasul from './resources/env-file';
import * as propriedFile from './resources/propried.emsfnd.p';
export default class AddCommand {
constructor(private commander: any) {
commander.command('add')
.description('Adiciona um novo ambiente Datasul.')
.action(AddCommand.actionCommand)
}
static actionCommand(project:string) {
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.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.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.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: any) {
if (err) {
console.error(err)
} else {
console.log('Adicionado database ao /host.')
hostile.set('192.168.99.100', 'appserver', function (err: any) {
if (err) {
console.error(err)
} else {
console.log('Adicionado appserver ao /host.')
hostile.set('192.168.99.100', 'webserver', function (err: any) {
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.')
}
}