UNPKG

totvs-dtsenv-cli

Version:

TOTVS Datasul Environment Command Line

139 lines (108 loc) 5.83 kB
import * as fs from "fs"; import * as child_process from 'child_process'; import * as dockerComposeSetup from './resources/docker-compose-setup.yml'; import CommandUtils from "../utils/CommandUtils"; import ProgressBarUtils from "../utils/ProgressBarUtils"; export default class SetupCommand { constructor(private commander: any) { commander.command('setup') .description('Configura as informações mínimas para funcionamento dos ambientes.') .action(SetupCommand.actionCommand) } static actionCommand() { console.log("********************************************"); console.log("* SETUP DE AMBIENTE DO DOCKER LOCAL *"); console.log("********************************************"); console.log("\n"); console.log(" ## ."); console.log(" ## ## ## =="); console.log(" ## ## ## ## ## ==="); console.log(" /''''''''''''''\___/ ==="); console.log(" ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~"); console.log(" \______ o __/"); console.log(" \ \ __/"); console.log(" \____\_______/"); console.log("\n"); console.log(" *** Verificando se a Docker já esta instalado ..."); console.log("\n"); /** Verifica se o Docker está instalado */ let cmd = CommandUtils.execCommandSync('docker-machine', ['version']) if (cmd.length > 0 && cmd.indexOf("version", 0) > 0) { console.log("Docker instalado!"); } else { console.log("Baixe e instale a Docker Toolbox do link abaixo e tente novamente:"); console.log("https://download.docker.com/win/stable/DockerToolbox.exe"); return } /** Criando nova máquina virtual "default" */ /** Parando máquina virtual "default" */ try { cmd = CommandUtils.execCommandSync('docker-machine', ['stop','default'], false) } catch(error) { if (error.indexOf("already stopped", 0) === 0) { console.log(error) return } } /** Removendo máquina virtual "default" */ try { cmd = CommandUtils.execCommandSync('docker-machine', ['rm','default','-y'], false) if (cmd.indexOf("Successfully removed default", 0) > 0) { console.log("Maquina virtual default removida com sucesso!") } } catch(error) { if (error.indexOf("does not exist", 0) === 0) { console.log(error) return } } console.log("Criando a nova maquina virtual... (esse processo poderá demorar alguns minutos).") const barProcess = new ProgressBarUtils(true); barProcess.start(); /** Cria a nova máquina virtual */ let execCreateDockerMachine = function(error:any, stdout:any, stderr:any) { barProcess.stop(); cmd = stdout.toString('utf8') if (cmd.indexOf("Docker is up and running!", 0) > 0) { console.log("Máquina virtual criada com sucesso.") } /** Verifica se o Docker está funcionando corretamente */ cmd = CommandUtils.execCommandSync('docker', ['ps','-a'], false) if (cmd.indexOf("CONTAINER ID", 0) > 0) { console.log("Docker funcional.") } /** Efetua o login no repositório */ cmd = CommandUtils.execCommandSync('docker', ['login','-u','admin','-p','totvs@123','jv-fwk-dev02:5000'], false) if (cmd.indexOf("Succeeded", 0) > 0) { console.log("Login efetuado com sucesso no Registry do servidor jv-fwk-dev02.") } /** Parando máquina virtual */ cmd = CommandUtils.execCommandSync('docker-machine', ['stop'], false) if (cmd.indexOf("was stopped", 0) > 0) { console.log("Maquina virtual parada para criação dos compartilhamentos.") } /** Criando compartilhamentos */ cmd = CommandUtils.execCommandSync(process.env.VBOX_MSI_INSTALL_PATH + '\\vboxmanage', ['sharedfolder','add','default','--name','home/rootfwk/ipiranga','--hostpath','\\\\ipiranga\\progress_repository','--automount'], false) cmd = CommandUtils.execCommandSync(process.env.VBOX_MSI_INSTALL_PATH + '\\vboxmanage', ['sharedfolder','add','default','--name','home/rootfwk/ibiza','--hostpath','\\\\ibiza\\Deltas','--automount'], false) cmd = CommandUtils.execCommandSync(process.env.VBOX_MSI_INSTALL_PATH + '\\vboxmanage', ['sharedfolder','add','default','--name','home/rootfwk/users','--hostpath','\\\\jv-fwk-dev02\\users','--automount'], false) cmd = CommandUtils.execCommandSync(process.env.VBOX_MSI_INSTALL_PATH + '\\vboxmanage', ['sharedfolder','add','default','--name','home/rootfwk/docker/projects','--hostpath',process.cwd(),'--automount'], false) console.log("Compartilhamentos criados com sucesso.") /** Iniciando máquina virtual */ cmd = CommandUtils.execCommandSync('docker-machine', ['start'], false) /** Cria docker-compose do setup */ fs.writeFileSync(process.cwd() + '/docker-compose.yml', dockerComposeSetup.value); console.log("Iniciando ambiente de gerenciamento.") /** Iniciando ambiente de gerenciamento */ cmd = CommandUtils.execCommandSync('docker-compose', ['up','-d'], false) /** Busca o endereço do IP Docker */ let ipDocker = CommandUtils.execCommandSync('docker-machine', ['ip','default'], false) console.log("Ambiente iniciado com sucesso no IP: " + ipDocker) console.log("Portainer: " + 'http://' + ipDocker.trim() + ':9000/#/init/admin') console.log("Docker Compose: " + 'http://' + ipDocker.trim() + ':9100') console.log('Setup finalizado com sucesso! Efetue um "dts add <Nome_Projeto>" para criar um novo projeto.') } CommandUtils.execCommand('docker-machine', ['create','-d','virtualbox','--virtualbox-disk-size','128000','--virtualbox-cpu-count','2','--virtualbox-memory','4096','--engine-insecure-registry','jv-fwk-dev02:5000','default'], execCreateDockerMachine) } }