UNPKG

totvs-dtsenv-cli

Version:

TOTVS Datasul Environment Command Line

134 lines (102 loc) 4.64 kB
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.') } }