UNPKG

@gabrielvgx/tecfoodcli

Version:

Projeto para automatizar criação de ambientes TecFood

117 lines (95 loc) 3.46 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.registerCredentials = exports.default = void 0; var _rxjs = require("rxjs"); var _listr = _interopRequireDefault(require("listr")); var _path = _interopRequireDefault(require("path")); var _async = _interopRequireDefault(require("async")); var _app = _interopRequireDefault(require("./app.js")); var _terminal = _interopRequireDefault(require("./terminal.js")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const docker = { getRegistryByImage(imageStr) { if (!imageStr || typeof imageStr !== 'string') imageStr = ''; let { groups: { registry = '' } } = imageStr.match(/(?<registry>[\w\-\.]+)/i) || { groups: {} }; return registry; }, async registerCredentials(USER, PASSWORD, REGISTRY = "", pathSaveCredential = null) { const PATH_SAVE_CREDENTIAL = pathSaveCredential || _app.default.getPathConfigFolderDocker(); const ARGS = `"${REGISTRY}" "${USER}" "${PASSWORD}" "${PATH_SAVE_CREDENTIAL}"`; let error = null; await _terminal.default.execute(`docker_create_credential.sh`, ARGS, true).catch(err => { if (typeof err === 'string' && err.includes("Unauthorized")) { error = "401_UNAUTHORIZED"; } }); return error ?? true; }, async getOfficialRegistry() { return _terminal.default.execute(`docker info --format '{{json .}}'`).then(response => { return JSON.parse(response).IndexServerAddress; }); }, getDockerConfig() { const ROOT_PATH = _app.default.getAppRootPath(); const COMPOSE_FILE_PATH = _path.default.join(ROOT_PATH, 'src', 'docker'); return { COMPOSE_FILE_PATH }; }, async runServices(services) { const { COMPOSE_FILE_PATH } = this.getDockerConfig(); let env = _app.default.getEnv(); const tasks = new _listr.default([{ title: 'Pull Images', task: () => { return new _rxjs.Observable(observer => { let selectedServices = Object.keys(env.services).filter(serv => services.includes(serv)); _async.default.eachSeries(selectedServices, function (serviceName, callback) { const SERVICE_NAME = serviceName.toLowerCase(); const IMAGE = env.services[SERVICE_NAME].image; observer.next(IMAGE); _terminal.default.execute(`docker_pull.sh`, IMAGE, true).finally(() => { callback(); }); }).then(_ => { observer.complete(); }); }); } }, { title: '(Re)Creating containers', task: () => { return new _rxjs.Observable(observer => { _async.default.eachSeries(services, function (serviceName, callback) { const SERVICE_NAME = serviceName.toLowerCase(); const ARGS = `"${COMPOSE_FILE_PATH}" "${SERVICE_NAME}"`; observer.next(env.services[SERVICE_NAME].container_name); _terminal.default.execute(`docker_up_service.sh`, ARGS, true).catch(error => { console.log(error); }).finally(() => { callback(); }); }).then(_ => observer.complete()); }); } }]); return tasks.run(); } }; const { registerCredentials } = docker; exports.registerCredentials = registerCredentials; var _default = docker; exports.default = _default;