UNPKG

totvs-dtsenv-cli

Version:

TOTVS Datasul Environment Command Line

123 lines (122 loc) 7.37 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 dockerComposeSetup = __importStar(require("./resources/docker-compose-setup.yml")); const CommandUtils_1 = __importDefault(require("../utils/CommandUtils")); const ProgressBarUtils_1 = __importDefault(require("../utils/ProgressBarUtils")); class SetupCommand { constructor(commander) { this.commander = commander; 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_1.default.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_1.default.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_1.default.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_1.default(true); barProcess.start(); /** Cria a nova máquina virtual */ let execCreateDockerMachine = function (error, stdout, stderr) { 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_1.default.execCommandSync('docker', ['ps', '-a'], false); if (cmd.indexOf("CONTAINER ID", 0) > 0) { console.log("Docker funcional."); } /** Efetua o login no repositório */ cmd = CommandUtils_1.default.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_1.default.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_1.default.execCommandSync(process.env.VBOX_MSI_INSTALL_PATH + '\\vboxmanage', ['sharedfolder', 'add', 'default', '--name', 'home/rootfwk/ipiranga', '--hostpath', '\\\\ipiranga\\progress_repository', '--automount'], false); cmd = CommandUtils_1.default.execCommandSync(process.env.VBOX_MSI_INSTALL_PATH + '\\vboxmanage', ['sharedfolder', 'add', 'default', '--name', 'home/rootfwk/ibiza', '--hostpath', '\\\\ibiza\\Deltas', '--automount'], false); cmd = CommandUtils_1.default.execCommandSync(process.env.VBOX_MSI_INSTALL_PATH + '\\vboxmanage', ['sharedfolder', 'add', 'default', '--name', 'home/rootfwk/users', '--hostpath', '\\\\jv-fwk-dev02\\users', '--automount'], false); cmd = CommandUtils_1.default.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_1.default.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_1.default.execCommandSync('docker-compose', ['up', '-d'], false); /** Busca o endereço do IP Docker */ let ipDocker = CommandUtils_1.default.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_1.default.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); } } exports.default = SetupCommand;