totvs-dtsenv-cli
Version:
TOTVS Datasul Environment Command Line
123 lines (122 loc) • 7.37 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 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;