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