UNPKG

@gabrielvgx/tecfoodcli

Version:

Projeto para automatizar criação de ambientes TecFood

140 lines (117 loc) 3.25 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _prompts = _interopRequireDefault(require("prompts")); var _gitlab = _interopRequireDefault(require("../../util/gitlab.js")); var _ssh = _interopRequireDefault(require("../../util/ssh.js")); var _app = _interopRequireDefault(require("../../util/app.js")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const ssh = { name: 'SSH', async handleSshKeys() { let sshList = await _gitlab.default.listSSH(); if (Array.isArray(sshList) && sshList.length) { let choices = sshList.map(sshInfo => ({ title: sshInfo.title, value: sshInfo.id })); const STYLE = '\n\t'; const hint = STYLE.concat(choices.map(({ title }) => title).join(STYLE)); const { operation, title, keyToDelete } = await (0, _prompts.default)([{ type: 'select', name: "operation", message: "SSH", hint, choices: [{ title: "Adicionar", value: "ADD" }, { title: "Excluir", value: "DELETE" }, { title: "Atualizar", value: "RELOAD" }, { title: "Voltar", value: "BACK" }], initial: 0 }, { type: prev => prev === 'ADD' ? 'text' : null, name: 'title', message: "Título: ", initial: `GENERATED_BY_CLI_${new Date().getTime()}` }, { type: prev => prev === 'DELETE' ? 'select' : null, name: "keyToDelete", message: "SSH a ser deletada: ", choices }]); switch (operation) { case "ADD": if (title) { let sshText = await _ssh.default.createSSH(_gitlab.default.email); sshText = sshText.substring(sshText.indexOf('ssh')).replace('\n', ''); await _gitlab.default.createSSH(title, sshText); } break; case "DELETE": if (keyToDelete) { await _gitlab.default.deleteSSH(keyToDelete); } break; case "RELOAD": return this.handleSshKeys(); default: return null; } return this.handleSshKeys(); } }, async execute() { const userConfig = _app.default.loadAppConfig('auth.json'); const { host, email, token } = await (0, _prompts.default)([{ type: 'text', name: 'host', message: 'Host (Repositorio Remoto)', initial: userConfig.host }, { type: 'text', name: 'email', message: 'Email: ', initial: userConfig.email }, { type: 'text', name: "token", message: "Token (GitLab): ", initial: userConfig.token }]); let response = []; if (host && email && token) { _gitlab.default.host = host; _gitlab.default.token = token; _gitlab.default.email = email; _app.default.updateAppConfig('auth.json', { host, token, email }); await this.handleSshKeys(); } return response; } }; var _default = ssh; exports.default = _default;