@gabrielvgx/tecfoodcli
Version:
Projeto para automatizar criação de ambientes TecFood
117 lines (95 loc) • 3.46 kB
JavaScript
;
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;