management-repository-viewer
Version:
CLI para visualizar y gestionar múltiples repositorios Git desde la terminal.
375 lines (374 loc) • 12.1 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.addRepo = addRepo;
exports.configFiltro = configFiltro;
exports.configFiltroCodigo = configFiltroCodigo;
exports.configFiltroTag = configFiltroTag;
exports.configFiltroAlias = configFiltroAlias;
exports.selecccionarOpcionesAbrir = selecccionarOpcionesAbrir;
exports.selecccionarOpcionesParaFiltrar = selecccionarOpcionesParaFiltrar;
exports.selecccionarMultipleProyectoAlias = selecccionarMultipleProyectoAlias;
exports.selecccionarOpcionAgregarQuitar = selecccionarOpcionAgregarQuitar;
exports.ingreseTag = ingreseTag;
const inquirer_1 = __importDefault(require("inquirer"));
const archivo_1 = require("./archivo");
const chalk_1 = __importDefault(require("chalk"));
async function addRepo() {
try {
const { alias, repoPath, jerarquia, codigo } = await inquirer_1.default.prompt([
{
type: "input",
name: "alias",
message: "Ingrese Alias (pk):",
},
{
type: "input",
name: "repoPath",
message: "Ingrese Path (Unique):",
},
{
type: "input",
name: "jerarquia",
message: "Ingrese Jerarquia:",
},
{
type: "input",
name: "codigo",
message: "Ingrese Código:",
},
]);
const tags = [];
while (true) {
const { tag } = await inquirer_1.default.prompt([
{
type: "input",
name: "tag",
message: "Ingrese tag (deje vacío para terminar):",
},
]);
if (!tag)
break;
tags.push(tag);
}
return {
path: repoPath,
alias,
tag: tags,
jerarquia,
codigo,
};
}
catch (error) {
if (error.isTtyError) {
console.log(chalk_1.default.red("❌ La terminal no soporta prompts interactivos."));
}
else if (error.message?.includes("User force closed")) {
console.log(chalk_1.default.yellow("\n🛑 Operación cancelada por el usuario."));
}
else {
console.error(chalk_1.default.red("Ocurrió un error inesperado:"), error);
}
process.exit(1);
}
}
async function configFiltro() {
try {
const { alias, jerarquia, codigo } = await inquirer_1.default.prompt([
{
type: "input",
name: "alias",
message: "Ingrese Alias (pk):",
},
{
type: "input",
name: "jerarquia",
message: "Ingrese Jerarquia:",
},
{
type: "input",
name: "codigo",
message: "Ingrese Código:",
},
]);
const tags = [];
while (true) {
const { tag } = await inquirer_1.default.prompt([
{
type: "input",
name: "tag",
message: "Ingrese tag (deje vacío para terminar):",
},
]);
if (!tag)
break;
tags.push(tag);
}
return {
path: "",
alias,
tag: tags,
jerarquia,
codigo,
};
}
catch (error) {
if (error.isTtyError) {
console.log(chalk_1.default.red("❌ La terminal no soporta prompts interactivos."));
}
else if (error.message?.includes("User force closed")) {
console.log(chalk_1.default.yellow("\n🛑 Operación cancelada por el usuario."));
}
else {
console.error(chalk_1.default.red("Ocurrió un error inesperado:"), error);
}
process.exit(1);
}
}
async function configFiltroCodigo() {
const listaRepos = await (0, archivo_1.obtenerReposConfiguracion)({
alias: "",
jerarquia: "",
codigo: "",
tag: [],
path: "",
});
const listaCodigos = new Set(listaRepos.filter((repo) => repo.codigo).map(repo => repo.codigo));
// if (listaCodigos.size === 0) {
// console.log('No hay códigos disponibles.');
// return;
// }
try {
const { codigo } = await inquirer_1.default.prompt([
{
type: "list",
name: "codigo",
message: "Seleccione Código:",
choices: Array.from(listaCodigos),
},
]);
return {
path: "",
alias: "",
tag: [],
jerarquia: "",
codigo,
};
}
catch (error) {
if (error.isTtyError) {
console.log(chalk_1.default.red("❌ La terminal no soporta prompts interactivos."));
}
else if (error.message?.includes("User force closed")) {
console.log(chalk_1.default.yellow("\n🛑 Operación cancelada por el usuario."));
}
else {
console.error(chalk_1.default.red("Ocurrió un error inesperado:"), error);
}
process.exit(1);
}
}
async function configFiltroTag() {
const listaRepos = await (0, archivo_1.obtenerReposConfiguracion)({
alias: "",
jerarquia: "",
codigo: "",
tag: [],
path: "",
});
const listaTags = new Set(listaRepos.flatMap((x) => x.tag).filter((x) => x));
try {
const { tag } = await inquirer_1.default.prompt([
{
type: "list",
name: "tag",
message: "Seleccione Tag:",
choices: Array.from(listaTags).sort((x, y) => x.localeCompare(y)),
},
]);
return {
path: "",
alias: "",
tag: [tag],
jerarquia: "",
codigo: "",
};
}
catch (error) {
if (error.isTtyError) {
console.log(chalk_1.default.red("❌ La terminal no soporta prompts interactivos."));
}
else if (error.message?.includes("User force closed")) {
console.log(chalk_1.default.yellow("\n🛑 Operación cancelada por el usuario."));
}
else {
console.error(chalk_1.default.red("Ocurrió un error inesperado:"), error);
}
process.exit(1);
}
}
async function configFiltroAlias() {
const listaRepos = await (0, archivo_1.obtenerReposConfiguracion)({
alias: "",
jerarquia: "",
codigo: "",
tag: [],
path: "",
});
const listaAlias = new Set(listaRepos.map((x) => x.alias));
try {
const { alias } = await inquirer_1.default.prompt([
{
type: "list",
name: "alias",
message: "Seleccione Alias:",
choices: Array.from(listaAlias).sort((x, y) => x.localeCompare(y)),
},
]);
return {
path: "",
alias: alias,
tag: [],
jerarquia: "",
codigo: "",
};
}
catch (error) {
if (error.isTtyError) {
console.log(chalk_1.default.red("❌ La terminal no soporta prompts interactivos."));
}
else if (error.message?.includes("User force closed")) {
console.log(chalk_1.default.yellow("\n🛑 Operación cancelada por el usuario."));
}
else {
console.error(chalk_1.default.red("Ocurrió un error inesperado:"), error);
}
process.exit(1);
}
}
async function selecccionarOpcionesAbrir() {
try {
const { opcion } = await inquirer_1.default.prompt([
{
type: "list",
name: "opcion",
message: "Seleccione Alias:",
choices: ["explorer", "code"],
},
]);
return opcion;
}
catch (error) {
if (error.isTtyError) {
console.log(chalk_1.default.red("❌ La terminal no soporta prompts interactivos."));
}
else if (error.message?.includes("User force closed")) {
console.log(chalk_1.default.yellow("\n🛑 Operación cancelada por el usuario."));
}
else {
console.error(chalk_1.default.red("Ocurrió un error inesperado:"), error);
}
process.exit(1);
}
}
async function selecccionarOpcionesParaFiltrar() {
try {
const { opcion } = await inquirer_1.default.prompt([
{
type: "list",
name: "opcion",
message: "Seleccione opción para filtrar:",
choices: ["Tag", "Codigo", "Sin Filtro"],
},
]);
return opcion;
}
catch (error) {
if (error.isTtyError) {
console.log(chalk_1.default.red("❌ La terminal no soporta prompts interactivos."));
}
else if (error.message?.includes("User force closed")) {
console.log(chalk_1.default.yellow("\n🛑 Operación cancelada por el usuario."));
}
else {
console.error(chalk_1.default.red("Ocurrió un error inesperado:"), error);
}
process.exit(1);
}
}
async function selecccionarMultipleProyectoAlias(listaproyectos) {
try {
const listaSeleccionados = await inquirer_1.default.prompt([
{
type: "checkbox",
name: "opcion",
message: "Selecciona los proyectos: ",
choices: listaproyectos.map(x => ({ name: x.alias, value: x.alias })).sort((x, y) => x.name.localeCompare(y.name)),
},
]);
return listaSeleccionados.opcion;
}
catch (error) {
if (error.isTtyError) {
console.log(chalk_1.default.red("❌ La terminal no soporta prompts interactivos."));
}
else if (error.message?.includes("User force closed")) {
console.log(chalk_1.default.yellow("\n🛑 Operación cancelada por el usuario."));
}
else {
console.error(chalk_1.default.red("Ocurrió un error inesperado:"), error);
}
process.exit(1);
}
}
async function selecccionarOpcionAgregarQuitar() {
try {
const { opcion } = await inquirer_1.default.prompt([
{
type: "list",
name: "opcion",
message: "Que quieres hacer ?:",
choices: ["Agregar", "Quitar"],
},
]);
return opcion;
}
catch (error) {
if (error.isTtyError) {
console.log(chalk_1.default.red("❌ La terminal no soporta prompts interactivos."));
}
else if (error.message?.includes("User force closed")) {
console.log(chalk_1.default.yellow("\n🛑 Operación cancelada por el usuario."));
}
else {
console.error(chalk_1.default.red("Ocurrió un error inesperado:"), error);
}
process.exit(1);
}
}
async function ingreseTag() {
try {
const { tag } = await inquirer_1.default.prompt([
{
type: "input",
name: "tag",
message: "Ingrese tag:",
},
]);
return tag;
}
catch (error) {
if (error.isTtyError) {
console.log(chalk_1.default.red("❌ La terminal no soporta prompts interactivos."));
}
else if (error.message?.includes("User force closed")) {
console.log(chalk_1.default.yellow("\n🛑 Operación cancelada por el usuario."));
}
else {
console.error(chalk_1.default.red("Ocurrió un error inesperado:"), error);
}
process.exit(1);
}
}